「Chef」の版間の差分

提供: FreeBSD入門
移動: 案内検索
(ページの作成:「Chef とは、インフラストラクチャの管理をコードによって行う、自動化するためのプラットフォームです。 '''読み方''' ;[[...」)
(相違点なし)

2013年12月7日 (土) 18:58時点における版

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 configure
/usr/local/lib/ruby/site_ruby/1.9/rubygems/custom_require.rb:36:in `require': iconv will be deprecated in the future, use String#encode instead.
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

関連項目