chef-soloを覚えようとすると、chef-soloはオワコンで、local mode 使えって書いてあるので、
Chef Client Local Modeとやらを調べて使ってみた。
前提条件
- Chefのcookbooksのレシピを持ってる人
- OSはCentOS6
ChefDKをインストール
まず、chefを使うにはrubyがいるが、yum install ruby だとバージョンが古くてchefが上手く入らなかったりと何かイライラするので、ChefのDeveolper Kit のChefDKをインストールする。
まず、以下のページにいき、ダウンロードする。 CentOS6ならredhatの6でOK。
https://downloads.chef.io/chef-dk/redhat/#/
CentOS上に、ボタンのURLを何とかコピーして、wgetで取得。
1 |
wget https://opscode-omnibus-packages.s3.amazonaws.com/el/6/x86_64/chefdk-0.7.0-1.el6.x86_64.rpm |
それか、ダウンロードボタンでダウンロードして、SFTPでアップ。
Vagrantなどの仮想環境で使ってみるのであれば、どうせフォルダ共有するから落としたほうが早い。
次にインストール
1 |
rpm -Uvh chefdk-0.7.0-1.el6.x86_64.rpm |
インストールされたら確認
1 |
chef -v |
chef-repo作成とrun_listを設定
次に、chefのレポジトリなるchef-repoを作成。
1 |
chef generate repo chef-repo |
chef-repoの下に見覚えのあるcookbooksがあるから、いつもアタナが使っているcookbooksをコピーする。
vi menu.json と適当なjsonファイルを作成して、run_listを設定する。(以下は私のcookbookの例)
1 2 3 4 5 6 7 8 |
{ "run_list": [ "recipe[yum_repo]", "recipe[basic]", "recipe[http]", "recipe[php]" ] } |
chef-client実行
cd chef-repo でchef-repoへディレクトリ移動して以下のように実行。(-zは–local-mode)の略
1 |
chef-client -z -j menu.json |
以上。
上手く行けば、環境が作成される。
Gitにローカルで作成しておいたchef-repoとmenu.jsonごと登録しておけば、さらに捗るかも?
おまけ
vagrantはVagrant1.7.0より上だと以下でLocal Modeになるらしい。
1 |
config.vm.provision "chef_zero" do |chef| |
Vagrantで指定していた以下の様な引数を渡す記述は、
1 2 3 4 5 |
chef.json = { http:{ docRoot: "/vagrant/" } } |
cookbooks\http\attributes\default.rb に下記のように書いたら動いた。( なんかもっと良い書き方がありそう・・。)
1 |
default['http']['docRoot'] = "/vagrant/" |