...
コード ブロック |
---|
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 プロビジョナでそのパスを指定するといいようです。
コード ブロック | ||
---|---|---|
| ||
Chef::Config.ssl_verify_mode = :verify_peer |
コード ブロック | ||
---|---|---|
| ||
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 |