chef-soloにてyum実行
開発環境
OS:CentOS6.6(64bit) ruby:2.2.2p95 rubygems:2.4.5
knife-soloをインストール
$ gem install knife-solo
リポジトリ(キッチン)をカレントディレクトリにchef-repoの名前で作成
$ knife solo init chef-repo Creating kitchen... Creating knife.rb in kitchen... Creating cupboards... $ ls ./chef-repo total 24 drwxr-xr-x. 2 root root 4096 Jul 3 16:00 cookbooks drwxr-xr-x. 2 root root 4096 Jul 3 16:00 data_bags drwxr-xr-x. 2 root root 4096 Jul 3 16:00 environments drwxr-xr-x. 2 root root 4096 Jul 3 16:00 nodes drwxr-xr-x. 2 root root 4096 Jul 3 16:00 roles drwxr-xr-x. 2 root root 4096 Jul 3 16:00 site-cookbooks
chef-soloコマンドの設定ファイルを設定※デフォルト
$ mkdir /etc/chef $ vi /etc/chef/solo.rb
solo.rbの中身
cookbook_path ["/root/chef-repo/cookbooks"]
cookbookをyum_tesetの名前で作成
$ cd ./chef-repo $ knife cookbook create yum_test -o ./cookbooks ** Creating cookbook yum_test in /root/chef-repo/cookbooks ** Creating README for cookbook: yum_test ** Creating CHANGELOG for cookbook: yum_test ** Creating metadata for cookbook: yum_test $ ls -l ./cookbooks/yum_test/ total 44 drwxr-xr-x. 2 root root 4096 Jul 3 16:05 attributes -rw-r--r--. 1 root root 459 Jul 3 16:05 CHANGELOG.md drwxr-xr-x. 2 root root 4096 Jul 3 16:05 definitions drwxr-xr-x. 3 root root 4096 Jul 3 16:05 files drwxr-xr-x. 2 root root 4096 Jul 3 16:05 libraries -rw-r--r--. 1 root root 280 Jul 3 16:05 metadata.rb drwxr-xr-x. 2 root root 4096 Jul 3 16:05 providers -rw-r--r--. 1 root root 1464 Jul 3 16:05 README.md drwxr-xr-x. 2 root root 4096 Jul 3 16:05 recipes drwxr-xr-x. 2 root root 4096 Jul 3 16:05 resources drwxr-xr-x. 3 root root 4096 Jul 3 16:05 templates
epelをyumにてインストールするrecipeを作成
$ vi ./cookbooks/yum_test/recipe/default.rb
default.rbの中身
# # Cookbook Name:: yum_test # Recipe:: default # # Copyright 2015, YOUR_COMPANY_NAME # # All rights reserved - Do Not Redistribute # yum_package "epel-release" do action :install end
chefの実行(レシピ指定)
※cookbookがyum_testで実行するレシピがdefault.rbの場合
$ chef-solo -o yum_test::default Starting Chef Client, version 12.4.0 [2015-07-03T16:15:31+00:00] WARN: Run List override has been provided. [2015-07-03T16:15:31+00:00] WARN: Original Run List: [] [2015-07-03T16:15:31+00:00] WARN: Overridden Run List: [recipe[yum_test::default]] Compiling Cookbooks... Converging 1 resources Recipe: yum_test::default * yum_package[epel-release] action install - install version 6-8 of package epel-release Running handlers: Running handlers complete Chef Client finished, 1/1 resources updated in 6.271077625 seconds
再度実行すると既にインストールされているので下記となる
$ chef-solo -o yum_test::default Starting Chef Client, version 12.4.0 [2015-07-03T16:17:55+00:00] WARN: Run List override has been provided. [2015-07-03T16:17:55+00:00] WARN: Original Run List: [] [2015-07-03T16:17:55+00:00] WARN: Overridden Run List: [recipe[yum_test::default]] Compiling Cookbooks... Converging 1 resources Recipe: yum_test::default * yum_package[epel-release] action install (up to date) Running handlers: Running handlers complete Chef Client finished, 0/1 resources updated in 6.735517023 seconds
chefの実行(jsonから)
test.jsonの中身
{ "run_list": [ "recipe[yum_test::default]" ] }
chefの実行
$ chef-solo -j test.json Starting Chef Client, version 12.4.0 Compiling Cookbooks... Converging 1 resources Recipe: yum_test::default * yum_package[epel-release] action install - install version 6-8 of package epel-release Running handlers: Running handlers complete Chef Client finished, 1/1 resources updated in 6.347717699 seconds