CentOSでホスト名をランダム化したい

投稿者: | 4月 30, 2020

CentOSをテンプレートにしてクローンすると、localhost.localdomainになってしまう。。。これって結構厄介で、どのマシンもlocalhost.localdomain。なんなんだよぉ〜ということに。Windowsのsysprepみたいにランダム文字列にしてほしい。

こんなスクリプトを仕組んで、クローンをすると、クローンした直後にホスト名がランダム化される。かなり苦肉の策だが。Githubにあげるほどでもないので。ここに書く。また例によってヒアドキュメントで。ドメイン名とかは適当に書き換えてね。

cat << ‘EOF’ > /root/temphost.done
hostnamectl set-hostname `cat /dev/urandom| tr -dc ‘A-Za-z0-9’| head -c 10`.ent1.cloudshift.corp
mv /root/temphost.sh /root/temphost.done
chmod -x /root/temphost.done
EOF
chmod +x /root/temphost.done
chmod +x /etc/rc.d/rc.local
cat << EOF >> /etc/rc.local
test -f /root/temphost.sh ; /root/temphost.sh
EOF

ちなみに起動したあとにネットワークやホスト名を変更するためには以下のスクリプトで。

cat << EOF >> /root/network.sh
hostnamectl set-hostname ent1-lnxX.ent1.cloudshift.corp
nmcli c mod ens192 ipv4.addresses 192.168.11.200/24
nmcli c mod ens192 ipv4.gateway 192.168.11.1
nmcli c mod ens192 ipv4.method manual
nmcli c mod ens192 connection.autoconnect yes
nmcli c mod ens192 ipv4.dns 192.168.11.1,8.8.8.8
nmcli c mod ens192 ipv4.dns-search ent1.cloudshift.corp
nmcli c down ens192 && nmcli c up ens192
EOF
chmod +x network.sh

network.shのパラメータを書き換えて、コンソールで実行する。間違ってもSSH経由でやってはならない。。。当たり前だが。

ちなみに、ホスト名を書き換えたら、以下のコマンドが正しく通る習慣をつけた方がいい。大抵うまく動かないときは、ここいらの設定が間違っている

ping `hostname`

また、以下が正しく通らない場合はDNS系の設定がかなり重症。localhostが名前解決できない、127.0.0.1の名前解決がlocalhostではない、あるいはlocalhost.domainnameなどで返ってきちゃう場合事件が多い。

dig localhost  —> 127.0.0.1が返ってくるはず。

dig 127.0.0.1 —> localhost. が返ってくるはず。

もう、今のLinuxはifconfigとかnslookupが入っていないものも。古いコマンドなんでもはや使わないけど。

コメントを残す