FrontPage

id:naoya さんの 入門Chef Solo を読んだらよくまとまってたので自分で実践しつつメモ。環境はVirtualbox 4.2.8, Vagrant 1.1.0を使用。

vagrant 1.1でsaharaプラグインが動かねえよおおお。

前提条件

ことはじめ

chefとknifeの導入

システムグローバルに入れるのは本意では無いのですが…。

sudo gem install chef
sudo gem install knife-solo

knife初期設定

knife configure

とりあえず全部デフォルトで。

WARNING: No knife configuration file found
Where should I put the config file? [/Users/key/.chef/knife.rb]
Please enter the chef server URL: [http://mbp-retina.local:4000]
Please enter an existing username or clientname for the API: [key]
Please enter the validation clientname: [chef-validator]
Please enter the location of the validation key: [/etc/chef/validation.pem]
Please enter the path to a chef repository (or leave blank):
*****

You must place your client key in:
  /Users/key/.chef/key.pem
Before running commands with Knife!
#

*****

You must place your validation key in:
  /etc/chef/validation.pem
Before generating instance data with Knife!

*****
Configuration file written to /Users/key/.chef/knife.rb

VagrantのOSイメージ登録

vagrantに base という名前でUbuntu 12.04 LTSのイメージを登録する。

vagrant box add base http://dl.dropbox.com/u/1537815/precise64.box

各種OSのイメージは このへん からどうぞ。

登録後のboxはlistオプションで見られる。

vagrant box list
base

Vagrantを立ち上げる

mkdir ~/tmp/sandbox
cd ~/tmp/sandbox
vagrant init
vagrant up

Vagrantホストのssh設定を~/.ssh/configに追加

hostオプションでホスト名を指定出来る。

vagrant ssh-config --host hostname >> ~/.ssh/config

chef-soloの環境設定

vagrant initしたのと同じディレクトリにsolo.rbという名前で次の設定を書く。

file_cache_path "/tmp/chef-solo"
cookbook_path ["/Users/key/Documents/vagrant/environment_name/cookbooks/"]

chefのcookbookを作る

作成したディレクトリにchefのcookbookを導入する。

knife cookbook create sandbox -o cookbooks

管理対象ホストにchefを導入

hostname は先に作ったvagrantのものなどでOK

knife solo prepare hostname

VMに適用するレシピを複数書く

localhost.jsonファイルにモリモリと。

{
    "run_list": [
        "recipe[sandbox]"  // sandboxはcookbookの名前
    ]
}

cookbookの調整

cookbooks/sandbox/recipes/default.rbを修正。

#
# Cookbook Name:: sandbox
# Recipe:: default
#
# Copyright 2013, YOUR_COMPANY_NAME
#
# All rights reserved - Do Not Redistribute
#

log "Hello, Chef!"

chef-solo実行

chef-solo -c solo.rb -j localhost.json
Starting Chef Client, version 11.4.0
Compiling Cookbooks...
Converging 1 resources
Recipe: sandbox::default
  * log[Hello, Chef!] action write

Chef Client finished, 1 resources updated

Vagrant provision

Vagrantfileに次のような項目を付け加えると、vagrant up実行時に自動的にchefを実行してくれる。 chef-solo要らんかも。

  config.vm.provision :chef_solo do |chef|
    chef.cookbooks_path = "./cookbooks"
    chef.add_recipe "sandbox"
  end

手動実行はvagrant provisionとする。

vagrant provision
[default] Running provisioner: VagrantPlugins::Chef::Provisioner::ChefSolo...
Generating chef JSON and uploading...
Running chef-solo...
stdin: is not a tty
[Mon, 18 Mar 2013 03:21:45 +0000] INFO: *** Chef 0.10.10 ***
[Mon, 18 Mar 2013 03:21:45 +0000] INFO: Setting the run_list to ["recipe[nginx]"] from JSON
[Mon, 18 Mar 2013 03:21:45 +0000] INFO: Run List is [recipe[nginx]]
[Mon, 18 Mar 2013 03:21:45 +0000] INFO: Run List expands to [nginx]
[Mon, 18 Mar 2013 03:21:45 +0000] INFO: Starting Chef Run for precise64
[Mon, 18 Mar 2013 03:21:45 +0000] INFO: Running start handlers
[Mon, 18 Mar 2013 03:21:45 +0000] INFO: Start handlers complete.
[Mon, 18 Mar 2013 03:21:45 +0000] INFO: Processing package[nginx] action install (nginx::default line 10)
[Mon, 18 Mar 2013 03:21:45 +0000] INFO: Processing service[nginx] action enable (nginx::default line 14)
[Mon, 18 Mar 2013 03:21:45 +0000] INFO: Processing service[nginx] action start (nginx::default line 14)
[Mon, 18 Mar 2013 03:21:45 +0000] INFO: Chef Run complete in 0.084771 seconds
[Mon, 18 Mar 2013 03:21:45 +0000] INFO: Running report handlers
[Mon, 18 Mar 2013 03:21:45 +0000] INFO: Report handlers complete

saharaプラグイン

※Vagrant 1.1では動きません

インストール

VMのロールバックを可能にするためsaharaプラグインを入れる。

vagrant plugin install sahara

スナップショットを取る

vagrant sandbox on

もとに戻す

vagrant sandbox rollback

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2013-06-29 (土) 11:13:57 (1458d)