Techniical-support

EC2 AMI配布時にホスト名などをそのままで利用したい

皆さんこんにちは。エンジニアの川合です。

AlmaLinuxやRockyLinux等、CentOS8の後継となるOSの検証を進めている中で
既存AMIのゴールデンイメージの見直しを実施しています。

最終的には自動化等の処理で正しいものに置き換わるのですが
一部処理が想定違いになっていたのでそこを見直してみたお話です。

AMI 配布時に設定が置き換わる

ゴールデンイメージをAMI化して、他で利用出来るように各AWSアカウントに配布しています。
その中で、イメージ作成時点では正しく設定しているのに一部設定が巻き戻っている事が確認されました。

以前は、ちゃんと出来ていた認識ではあったのですがOSが新しくなったタイミングなのか?
はたまた自分のチェックが甘かったからなのか? 上手く動いていませんでした。

何も設定しない状態でAMIから展開すると、【ホスト名】と【ロケール】が変更されます。
共に制御していたつもりだったのですが、【ホスト名】が変わってしまっていました。

cloud-init の設定を見てみる

EC2インスタンスの再起動時やAMIからインスタンスを作成したタイミングで
このような動作が行われるのは、cloud-initというものが関連しています。

cloud-init の設定は、/etc/cloud/cloud.cfg ファイルに記載されています。

今は、ホスト名、ロケール以外にも変更は現時点では、かからないが
変わってほしくない部分をコメントアウトして無効化しています。

でもこれでホスト名が変わってしまいます
無効にしていたのは、以下のパラメータです。

set_hostname
update_hostname
update_etc_hosts
locale
timezone

一部設定が足りなかった

色々と調べ直してみると、どうやら設定をコメントアウトするだけでは足りず
新たな設定を追加する必要がありました。

preserve_hostname: true

この設定を足してあげる事で、設定したホスト名が変更されず引き継ぐ事が出来ました。

まとめ

ホスト名に関しては、デフォルトでプライベート IPアドレスを基にしたホスト名となります。

新規でインスタンスを作成した時に、ログイン対象が間違えていないかどうか
簡易的にチェックする事が出来たので、ある意味では助かっていました。

ただ、障害対策として保持しているバックアップ(AMI)の場合は、
そのまま利用出来るようにしておいた方が楽なので、変更せずに利用したいというのもあります。

場合わけも必要かと思いますが、こと新設するインスタンスの場合は
自動化処理でホスト名を再設定するので、このままでいいかなと思います。

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA