$ gem install vagrant
$ vagrant box add centos-63-minimal https://dl.dropbox.com/u/7225008/Vagrant/CentOS-6.3-x86_64-minimal.box
確認
$ vagrant box list
適当なディレクトリに移動
$ vagrant init centos-63-minimal
Vagrantfileファイルが作成される
$ vagrant up
$ vagrant ssh
$ vagrant halt
$ vagrant reload
$ vagrant gem install sahara
$ vagrant sandbox on
$ vagrant sandbox commit
$ vagrant sandbox rollback
$ vagrant sandbox off
$ vagrant sandbox status
$ gem install chef
$ gem install knife-solo
vagrantのディレクトリで作業
$ knife solo init chef-repo
WARNING: No knife configuration file found
という警告がでるが気にしない
次のようなディレクトリが生成される
chef-repo
├── cookbooks
├── data_bags
├── nodes
├── roles
├── site-cookbooks
└── solo.rb
- cookbooksディレクトリに共通的なやつとかおく
- site-cookbooksディレクトリに固有のやつをおく
ためしにtestユーザーを追加してみるレシピを作成
$ knife cookbook create adduser -o chef-repo/cookbooks/
cookbooks内に次のようなディレクトリ、ファイルが生成される
chef-repo
├── cookbooks
│ └── adduser
│ ├── CHANGELOG.md
│ ├── README.md
│ ├── attributes
│ ├── definitions
│ ├── files
│ │ └── default
│ ├── libraries
│ ├── metadata.rb
│ ├── providers
│ ├── recipes
│ │ └── default.rb
│ ├── resources
│ └── templates
│ └── default
├── data_bags
├── nodes
├── roles
├── site-cookbooks
└── solo.rb
chef-repo/cookbooks/adduser/recipes/default.rb
を編集
user 'test' do
password 'test'
end
Vagrantfile
を編集
Vagrant::Config.run do |config|
config.vm.box = "centos-63-minimal"
config.vm.provision :chef_solo do |chef|
chef.cookbooks_path = "chef-repo/cookbooks"
chef.add_recipe "adduser"
end
end
Vagrantを再起動してchef-soloを実行
$ vagrant reload
次のような出力がされて実行される
[default] Running provisioner: Vagrant::Provisioners::ChefSolo...
[default] Generating chef JSON and uploading...
[default] Running chef-solo...
[2013-03-16T15:51:05+01:00] INFO: *** Chef 10.12.0 ***
[2013-03-16T15:51:06+01:00] INFO: Setting the run_list to ["recipe[adduser]"] from JSON
[2013-03-16T15:51:06+01:00] INFO: Run List is [recipe[adduser]]
[2013-03-16T15:51:06+01:00] INFO: Run List expands to [adduser]
[2013-03-16T15:51:06+01:00] INFO: Starting Chef Run for localhost
[2013-03-16T15:51:06+01:00] INFO: Running start handlers
[2013-03-16T15:51:06+01:00] INFO: Start handlers complete.
[2013-03-16T15:51:06+01:00] INFO: Processing user[test] action create (adduser::default line 10)
[2013-03-16T15:51:06+01:00] INFO: user[test] created
[2013-03-16T15:51:06+01:00] INFO: Chef Run complete in 0.044201 seconds
[2013-03-16T15:51:06+01:00] INFO: Running report handlers
[2013-03-16T15:51:06+01:00] INFO: Report handlers complete
確認
$ id test
uid=501(test) gid=502(test) 所属グループ=502(test)
ココに標準のレシピが用意されてるので持ってくる
$ git clone git://github.com/opscode-cookbooks/vim.git chef-repo/cookbooks/vim
Vagrantfile
を編集
Vagrant::Config.run do |config|
config.vm.box = "centos-63-minimal"
config.vm.provision :chef_solo do |chef|
chef.cookbooks_path = "chef-repo/cookbooks"
chef.add_recipe "adduser"
chef.add_recipe "vim" #←追加
end
end
Vagrantを再起動して実行
$ vagrant reload
もしくは次のコマンドで実行
$ vagrant provision