- 公開日:2016年01月25日
記事概要
ずっと放置していたchefの移行作業の詳細記事です。chef-soloで利用していたレシピをchef-client Local modeで動作させます。
環境
- rbenv
- chef
- vagrant centos6.5
はじめに
前回と前々回ではchefのchef-client Local modeを利用する方法を覚えました。
今回はいよいよchef-soloリポジトリをchef-client Local modeで動作させます。
chefのバージョン
terminal
chef -v Chef Development Kit Version: 0.10.0 chef-client version: 12.5.1 berks version: 4.0.1 kitchen version: 1.4.2
chef-soloリポジトリの配置
既存のchef-soloリポジトリをLocal modeで動作させるために、/home/vagrant/配下にコピーします。
terminal
// sync directory cd /vagrant_data/data // chef-solo-repoをコピー cp -pa chef-solo-repo /home/vagrant/ // chef-solo-repoに移動 cd /home/vagrant/chef-solo-repo // ファイルを確認 ls -l total 13 -rwxrwxrwx 1 vagrant vagrant 153 Jan 20 01:52 Berksfile -rwxrwxrwx 1 vagrant vagrant 424 Jan 20 02:29 Berksfile.lock drwxrwxrwx 1 vagrant vagrant 4096 Jan 21 07:16 cookbooks drwxrwxrwx 1 vagrant vagrant 0 Jan 21 07:16 data_bags drwxrwxrwx 1 vagrant vagrant 0 Jan 21 07:16 environments drwxrwxrwx 1 vagrant vagrant 4096 Jan 21 07:16 nodes drwxrwxrwx 1 vagrant vagrant 0 Jan 21 07:16 roles drwxrwxrwx 1 vagrant vagrant 4096 Jan 21 07:16 site-cookbooks
knife.rbの修正
設定ファイルknife.rbを修正します。
■Before■
{chef-repo_base}/.chef/knife.rb
cookbook_path ["cookbooks", "site-cookbooks"] node_path "nodes" role_path "roles" environment_path "environments" data_bag_path "data_bags" #encrypted_data_bag_secret "data_bag_key" knife[:berkshelf_path] = "cookbooks"
■After■
{chef-repo_base}/.chef/knife.rb
cookbook_path ["/home/vagrant/chef-solo-repo/cookbooks", "/home/vagrant/chef-solo-repo/site-cookbooks"] node_path "/home/vagrant/chef-solo-repo/nodes" role_path "/home/vagrant/chef-solo-repo/roles" environment_path "/home/vagrant/chef-solo-repo/environments" data_bag_path "/home/vagrant/chef-solo-repo/data_bags" #encrypted_data_bag_secret "data_bag_key" knife[:berkshelf_path] = "/home/vagrant/chef-solo-repo/cookbooks"
パスをフルパスにします。
chef-client Local modeで実行
chef-solo(knife solo)コマンドでなく、chef-client Local modeで実行します。
■Before■
terminal
cd {chef-repo_base} knife solo cook 192.168.33.44
■After■
terminal
chef-client -z -j 192.168.33.44.json
cookbookにエラーがなければ正常に実行できます。
実行に失敗した場合は以下のコマンドでcookbookとroleを確認してください
terminal
cd {chef-repo_base} // cookbook sudo knife cookbook list -z mysql 5.6.3 nginx 0.1.0 php-fpm 0.1.0 php55 0.1.0 ruby_build 0.8.0 ruby_rbenv 1.0.1 webconfiguration 0.1.0 yum 3.9.0 yum-add 0.1.0 yum-mysql-community 0.1.21 // role sudo knife role list -z web
上記のように表示されればcookbookとroleの設定は正常です。
まとめ
chef-soloとchef-client Local modeに違いはほとんどありません。
なので、なるべく非推奨のchef-soloを止め、chef-client Local modeに移行しましょう。
以上です。
0 件のコメント:
コメントを投稿