モーグルとカバとパウダーの日記

モーグルやカバ(EXカービング)山スキー(BC)などがメインの日記でした。今は仕事のコンピュータ系のネタが主になっています。以前はスパム対策関連が多かったのですが最近はディープラーニング関連が多めです。

vagrantなどで自動構築したテスト環境VMに複数ホスト名でアクセスする

vagrant+ansibleでCentOS6のテスト環境を自動構築するものを作っているのですが、その環境でvirtualホストの設定をしている場合に、複数のホスト名で接続できるようにしたい、と考えました。


テスト環境でやる場合、avahi(Bonjour)を使って名前解決をさせるのが一番お手軽で、Windowsからも「Bonjour Print Services」を入れれば利用できます。

WindowsからVMware上のLinuxへBonjour使ってサーバ名で接続する - モーグルとカバとパウダーの日記


しかし、avahi-daemonはそのままだと1つのホスト名しかサービスしてくれません。
ただ、avahi-daemonを複数ホスト名に対応できるようなスクリプトがあり、それを使うと複数名での接続が出来るようになります。


…と書いてますが、最初airtonix/avahi-aliasesを導入しようとしたもののなかなか出来ず、

からの一連のリプライでやっと出来るようになったわけですが…


まず、avahi-daemonを動かすように設定します。
avahi-daemonはmessagebus(dbus)というものが必要で、先にこちらのデーモンを動かしておく必要があります。実は複数ホスト名に対応する機能を後付するためにもこの機能が利用されているようです。

$ sudo yum install avahi
$ sudo service messagebus start
$ sudo service avahi-daemon start


複数ホスト名を使えるようにするために下記スクリプトを利用しました。

Register a mDNS/DNS-SD alias name for your computer using the Avahi daemon

またこのスクリプトを使うためにpython-avahiというライブラリが必要になるのですが、それはavahi-ui-toolsに含まれているため、それも入れてやります。

$ sudo yum install avahi-ui-tools
$ git clone https://gist.github.com/3168336.git
$ chmod +x 3168336/avahi-alias.py
$ sudo cp 3168336/avahi-alias.py /usr/local/bin/


設定と起動はシンプルに「/etc/rc.local」に下記行を追加して行いました。

/usr/local/bin/avahi-alias.py hoge1.local hoge2.local &

この例だと、サーバ名の他に「hoge1.local」「hoge2.local」もaliasとして使えるようになります。


Macの場合は最初からBonjourが入っているため、なにもしなくても使えます。


WindowsからBonjourを使えるようにするには、Appleの提供しているBonjourのサービスをインストールします。

Bonjour Print Services for Windows v2.0.2

Bonjour Print Servicesとなっていますが、Printだけでなく普通にBonjourのサービス情報取得が行えます。

Petit Tech: Linuxでのmdns(avahi/Bonjour)による名前解決。」によるとiTunesをインストールすることでも利用できるようになるそうです。


これでホスト名が「hoge」で、alias設定が上記の例だと「hoge.local」と「hoge1.local」「hoge2.local」の名前でアクセスできるようになります。