Amazon Elastic Compute Cloud (Amazon EC2) インスタンスのホスト名を変更しましたが、そのインスタンスをリブートしたり、停止後に再起動したりすると、ホスト名が元のホスト名に戻ってしまいます。
解決策
重要: インスタンスを更新する前に、インスタンスの Amazon Elastic ブロックストア (Amazon EBS) を基盤とする Amazon マシンイメージ (AMI) を作成します。
既存のインスタンスのホスト名を確認する
次の手順を実行します。
-
SSH を使用して Linux インスタンスに接続します。
-
root ユーザーに切り替えるには、次のコマンドを実行します。
sudo su -
-
インスタンスのホスト名を確認するには、次のコマンドを実行します。
hostnamectl
静的ホスト名を設定する
実行するオペレーティングシステム (OS) に静的ホスト名を設定します。
AL2 または AL2023
Amazon Linux 2 (AL2) または Amazon Linux 2023 (AL2023) では、次の手順を実行します。
-
/etc/cloud/cloud.cfg を開くには、次のコマンドを実行します。
vim /etc/cloud/cloud.cfg
-
preserve_hostname 属性をレビューします。値が false の場合は、true に更新します。
例:
preserve_hostname: true
注: ファイルに preserve_hostname 属性がない場合はその属性をファイルに追加し、値を true に設定します。
-
静的ホスト名を設定するには、次のコマンドを実行します。
hostnamectl set-hostname persistent-hostname
注: persistent-hostname を実際のホスト名に置き換えます。
Ubuntu
Ubuntu では、次の手順を実行してください。
-
静的ホスト名を設定するには、次の手順を実行します。
hostnamectl set-hostname --static persistent-hostname
注: persistent-hostname を実際のホスト名に置き換えます。
-
/etc/hosts を開くには、次のコマンドを実行します。
vim /etc/hosts
-
ファイルに次の行を入力します。
localhost persistent-hostname
注: persistent-hostname を実際のホスト名に置き換えます。
-
EC2 インスタンスが IPv6 を使用している場合は、さらに次の設定データを入力します。
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
-
/etc/cloud/cloud.cfg を開くには、次のコマンドを実行します。
vim /etc/cloud/cloud.cfg
-
preserve_hostname 属性をレビューします。値が false の場合は、true に更新します。
例:
preserve_hostname: true
RHEL または CentOS 7、8、9
Red Hat Enterprise Linux (RHEL) または CentOS 7、8、9 では、次の手順を実行します。
-
静的ホスト名を設定するには、次のコマンドを実行します。
hostnamectl set-hostname --static persistent-hostname
注: persistent-hostname を実際のホスト名に置き換えます。
-
RHEL 7.3 以前では、次のコマンドを実行して /etc/cloud/cloud.cfg を開きます。
vi /etc/cloud/cloud.cfg
-
preserve_hostname 属性をレビューします。値が false の場合は、true に更新します。
例:
preserve_hostname: true
SUSE Linux
SUSE Linux Enterprise Server (SLES) では、次の手順を実行します。
-
ホスト名を設定するには、SLES のバージョンに応じて次のコマンドを実行します。
SLES 11
hostname persistent-hostname
SLES 12、15:
hostnamectl set-hostname persistent-hostname
注: persistent-hostname を実際のホスト名に置き換えます。
-
次のコマンドを実行し、/etc/HOSTNAME ファイルを実際のホスト名で更新します。
echo "persistent-hostname" > /etc/HOSTNAME
注: HOSTNAME を実際のホスト名に置き換えます。
-
/etc/hosts を開くには、次のコマンドを実行します。
vim /etc/hosts
-
使用している SLES のバージョンに応じて、ファイルに次の行を入力し、実際のホスト名に置き換えます。
SLES 11
127.0.0.1 localhost persistent-hostname
SLES 12、15:
127.0.0.1 localhost persistent-hostname
注: persistent-hostname を実際のホスト名に置き換えます。
-
/etc/cloud/cloud.cfg ファイルを開くには、次のコマンドを実行します。
vim /etc/cloud/cloud.cfg
-
ファイルに次の行を入力します。
preserve_hostname: true
変更を実装する
次の手順を実行します。
-
インスタンスを再起動するには、次のコマンドを実行します。
reboot
-
新しいホスト名を検証するには、次のコマンドを実行します。
hostnamectl
問題のトラブルシューティング
再起動後にホスト名が予期せず変更された場合は、次の手順を実行してください。
- /var/log/cloud-init.logと /var/log/syslog でシステムログを参照し、ホストネームの変更に関連するエントリがないか確認します。
- インストールするシステム更新により、/etc/hosts、ホスト名ファイル、またはホスト名ユーティリティが影響を受ける場合は、上記の解決手順をもう一度実行してください。
- /etc/cloud/cloud.cfg ファイルの preserve_hostname 設定が true であることを確認します。
関連情報
AL2 インスタンスのホスト名を変更する