昨日の楽天でのセミナーでchefの中の人に,chef-containerを紹介してもらったんで,早速やってみたら,さっそくハマった話。
そもそもchefを触ったことないヤツが,中途半端な事前知識で突撃する物語。
chefのインストール
chefDKをダウンロードしてrpmインストール。 (書いてある通りにやる)
今回はcentos6に入れたので,RHELのインストーラを取ってきた。
Proxy環境下でのgem
毎回ハマるproxy
gemが参照するのは/etc/environment
らしい。
参考: http://qiita.com/Kentrow@github/items/b5a7dc8819a2e0e0f603
http_proxy="http://USER:PASS@URL:PORT"
https_proxy="http://USER:PASS@URL:PORT"
"
で囲うのが特徴的。
(しかし,自分のプロキシの情報が,あっちこっちに記述されてて,メンテできん。。。)
knife-container/chef-containerインストール
chef gem install knife-container
chef gem install chef-container
頭にsudoを最初つけていたら,rootのchefにインストールされてしまう模様。注意。
公式にはchef-containerの記述はなかった。knifeだけでいいのかな?(よくわかってない)
knife-containerやってみる
その前にchef-repoを作っておいた方がいいらしいので,knifeで作る
$ chef gem install knife-solo
$ knife solo init chef-repo
$ cd chef-repo
いよいよknife-containerを叩く。
公式に記述してあるヤツをそのまま叩く。
https://docs.getchef.com/containers.html
$ knife container docker init docker -r 'recipe[apache2]' -z -b
...
Context Created: ./dockerfiles/docker
$ tree dockerfiles/
dockerfiles/
└── docker
├── Berksfile
├── Dockerfile
└── chef
├── first-boot.json
└── zero.rb
おおお,それっぽい!
# BASE chef/ubuntu-12.04:latest
FROM docker
ADD chef/ /etc/chef/
RUN chef-init --bootstrap
RUN rm -rf /etc/chef/secure/*
ENTRYPOINT ["chef-init"]
CMD ["--onboot"]
Dockerfileもできてる模様。なるほど,chefフォルダを/etc/chefにマウントして,chef-initを叩く,,,と (Dockerfileは読める)
buildしてみる
このディレクトリでいいのかなーと思ってとりあえず叩いてみる
$ knife container docker build docker -z
...
no Dockerfile found in ./dockerfiles/docker
!?
なんか,色々うまくいってそうな雰囲気だったのに><
$ tree dockerfiles/
dockerfiles/
└── docker
├── Berksfile
├── Berksfile.lock
├── Dockerfile
├── chef
│ ├── first-boot.json
│ └── zero.rb
└── dockerfiles
└── docker
└── chef
└── cookbooks
├── Berksfile.lock
├── apache2
...
33 directories, 244 files
なんかフォルダ構成がおかしくなってる。多分カレントディレクトリがdockerfiles/docker
になったところで,何か構築してしまってるみたい。たしかにdockerfiles/docker/dockerfiles/docker
にはDockerfileはない模様。
…あと少しだったのに。。。 とりあえずpending...