VagrantとChefをためしてみた
やっとvagrantとChefをためしてみたのでそのメモ。
参考サイト:http://qiita.com/taiki45/items/b46a2f32248720ec2bae
マシン
Linux Mint 16 Petra (Cinnamon 64-bit)
Vagrantインストール
~ % mkdir -p ~/vagrant/centos65; cd ~/vagrant/centos65 centos65 % vagrant box add centos65 https://github.com/2creatives/vagrant-centos/releases/download/v6.5.3/centos65-x86_64-20140116.box centos65 % vagrant init centos65 centos65 % vagrant up
以下のエラーが発生して起動できない (TへT)
centos65 % vagrant up ~~~~ 省略 ~~~~ default: SSH auth method: private key default: Error: Connection timeout. Retrying... default: Error: Connection timeout. Retrying... default: Error: Connection timeout. Retrying... default: Error: Connection timeout. Retrying... ### default: Error: Connection timeout. Retrying... Timed out while waiting for the machine to boot. This means that Vagrant was unable to communicate with the guest machine within the configured ("config.vm.boot_timeout" value) time period. If you look above, you should be able to see the error(s) that Vagrant had when attempting to connect to the machine. These errors are usually good hints as to what may be wrong. If you're using a custom box, make sure that networking is properly working and you're able to connect to the machine. It is a common problem that networking isn't setup properly in these boxes. Verify that authentication configurations are also setup properly, as well. If the box appears to be booting properly, you may want to increase the timeout ("config.vm.boot_timeout") value.
理由はBIOS設定デフォルトのままでVirtualization Technology
の設定がDisable
になっていたため。。
BIOS設定しなおして再リトライで無事起動。
centos65 % vagrant up Bringing machine 'default' up with 'virtualbox' provider... ==> default: Clearing any previously set forwarded ports... ==> default: Clearing any previously set network interfaces... ==> default: Preparing network interfaces based on configuration... default: Adapter 1: nat ==> default: Forwarding ports... default: 22 => 2222 (adapter 1) ==> default: Booting VM... ==> default: Waiting for machine to boot. This may take a few minutes... default: SSH address: 127.0.0.1:2222 default: SSH username: vagrant default: SSH auth method: private key default: Warning: Connection timeout. Retrying... default: Warning: Remote connection disconnect. Retrying... default: Warning: Remote connection disconnect. Retrying... ==> default: Machine booted and ready! ==> default: Checking for guest additions in VM... ==> default: Mounting shared folders... default: /vagrant => /home/mid/vagrant/centos65 centos65 % vagrant ssh [vagrant@vagrant-centos65 ~]$
vagrant-omnibusインストール
VM環境に応じたChefさんをインストールしてくれるvagrantプラグイン。 https://github.com/schisamo/vagrant-omnibus
$ vagrant plugin install vagrant-omnibus
Vagrantfileに以下を追加
Vagrantfile
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| # ... config.omnibus.chef_version = :latest # ... end
vagrant-berkshelfインストールとレシピ作成
- インストール
centos65 % vagrant plugin install vagrant-berkshelf --plugin-version '>= 2.0.1' Installing the 'vagrant-berkshelf --version '>= 2.0.1'' plugin. This can take a few minutes... Bundler, the underlying system Vagrant uses to install plugins, reported an error. The error is shown below. These errors are usually caused by misconfigured plugin installations or transient network issues. The error from Bundler is: Net::HTTPNotFound: No gems found matching "vagrant-vmware-fusion" "2.3.5" nil
謎エラー。
このへん参考にvagrant-hostmanager
いれてみて再実行。
centos65 % vagrant plugin install vagrant-hostmanager centos65 % vagrant plugin install vagrant-berkshelf --plugin-version '>= 2.0.1' centos65 % sudo gem i berkshelf
- berkshelfの設定
Berksfile
site :opscode
- レシピ作成
centos65 % mkdir site-cookbooks centos65 % cd !$ cd site-cookbooks site-cookbooks % berks cookbook initEnvironment create initEnvironment/files/default create initEnvironment/templates/default create initEnvironment/attributes create initEnvironment/libraries create initEnvironment/providers create initEnvironment/recipes create initEnvironment/resources create initEnvironment/recipes/default.rb create initEnvironment/metadata.rb create initEnvironment/LICENSE create initEnvironment/README.md create initEnvironment/CHANGELOG.md create initEnvironment/Berksfile create initEnvironment/Thorfile create initEnvironment/chefignore create initEnvironment/.gitignore run git init from "./initEnvironment" create initEnvironment/Gemfile create initEnvironment/Vagrantfile site-cookbooks % cd - /home/mid/vagrant/centos65
- レシピ作成
とりあえずはろーわーるど
site-cookbooks/initEnvironment/recipes/default.rb
log "Hello World!!!!!!!!!!!!!"
Vagrantとchef連携!
Vagrantfileにbarkshelf用の設定, chef solo用の設定を追加
Vagrantfile
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| # ... # vagrant-omnibus config.omnibus.chef_version = :latest # barkshelf config.berkshelf.enabled = true # chef solo config.vm.provision :chef_solo do |chef| chef.run_list = ["initEnvironment"] end end
Berksfileに作成したレシピを読み込むための設定を追加
Berksfile
site :opscode cookbook "initEnvironment", path: "site-cookbooks/initEnvironment"
いったんさっき作成したVMを捨てて再度vagrant up
。
centos65 % vagrant halt centos65 % vagrant destroy centos65 % vagrant up
まつ。まつ。まつ。。。。
無事ログにはろーわーるど表示
==> default: [2014-06-03T12:08:31+00:00] INFO: Hello World!!!!!!!!!!!!!
ほんとはChefでMW環境構築までしてみたかったのですが、今日はこのへんで。