LoginSignup
4
1

More than 3 years have passed since last update.

あなたのLinuxインスタンスは大丈夫? AMIからのリストア時にcloud-initが初期化してしまう設定集

Posted at

この記事で紹介する内容

AWSでは、大抵のLinuxインスタンスに自動構成ツール「cloud-init」がインストールされています。
cloud-initの既定設定には、AMIの初回起動時に初期化を実行する項目があります。
既定設定をそのままにすると、通常利用時は問題ありませんが、リストア時にAMIから起動すると幾つかの項目が初期化されてしまいます。

この記事では、AMI起動時にユーザーデータが初期化する項目とそれを防ぐ方法を紹介します。

検証環境

  • リージョン:ap-northeast-1
  • AMI:RHEL-7.6_HVM-20190515-x86_64-0-Hourly2-GP2 - ami-04eb805483f5607a7
  • インスタンスタイプ:t2.micro

AMI起動時にユーザーデータが初期化する項目

  • ホスト名(ip-XX-XX-XX-XXというPrivate IPを元にしたホスト名に設定される)

  • デフォルトユーザー(ec2-userが作成される)

  • ロケール(en_US.UTF-8に設定される)

  • パッケージ(セキュリティアップデートが実行される)

初期化を防ぐ方法

以下のコマンドで初期化防止用の設定ファイルを作成するだけです。
(タイムゾーン設定は念のため加えてますが、RHEL 7.6では初期化されませんでした)

cat >> /etc/cloud/cloud.cfg.d/99_preservesetting.cfg << EOF
repo_update: true
repo_upgrade: none
preserve_hostname: true
locale: ja_JP.UTF-8
timezone: Asia/Tokyo

system_info:
  default_user:
    name: cloudinit-user
    lock_passwd: true
    gecos: Cloudinit User
    groups: [ adm, wheel, systemd-journal ]
    sudo: [ "ALL=(ALL) NOPASSWD:ALL" ]
    shell: /bin/bash
EOF
chmod 644 /etc/cloud/cloud.cfg.d/99_preservesetting.cfg
chown root:root /etc/cloud/cloud.cfg.d/99_preservesetting.cfg

解説

  • repo_update:ローカルにキャッシュされたリポジトリのメタデータを更新する(true)/更新しない(false)
  • repo_upgrade:(repo_upgrade_excludeの値を除く)全アップデートを適用する(all, on, true)/セキュリティアップデートを適用する(security)/アップデートを適用しない(none, off, false)
  • preserve_hostname:ホスト名を維持する(true)/維持しない(false)
  • locale:ロケール設定をする(ロケール)
  • timezone:タイムゾーンを設定する(タイムゾーン)
  • default_user:デフォルトユーザーを設定する(デフォルトユーザーの情報)

以上です。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1