ページ ツリー

比較バージョン

キー

  • この行は追加されました。
  • この行は削除されました。
  • 書式設定が変更されました。

...

コード ブロック
unless Vagrant.has_plugin?('vagrant-omnibus') then
  raise 'vagrant-omnibus プラグインがインストールされていません。'
end

 

Chef プロビジョナ

Cookbook のパスを指定する

cookbooks_path に Cookbook が格納されているディレクトリへの相対パスをリストで指定します。
Vagrant では指定したパスにディレクトリが存在しない場合でも何事も無くプロビジョンをしようと
してしまうので、事前にチェックするようにしています。

コード ブロック
config.vm.provision :chef_solo do |chef|
  cookbooks_path = ['cookbooks', 'site-cookbooks']
  cookbooks_path.each do |dir|
    unless File.exists?(dir) then
      raise "cookbook_path (#{File.absolute_path(dir)}) is not found."
    end
  end
  chef.cookbooks_path = cookbooks_path
end

 

SSL の警告を抑制する

Chef プロビジョナの実行時に次のような警告が表示されることがあります。

コード ブロック
SSL validation of HTTPS requests is disabled. HTTPS connections are still
encrypted, but chef is not able to detect forged replies or man in the middle
attacks.

Chef 11.12.0 から SSL 証明書のチェックをするようになったようで、
そのチェック方法(ssl_verify_mode)がデフォルトの :verify_none のままになっていると
この警告が表示されます。 

Vagrant でこれを解決するには、この設定を行う外部ファイルを作成し、
Vagrantfile の Chef プロビジョナでそのパスを指定するといいようです。

コード ブロック
titleVagrantfile.chef
Chef::Config.ssl_verify_mode = :verify_peer
コード ブロック
titleVagrantfile
config.vm.provision :chef_solo do |chef|
  chef.custom_config_path = 'Vagrantfile.chef'
end

 

他の Chef や Ruby がインストールされている環境でプロビジョンする

ゲストマシンに GEM_PATH などが指定されているとき、プロビジョニングがうまくいかない場合があります。
これを回避するには、Chef プロビジョナに Chef のバイナリパスと環境変数を指定します。

コード ブロック
config.vm.provision :chef_solo do |chef|
  chef_gem_path    = "/opt/chef/embedded/lib/ruby/gems/1.9.1"
  chef.binary_env  = "GEM_PATH=#{chef_gem_path} GEM_HOME=#{chef_gem_path}"
  chef.binary_path = "/opt/chef/bin"
end