Red Hat Enterprise Linux 8 ベースの EC2 インスタンスで AMI からのリストア時にホスト名を固定してみた

Amazon Linux2 でホスト名を変更した後に AMI を作成してリストアした場合、 cloud-init によってデフォルトのホスト名に上書きされます。

この挙動は Amazon Linux2 に限らず Linux 系のインスタンスに適用されると考えられますが、念のため Red Hat Enterprise Linux 8 でも試してみました。
※ デフォルトのホスト名と言っているのは Amazon EC2 インスタンスのホスト名のタイプ - Amazon Elastic Compute Cloud - で言及されている、ip-xx-xx-xx-xx.ap-northeast-1.compute.internal といったものです。

やってみた

ベースとなる AMI は RHEL-8.8.0_HVM-20230802-x86_64-64-Hourly2-GP2 を使用しました。
EC2 を作成して SSH 接続してホスト名を確認してみます。

$ hostname
ip-10-0-0-70.ap-northeast-1.compute.internal

デフォルトのホスト名が設定されていたので、 hostnamectl コマンドを利用してホスト名を変更します。

$ sudo hostnamectl set-hostname --static masukawa-server

コマンド実行により /etc/hostname に変更後のホスト名が書きこまれます。

$ cat /etc/hostname
masukawa-server

この状態で再起動しても(パブリック IP が変わっても)ホストネームは保持されたままでした。
しかし、この状態で AMI を作成してインスタンスをリストアするとデフォルトのホスト名が改めて設定されます。

$ hostname
ip-10-0-0-70.ap-northeast-1.compute.internal

対策は Amazon Linux2 と同様、cloud-init が読み込む /etc/cloud/cloud.cfgpreserve_hostnametrue に変更することになります。(デフォルトは false でした)

sudo vi /etc/cloud/cloud.cfg

上記変更を実施した結果、AMI からリストアしても無事ホスト名が固定されました。

まとめ

Amazon Linux2 と同様の結果になりました。
リストア時にホスト名を固定したい方は参考にしていただけると幸いです。