Edited at

EC2のユーザーデータでLinuxのホスト名を変更する方法


ユーザーデータ

ユーザーデータのcloud-initディレクティブで、fqdnキーを利用します。

ホスト名を変えるだけなら、これだけです。


user-data.yaml

#cloud-config

fqdn: example.co.jp


※ホスト名を設定するキーにはhostnameキーも存在します。

しかし、hostnameキーは、fqdnキーが利用される場合は無視されます。

AWSデフォルトのホスト名はfqdnキーで定義されているため、上書きするためにはfqdnキーを利用する必要があります。


ユーザーデータを入力する方法1:GUI

[インスタンスの作成]>[手順3:インスタンスの詳細設定]の[ユーザーデータ]に張り付けて

インスタンスを作成するだけです。

image.png


ユーザーデータを入力する方法2:AWS CLI

--user-dataオプションで、生のテキストファイルを渡します。yamlとしてますが、拡張子は何でもOKです。

aws ec2 run-instances --region $Region \

--image-id $AmiId --count 1 \
--instance-type $InstanceType --key-name $KeyName \
--subnet-id $SubnetId --private-ip-address $PrivateIpAddress \
--associate-public-ip-address \
--security-group-ids $SecurityGroupIds \
--tag-specifications "ResourceType=instance,Tags=[{Key=Name,Value=$NameTag}]" \
--credit-specification CpuCredits=standard \
--user-data file://userdata.yml

※変数の値は適宜設定してください。Powershellで実行する場合は、改行文字を「\」から「`」に変更してください。


補足:作成したAMIから起動すると、ホスト名が初期化される問題

既定の動作として、cloud-initでホスト名、ロケール、デフォルトユーザーが初期化されます。

シンプルにこれを防ぐのであれば、ユーザーデータでpreserve_hostnameキーをtrueに設定しておきます。


user-data.yaml

#cloud-config

fqdn: example.co.jp

runcmd:
- echo "preserve_hostname: true" >> /etc/cloud/cloud.cfg


※preserve_hostnameキーがtrueに設定されていると、hostnameキー・fqdnキーは機能しません。

以上です。