以前、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の話とかなんか抽象的な話もしちゃいます。
なんと! 明日 なんですが、会場かなり余裕があるので、今から登録しても参加できると思います!
九州に住んでいない人も、今から飛行機を取れば全然間に合います!
という感じで、深い話ができ、なおかつ最前線(自分を棚にあげる)のエンジニアに質問できたり、がっつり議論できる貴重な場だと思います。博多でお待ちしております!