2016年1月25日月曜日

chef chef-client Local modeを利用する chef-soloからの移行 その3. 既存のchef-soloをchef-client Local modeで実行

  • 公開日: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に移行しましょう。

以上です。

chefのオススメの本


関連記事

この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加

0 件のコメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...