packerとdockerとansibleと部屋とYシャツと私と酒と泪と男と女

ただいまpackerでansible-local使ってdockerイメージ作って、supervisorで複数プロセス立ち上げるdockerを1セットのサーバとし、それをfigで1筺体に複数立ち上げる方法を検討中。


packer 0.7.5とdocker 1.4.1 (CentOSyumにあるやつ)は組み合わせ的にNG。
「Error uploading script: Upload failed with non-zero exit status: 1」って怒られる。
https://github.com/mitchellh/packer/issues/1752


packer 0.7.5とdocker 1.5.x (2015/03/09時点で最新のやつ)は組み合わせ的にNG。
「Error uploading script: Upload failed with non-zero exit status: 1」って怒られる。
https://github.com/mitchellh/packer/issues/1752


packer 0.7.5とdocker 1.3.3はOKだが、ansible-local provisionerでplaybook_dir内にplaybook_fileがあるとcp時に上書きするかどうかの問い合わせ「Command stdout: "cp: overwrite `/tmp/packer-provisioner-ansible-local/foo.yml'? "」が出てNG(dockerのCentOS6イメージではデフォルトで「cp -i」のエイリアスが付いてる。shell provisionerで~/.*shrcの「alias」を無効化しても、その次のansible provisionerの段階ではシェルを抜けてないらしく効かない。「unalias cp」もそんなエイリアスないっていうエラーで怒られる)。
次期リリース予定の0.8.0でcommand付ける形で修正されているがいつリリースされるか不明。
https://github.com/mitchellh/packer/pull/1712


playbook_fileだけの指定だとrolesとかhostsがコピーされなくて「無い」って怒られるし、playbook_fileを含むplaybook_dirも付けると同じファイル2回加工としてpacker実行中に「上書きしますか?」という問い合わせがひっそり出るところで止まるし、playbook_fileとrole_paths指定してもvars_paths的なオプションが無いので「varsが無い」って怒られる。

0.8.0が出るまでは自前でパッチあてたpacker使うか、playbook_dirの外にplaybook_fileと同じかつ違う名前のコピーを作成して、packerの引数にはそちらを指定するしかないのかなぁ。いやだなぁ。