Chef Client Local Mode でざっくりと環境作成

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で取得。

wget https://opscode-omnibus-packages.s3.amazonaws.com/el/6/x86_64/chefdk-0.7.0-1.el6.x86_64.rpm

それか、ダウンロードボタンでダウンロードして、SFTPでアップ。
Vagrantなどの仮想環境で使ってみるのであれば、どうせフォルダ共有するから落としたほうが早い。

次にインストール

rpm -Uvh chefdk-0.7.0-1.el6.x86_64.rpm

インストールされたら確認

chef -v

chef-repo作成とrun_listを設定

次に、chefのレポジトリなるchef-repoを作成。

chef generate repo chef-repo

chef-repoの下に見覚えのあるcookbooksがあるから、いつもアタナが使っているcookbooksをコピーする。

vi menu.json と適当なjsonファイルを作成して、run_listを設定する。(以下は私のcookbookの例)

{
    "run_list": [
        "recipe[yum_repo]",
        "recipe[basic]",
        "recipe[http]",
        "recipe[php]"
    ]
}

chef-client実行

cd chef-repo でchef-repoへディレクトリ移動して以下のように実行。(-zは–local-mode)の略

 chef-client -z -j menu.json

以上。
上手く行けば、環境が作成される。

Gitにローカルで作成しておいたchef-repoとmenu.jsonごと登録しておけば、さらに捗るかも?

 

おまけ

vagrantはVagrant1.7.0より上だと以下でLocal Modeになるらしい。

config.vm.provision "chef_zero" do |chef|

 

Vagrantで指定していた以下の様な引数を渡す記述は、

chef.json = {
    http:{
            docRoot: "/vagrant/"
         }
}

cookbooks\http\attributes\default.rb に下記のように書いたら動いた。( なんかもっと良い書き方がありそう・・。)

default['http']['docRoot'] = "/vagrant/"

 

参考

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>