以前、Qiitaでこういう記事を書いたんですが:
これと同じコンセプトで、最低限の設定で作成後のイメージにServerspecを走らせるためのプラグインを書きました。
インストールは、今のところ自分でビルドする必要があります(もうちょいちゃんとしたらバイナリを配りたい)。
# Needs Go >= 1.3 $ git clone https://github.com/udzura/packer-provisioner-serverspec.git $ cd packer-provisioner-serverspec $ make install
設定はこんな感じで。
{ "builders" : [ { "type": "amazon-ebs", "ssh_username": "centos", "ssh_pty": true, "...": "..." } ], "provisioners": [ { "type": "shell", "script": "/path/to/your-provisoner.sh" }, { "type": "serverspec", "source_path": "/path/to/your/serverspec-root" } ] }
今はα版ということ(にしておく)で、いろいろな条件が固定です。
- sshのユーザはsudoできないといけない
"ssh_pty": true
でないといけない(Packer 0.8からだそうです。参考)- rakeタスクは
rake spec
でないといけない - ディレクトリ構成はこんな感じがよさそう
/path/to/your/serverspec-root ├── Gemfile # Gemfileとlock、必ずしも必要なし ├── Gemfile.lock ├── Rakefile └── spec ├── localhost │ ├── cloud_init_spec.rb │ ├── hosts_spec.rb │ ├── packages_spec.rb │ └── users_spec.rb # and so on... └── spec_helper.rb
Serverspec自体のインストールは omnibus を使っています。 @sawanoboly さんは神です。おかげで、CentOSやUbuntuであればひとまず動きそうです。あ、Ubuntuはちゃんと検証していません......
rake spec
が終わったらserverspecパッケージとアップしたserverspecのディレクトリは綺麗に消します。
そんな感じで、機能はまだ全然足りないですが、お試しください。
PR
こういうPackerの深い話、具体的にはprovisionerだけでなくbuilderまで自作した事例を、 HackerTackleというイベントで話します。ついでに、 Consulの話とかなんか抽象的な話もしちゃいます。
なんと! 明日 なんですが、会場かなり余裕があるので、今から登録しても参加できると思います!
九州に住んでいない人も、今から飛行機を取れば全然間に合います!
という感じで、深い話ができ、なおかつ最前線(自分を棚にあげる)のエンジニアに質問できたり、がっつり議論できる貴重な場だと思います。博多でお待ちしております!