chef
Vagrant
web+DB_PRESS

WEB+DB Press 75号と76号のEmerging Web Technology研究室を手元で再現しようとしてハマった話

More than 5 years have passed since last update.


顛末

伊藤直也さんの「ChefとVagrantによるインフラのコード化」と「serverspecによるテスト駆動インフラ構築」を続けて手元で試した。

「serverspecによるテスト駆動インフラ構築」の122ページ、nginxの「テストを実行する」ステップで、テストが赤のままFailureした。WEB+DBの記述によれば、ここですべて通るはずなのに。

何度試してもテストは通らない。よくログを見ると、そもそも

$ knife solo cook webdb

でnginxをインストールしようとしても

package[nginx] action install (up to date)

となっている。すでにup to dateだからインストールする必要はないとのこと。しかしvagrant sshで実際に見てみるとrake specの結果どおり、インストールはされていない。


原因

Vagrantで作った仮想サーバのホスト名が両方ともwebdbだったからだよ!!!!!!!!


どういうことかというと

knife-soloやserverspecはsshでサーバに入ってシェルスクリプトを実行するだけのもの。なので、

ssh webdb

でwebdbと名前をつけたサーバに入れるように設定しておく必要がある。

そのため~/.ssh/configにwebdbというサーバ名でsshログインできるように設定を書いておく。のだが、~/.ssh/configにWEB+DB Press 75号で作ったwebdbの設定が残っていた。つまり


~/.ssh/config

Host webdb

# 以下省略

Host webdb
# 以下省略


と、webdbと名づけたホストが2つ入っていた。ssh wedbしても、75号で作ったほうにsshしてしまう。なのでchefが目的のホストでなく75号のホストで動いていた。


結論

ホスト名は webdb75ewtl のような間違えない名前にしよう。