読者です 読者をやめる 読者になる 読者になる

by shigemk2

当面は技術的なことしか書かない

hello, world

Chef

Chefのinstall

$ gem install chef

レポジトリ>クックブック>レシピ

レポジトリ作成

$ git clone git://github.com/opscode/chef-repo.git

(特定のシステムに1個くらいの粒度のおおきさ
レポジトリを作成すると、knifeというツールがインストールされる

クックブック作成

knife初回設定

$ knife configure
(いろいろきかれるけど全部デフォルトでおk)

cookbooksディレクトリ内にhelloというcookbookを作る

cd chef-repo
knife cookbook create hello -o cookbooks

レシピ編集

cookbooks/hello/recipes/default.rb

#
# Cookbook Name:: hello
# Recipe:: default
#
# Copyright 2013, YOUR_COMPANY_NAME
#
# All rights reserved - Do Not Redistribute
#
log "hello, world!"

Chef Soloの実行

のまえに設定ファイルを作成する
実行するレシピを記述するJSONファイルを作成

chef-repo直下
localhost.json

// localhost.json
{
    "run_list" : [
        "recipe[hello]"
    ]
}

chef-repo直下
solo.rb

# solo.rb
file_cache_path "/tmp/chef-solo"
cookbook_path ["/Users/shige/projects/chef-repo/cookbooks"]

サーバーのあらゆるファイルを操作するから、その実行にsudoはいる。

$ sudo chef-solo -c solo.rb -j ./localhost.json
Starting Chef Client, version 11.6.0
Compiling Cookbooks...
Converging 1 resources
Recipe: hello::default
  * log[hello, world!] action write

Chef Client finished, 1 resources updated