EC2でハマったこと2:CentOS7のホスト名編

以前「EC2(CentOS6)にNICを追加してハマったこと1」と題していましたが、せっかくなのでOSで区別せず「ハマったことシリーズ」として続けていこうと思います。

Redhat Enterprise Linux7(RHEL7)がリリースされて日は浅いですが、既に互換ディストリビューションのCentOS7もリリースされております。AWSではRHEL7もCentOS7も共にMarket Placeで提供されており、手軽に利用できる環境が整っています。

RHEL6からの変更点は非常に多くkernelのバージョンも大幅に上がったりinitプロセスがsystemdになったりしていますが、AWSで扱うとハマる仕様もまた実装されていました。
それは「RHEL6時代の方法でホスト名を変更して再起動してもAWS環境下では反映されない」ということです。

かつてRHEL6時代は /etc/sysconfig/network に含まれている次の行を編集することで簡単に反映することができました。

HOSTNAME=localhost.localdomain

AWS Market Placeで提供されるRHEL7シリーズではこれを編集しても効果はなく、RHELの開発版のような位置づけである fedora のように /etc/hostname を編集してもやはり効果はありません。

また、これもfedoraと同じですが hostnamectl コマンドを用いても一時的にしか効果は発揮されません。
OS再起動後もホスト名の変更を有効にするためには、/etc/cloud/cloud.cfg の末尾に次の1行を追加します。
このファイルはCentOS公式ISOからOSをインストールした場合には存在しないものです。

preserve_hostname:true

その後に hostnamectl コマンドを用いて、

# hostnamectl set-hostname foo.bar.co.jp

のようにするとOS再起動後もホスト名を保持することができるようになります。

設定したホスト名はbashプロンプトへ即座には反映されないため、正しく設定できたかは hostnamectl コマンドを単体で再度実行することで確認できます。

余談ですが、ネットワーク面では Network Manager の利用が推奨されています。
RHEL6時代の ifconfig をはじめとするコマンド群(net-tools)は非推奨となっており、もしかすると今後のリリースで取り除かれてしまうのかもしれません。