vagrant provision経由でゲストOSにパッケージ導入†
- ホストOS:Windows7、ゲストOS:CentOS 6.4の条件で試してみてます。
- windowsコマンドから、chef-solo 叩くもエラーとなってしまったわけです。windows上で knife の環境を作ってみたんですが、どうやっても上手くいかなかったので Vagrantfile に chef-solo の記述を書く方法としました。
とりあえず centos のbox いれてみる。そして…。†
- こんな感じで Vagrantfile を作ってゲストOSをセットアップしてみます。(C:\Users\hoge\Vagrantfile)
Vagrant.configure("2") do |config|
config.vm.box = "CentOS-6.3-x86_64-v20130101"
config.vm.box_url = "http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.3-x86_64-v20130101.box"
config.vm.define :chef1 do |chef1|
chef1.vm.network :forwarded_port, guest: 22, host: 2230, host_ip: "127.0.0.1", id: "ssh", auto_correct: true
chef1.vm.network :private_network, ip: "192.168.10.12"
end
end
- このまま使ってもいいけど、セキュリティ的にあれなので「yum updage」をしてみると…。ゲストOSを立ち上げたとき下記のエラーが出力され共有ディレクトリが使用できないと怒られる。
[chef1] -- /vagrant
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!
- ゲストOS再起動して、/vagrant がマウントされていることを確認する。(先に進めないからね)
provision の設定†
- provision の設定を Vagrantfile にいれてみる。(C:\Users\hoge\Vagrantfile)
Vagrant.configure("2") do |config|
config.vm.box = "CentOS-6.3-x86_64-v20130101"
config.vm.box_url = "http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.3-x86_64-v20130101.box"
config.vm.define :chef1 do |chef1|
chef1.vm.network :forwarded_port, guest: 22, host: 2230, host_ip: "127.0.0.1", id: "ssh", auto_correct: true
chef1.vm.network :private_network, ip: "192.168.10.12"
end
config.vm.provision :chef_solo do |chef|
chef.cookbooks_path = "./chef-repo/cookbooks"
chef.add_recipe "hello"
end
end
- この状態でゲストOSを再起動してみる。
C:\Users\hoge\chef-repo> vagrant reload
- どきどき
…
[chef1] Mounting shared folders...
[chef1] -- /vagrant
[chef1] -- /tmp/vagrant-chef-1/chef-solo-1/cookbooks
[chef1] Running provisioner: chef_solo...
Generating chef JSON and uploading...
Running chef-solo...
[2013-08-20T09:42:34+00:00] INFO: *** Chef 10.16.4 ***
[2013-08-20T09:42:34+00:00] INFO: Setting the run_list to ["recipe[hello]"] from JSON
[2013-08-20T09:42:34+00:00] INFO: Run List is [recipe[hello]]
[2013-08-20T09:42:34+00:00] INFO: Run List expands to [hello]
[2013-08-20T09:42:34+00:00] INFO: Starting Chef Run for localhost
[2013-08-20T09:42:34+00:00] INFO: Running start handlers
[2013-08-20T09:42:34+00:00] INFO: Start handlers complete.
[2013-08-20T09:42:34+00:00] INFO: Hello, Chef! ←← きたー
[2013-08-20T09:42:34+00:00] INFO: Chef Run complete in 0.025701 seconds
[2013-08-20T09:42:34+00:00] INFO: Running report handlers
[2013-08-20T09:42:34+00:00] INFO: Report handlers complete
zsh をいれてみる†
#
# Cookbook Name:: hello
# Recipe:: default
#
# Copyright 2013, YOUR_COMPANY_NAME
#
# All rights reserved - Do Not Redistribute
#
log "Hello, Chef!"
package "zsh" do
action :install
end
- provision 実行!
C:\Users\hoge\chef-repo> vagrant provision
[chef1] Running provisioner: chef_solo...
Generating chef JSON and uploading...
Running chef-solo...
[2013-08-20T09:50:57+00:00] INFO: *** Chef 10.16.4 ***
[2013-08-20T09:50:57+00:00] INFO: Setting the run_list to ["recipe[hello]"] from JSON
[2013-08-20T09:50:57+00:00] INFO: Run List is [recipe[hello]]
[2013-08-20T09:50:57+00:00] INFO: Run List expands to [hello]
[2013-08-20T09:50:57+00:00] INFO: Starting Chef Run for localhost
[2013-08-20T09:50:57+00:00] INFO: Running start handlers
[2013-08-20T09:50:57+00:00] INFO: Start handlers complete.
[2013-08-20T09:50:57+00:00] INFO: Hello, Chef!
[2013-08-20T09:51:00+00:00] INFO: package[zsh] installing zsh-4.3.10-5.el6 from base repository ←← きたー
[2013-08-20T09:51:09+00:00] INFO: Chef Run complete in 11.632397 seconds
[2013-08-20T09:51:09+00:00] INFO: Running report handlers
[2013-08-20T09:51:09+00:00] INFO: Report handlers complete
参考にさせて頂いたサイト様†