configspec とか Immutable Infrastructure について、@kazuho さんから色々とありがたいツッコミをいただきまして、その中で
個人的にはSCMあるいはLVMの管理下において、record-cmd yum -y install httpd とかすると、コマンドがSCMのコメントに残りつつ、ファイルシステムに発生した差分が変更履歴として保存されるくらいでいいんじゃないかと思う
— Kazuho Oku (@kazuho) November 26, 2013
といった tweet があり、それは Docker でやれるけど、configspec でやることではないなー、と思っていたところ、ふと
configspec から Dockerfile を生成する、というアプローチもありな気がしてきた。
— Gosuke Miyashita (@gosukenator) November 26, 2013
ってなことを思いつき、時同じくして @naoya_ito さんからも
@gosukenator configspecみたいなのがDockerfileを出力すればいいと思います
— Naoya Ito (@naoya_ito) November 26, 2013
とリプライいただいたので、早速実装してみた。v0.0.5 では、以下の様に Dockerfile の生成ができます。
$ configspec-init
Select a backend type:
1) SSH
2) Exec (local)
3) Dockerfile
Select number: 3
+ spec/
+ spec/001_httpd_spec.rb
+ spec/spec_helper.rb
+ Rakefile
$ rake spec
/opt/boxen/rbenv/versions/2.0.0-p247/bin/ruby -S rspec
Package "httpd"
should be installed
Finished in 0.00229 seconds
1 example, 0 failures
$ cat Dockerfile
RUN yum -y install httpd
まだ RedHat 系のパッケージインストールしか対応してないので、RUN yum -y install
しか出力できないけど、おいおい対応していきます。
(というか、RSpec で副作用のある何かするの、@r7kamura 氏のネタに乗っかった側面が強いんだけど、本当にこの方向性でいいの?って気がしなくもない。)