前提条件
- Mac OS X(10.9.3)
- Virtualbox 4.3.6
- Vagrant 1.4.3
インストール
- 下記のGEMをインストールする。
$ gem install chef
$ gem install knife-solo
$ gem install berkshelf
Vagrantfile作成
- Vagrantfileを新規作成し、編集する。
- boxイメージは、下記参照。今回はCentOS6.5を使用する。
- https://github.com/opscode/bento
$ vagrant init ruby
$ vim Vagrantfile
Vagrantfile
config.vm.box_url = "http://opscode-vm-bento.s3.amazonaws.com/vagrant/virtualbox/opscode_centos-6.5_chef-provisionerless.box"
config.vm.network :private_network, ip: "192.168.33.10"
config.omnibus.chef_version = :latest
config.vm.provision :chef_solo do |chef|
chef.cookbooks_path = ["./chef-repo/cookbooks", "./chef-repo/site-cookbooks"]
chef.roles_path = "./chef-repo/roles"
chef.add_role "local"
end
Chefリポジトリ作成
$ knife solo init chef-repo
Community Cookbookダウンロード
$ cd chef-repo
$ berks init
$ vim Berksfile
$ berks vendor cookbooks
Berksfile
source "https://supermarket.getchef.com"
cookbook 'ruby_build'
cookbook 'rbenv', github: "fnichol/chef-rbenv"
Chef Cookbook作成
$ vim nodes/local.json
$ vim roles/local.json
nodes/local.json
{
"run_list": "role[local]"
}
roles/local.json
{
"name": "local",
"default_attributes": {
"rbenv": {
"rubies": ["2.1.0"],
"global": "2.1.0",
"gems": {
"2.1.0": [
{"name": "bundler"}
]
}
}
},
"override_attributes": { },
"json_class": "Chef::Role",
"description": "local",
"chef_type": "role",
"run_list": [
"recipe[ruby_build]",
"recipe[rbenv::system]"
]
}
Vagrantプラウグインインストール
$ vagrant plugin install vagrant-omnibus
Vagrant起動
$ vagrant up
プロビジョニング
$ vagrant provision