追記
- 以下の情報は古い、又は誤りがありますのでご注意下さい ...
はじめに
レシピを書く為だけではなくて、Chef を使うにあたって覚えておきたい色々となこと。
Berkshelf をサクッと使う
cookbook の bundler 的な位置づけの Berkshelf で迷わない為のメモ。
Berkshelf のインストール
既に Version 3 が出ているようだけど、以下のように gem でインストールする場合には Version 2 系がインストールされる。
gem install berkshelf --no-ri --no-rdoc
簡単。
Berksfile を書く
早速、Berksfile を書いていくわけであるが、個人的に Berksfile の配置をどこにすれば良いのかが迷いどころであるが...
knife solo init chef-repo
を実行すると chef-repo 以下に Berksfile が作成されることから chef-repo 直下に置くのがイイのかなと思っていただけど、こちらの GETTING STARTED を読むと Specify your dependencies in a Berksfile in your cookbook’s root とあるので任意の cookbook 以下に置くのが良さそう。
ということで Berksfile は以下のように記述する。
site :opscode metadata cookbook 'htpasswd', git: 'https://github.com/Youscribe/htpasswd-cookbook.git'
berks コマンド
berks コマンドのヘルプは以下の通り。
Commands:
berks apply ENVIRONMENT # Apply the cookbook version locks from Berksfile.lock to a Chef environment
berks configure # Create a new Berkshelf configuration file
berks contingent COOKBOOK # List all cookbooks that depend on the given cookbook
berks cookbook NAME # Create a skeleton for a new cookbook
berks help [COMMAND] # Describe available commands or one specific command
berks init [PATH] # Initialize Berkshelf in the given directory
berks install # Install the cookbooks specified in the Berksfile
berks list # List all cookbooks (and dependencies) specified in the Berksfile
berks outdated [COOKBOOKS] # Show outdated cookbooks (from the community site)
berks package [COOKBOOK] # Package a cookbook (and dependencies) as a tarball
berks shelf SUBCOMMAND # Interact with the cookbook store
berks show [COOKBOOK] # Display name, author, copyright, and dependency information about a cookbook
berks update [COOKBOOKS] # Update the cookbooks (and dependencies) specified in the Berksfile
berks upload [COOKBOOKS] # Upload the cookbook specified in the Berksfile to the Chef Server
berks version # Display version and copyright information
Options:
-c, [--config=PATH] # Path to Berkshelf configuration to use.
-F, [--format=FORMAT] # Output format to use.
# Default: human
-q, [--quiet] # Silence all informational output.
-d, [--debug] # Output debug information
かなり色々と出来そうではあるが、今回は berks install のみを利用する。
berks install
Berksfile に記述した cookbook をインストールする為に berks install を利用する。
cd chef-repo/site-cookbooks/ berks install --path=../../cookbooks/
以下のように chef-repo 以下の cookbooks に htpasswd という cookbook がインストールされた。
. ├── chef-repo └── htpasswd 2 directories, 0 files
htpasswd を実現する
community cookbook を使う
- こちらの community cookbook を使う
- 上述の
Berkshelfを使ってインストールするとイイ
レシピ例
例として nagios をセットアップする場合に... run_list を以下のようにして...
{ "run_list":[ "recipe[htpasswd]", "recipe[nagios_cookbook::app_install]" ] }
レシピは your_recipe.rb に以下のようにして書くと利用することが出来る。
htpasswd "/etc/httpd/htpasswd.users" do user "user" password "password" end
とするだけ。また、以下のように ${your_cookbook}/attribute/default.rb に記述して...
default[:nagios][:users] = [{ user: "foo", password: "bar" }] default[:nagios][:users] = [{ user: "admin", password: "bar" }]
レシピ側を以下のように書けば複数のアカウントを管理することも出来る。
node[:nagios][:users].each do |user| htpasswd "/etc/nagios3/htpasswd.users" do user user[:user] password user[:password] end end
引き続き...
- 書く