Amazon EC2に構築したCentOS7のホスト名(hostname)を再起動しても戻らないようにする

EC2上にAWS MarketplaceのCentOS7を入れるとホスト名はデフォルトでこんな感じでした。

# hostname
ip-XX-XX-XX-XX.ap-northeast-1.compute.internal


FQDNチックな名前のhostnameにしたかったので、とりあえず以下のコマンドを実行したのですが、
OSを再起動したら元の残念なホスト名になっていました。

# hostnamectl set-hostname ホスト名

ちなみにこのコマンドは内部的には/etc/hostnameのホスト名を変更しているだけなので、
直接このファイルを編集してもOKですw


ホスト名が元に戻る原因は、OS起動時に*1cloud-initがhostnameの自動セットをやっていたからでした。
というわけでその処理を無効化します。
具体的には/etc/cloud/cloud.cfgにあるupdate_hostnameをコメント化して無効化してから、/etc/hostnameのホスト名を変更すると恒久的に変更されます。
僕の場合はhostnameは変更済みなので、後はこれだけです。

# vi /etc/cloud/cloud.cfg
cloud_init_modules:
 - migrator
 - bootcmd
 - write-files
 - growpart
 - resizefs
 - set_hostname
 # - update_hostname
 - update_etc_hosts
 - rsyslog
 - users-groups
 - ssh

これで再起動してもホスト名が変更されたままになりました。
CentOS7の新しいコマンドたちなんか好きになれないw

*1:AWS/EC2をはじめとするクラウド環境でLinuxを効率良く管理するための様々な機能を提供するパッケージ