ytooyamaのブログ

サーバ構築とか、仕事で発見したこととか、趣味のこととかを書いています。

OpenStack Ubuntuインスタンスで「sudo: unable to resolve host xxxx」メッセージが出る件

表題の通り、OpenStackでUbuntuインスタンスを起動して、例えばsudoコマンドを実行するとresolveできないよ!って警告が出たり、状況によっては待ち時間が発生したり、最悪の場合...タイムアウトしたり(怖)...件ですが、原因はhostnameはインスタンス名で指定したものに変わっているのに/etc/hostsにはそのホスト名が書かれていないために起きるようです。一応数秒待てば通常通り使えるし、/etc/hostsを書き換えればエラーは出なくなるけどいちいち修正するのも面倒ですよね。

ubuntu@test1:~$ sudo -i
sudo: unable to resolve host test1

ubuntu@test1:~$ sudo apt update
sudo: unable to resolve host test1

インスタンスを起動するときにホスト名とFQDNを指定する方法はRHEL OSPのドキュメントに書かれていました。

カスタマイズスクリプトを指定してインスタンスを起動すればいいようです。「manage_etc_hosts: true」が効いて、/etc/hostsにもホスト名が記述されるようになります。

#cloud-config
hostname: test1
fqdn: test1.localdomain
manage_etc_hosts: true

OpenStackの構築手順などで8.8.8.8や8.8.4.4といった外部DNSを使う例が多いので、その通りやるとハマる問題というわけですね。本来はそこで指定するDNSも自前で用意すべきという話でもありますし。

ちなみにCentOS 7のインスタンスを起動しても/etc/hostnameは変わりますが/etc/hostsは同じく書き換わりません。しかしUbuntuのようなエラーは出ることはありません。

このネタに気がついたのは私ではないですが、どこかに書いておけば誰かの役に立つと思い、ブログに書かせていただきました。

このブログサイトはJavaScriptを使っていますが、読み込んでいるJavaScriptは全てはてなが提供しているものであり、筆者が設置しているものではありません。