- shellなりcloud-initなりでプロビジョニング
- ローカルにあるServerspecのテストケース一式をアップロード
- ExecでServerspecを実行する
こんな手順。
なお、Packerはプロバイダに依存せずプロビジョニングができるので、AWSのAMIだけでなくOpenStackやら何やらにも使えるのでは。
設定.json
settei.json
{
...
"provisioners": [
{
"type": "shell",
"script": "provisioners/setup.sh",
"execute_command": "{{ .Vars }} sudo -E sh '{{ .Path }}'"
},
{
"type": "file",
"source": "serverspec",
"destination": "/tmp"
},
{
"type": "shell",
"script": "provisioners/run-serverspec.sh",
"execute_command": "{{ .Vars }} sudo -E sh '{{ .Path }}'"
}
]
}
sudo
云々は公式にある sudoさせる設定。
Serverspecする
プロジェクトの serverspec/
以下に serverspec-init
などで Exec 設定のプロジェクトを用意しておこう。
run-serverspec.sh
はこんな感じで。
run-serverspec.sh
# !/bin/bash
yum -y -q install rubygem-bundler
cd /tmp/serverspec
bundle install --path vendor/bundle
bundle exec rake spec
rm -rf /tmp/serverspec
yum -y -q remove rubygem-bundler