「Chef」の版間の差分
提供: FreeBSD入門
(→概要) |
|||
行9: | 行9: | ||
* [[Chefのインストール]] | * [[Chefのインストール]] | ||
* [[chef-solo Hello World]] | * [[chef-solo Hello World]] | ||
− | * [[ | + | * [[Chef ディレクトリの作成]] |
== インストール == | == インストール == |
2013年12月7日 (土) 20:32時点における版
Chef とは、インフラストラクチャの管理をコードによって行う、自動化するためのプラットフォームです。
読み方
- Chef
- しぇふ
目次
概要
インストール
FreeBSDにインストールする場合
ports コレクションからインストールする場合
cd /usr/ports/sysutils/rubygem-chef sudo make install clean
pkgコマンドでインストールする場合
sudo pkg install rubygem-chef
portinstallコマンドでインストールする場合
sudo portinstall /usr/ports/sysutils/rubygem-chef
FreeBSDにインストールする場合
ports コレクションからインストールする場合
cd /usr/ports/devel/rubygem-rake sudo make install clean
pkgコマンドでインストールする場合
sudo pkg install rubygem-rake
portinstallコマンドでインストールする場合
sudo portinstall /usr/ports/devel/rubygem-rake
設定
/etc/chef/solo.rb
solo.rbの設定ファイルを作成します。cookbookのパスを指定します。
sudo mkdir /etc/chef sudo vim /etc/chef/solo.rb
% cat /etc/chef/solo.rb cookbook_path ["/home/user/chef/test/cookbooks"]
使い方
バージョンの確認
% chef-solo -v Chef: 11.6.0 % knife -v Chef: 11.6.0
knifeのセットアップ
% knife configure WARNING: No knife configuration file found Where should I put the config file? [/home/user/.chef/knife.rb] Please enter the chef server URL: [https://vm2.local:443] Please enter an existing username or clientname for the API: [user] Please enter the validation clientname: [chef-validator] Please enter the location of the validation key: [/etc/chef-server/chef-validator.pem] Please enter the path to a chef repository (or leave blank): ***** You must place your client key in: /home/user/.chef/user.pem Before running commands with Knife! ***** You must place your validation key in: /etc/chef-server/chef-validator.pem Before generating instance data with Knife! ***** Configuration file written to /home/user/.chef/knife.rb
chefクックブックの作成
% knife cookbook create test -o cookbooks ** Creating cookbook test ** Creating README for cookbook: test ** Creating CHANGELOG for cookbook: test ** Creating metadata for cookbook: test
生成されたファイルは、以下の通りです。
% ls cookbooks/test CHANGELOG.md attributes/ files/ metadata.rb recipes/ templates/ README.md definitions/ libraries/ providers/ resources/
recipes/default.rb
logでメッセージだけを表示する例です。
% cat cookbooks/test/recipes/default.rb # # Cookbook Name:: test # Recipe:: default # # Copyright 2013, YOUR_COMPANY_NAME # # All rights reserved - Do Not Redistribute # log "Hello Chef"
chef-soloの実行
% cd cookbooks % sudo chef-solo -o test Starting Chef Client, version 11.6.0 [2013-12-07T18:42:13+09:00] WARN: Run List override has been provided. [2013-12-07T18:42:13+09:00] WARN: Original Run List: [] [2013-12-07T18:42:13+09:00] WARN: Overridden Run List: [recipe[test]] Compiling Cookbooks... Converging 1 resources Recipe: test::default * log[Hello Chef] action write Chef Client finished, 1 resources updated
Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully
chef-solo を起動すると、即効で瞬殺されました。
% chef-solo -o test [2013-12-07T18:31:57+09:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1)
意味がこれだとわからないため、デバッグモードでchef-soloを起動しました。
% chef-solo -o test -l debug [2013-12-07T18:33:21+09:00] INFO: Forking chef instance to converge... [2013-12-07T18:33:21+09:00] DEBUG: Fork successful. Waiting for new chef pid: 38689 [2013-12-07T18:33:21+09:00] DEBUG: Forked instance now converging [2013-12-07T18:33:21+09:00] DEBUG: Creating directory /var/chef [2013-12-07T18:33:21+09:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1)
/var/chef に一般ユーザー権限で書き込もうとして、朽ち果てています。 /var/chef/cache/ にキャッシュファイルが作りたかったようです。 sudoをつけて実行すれば、書き込めます。
% sudo chef-solo -o test -l debug
git
git clone git://github.com/opscode/chef-repo.git
% cd ./chef-repo/ % rake new_cookbook COOKBOOK=test ***WARN: rake new_cookbook is deprecated. Please use 'knife cookbook create COOKBOOK' command.*** ** Creating cookbook test mkdir -p /home/usre/chef/test/chef-repo/cookbooks/test/attributes mkdir -p /home/usre/chef/test/chef-repo/cookbooks/test/recipes mkdir -p /home/usre/chef/test/chef-repo/cookbooks/test/definitions mkdir -p /home/usre/chef/test/chef-repo/cookbooks/test/libraries mkdir -p /home/usre/chef/test/chef-repo/cookbooks/test/resources mkdir -p /home/usre/chef/test/chef-repo/cookbooks/test/providers mkdir -p /home/usre/chef/test/chef-repo/cookbooks/test/files/default mkdir -p /home/usre/chef/test/chef-repo/cookbooks/test/templates/default ** Creating README for cookbook: test ** Creating metadata for cookbook: test