2013-01-14 00:41:32 +00:00
|
|
|
require File.expand_path("../base", __FILE__)
|
|
|
|
|
2013-08-29 18:36:37 +00:00
|
|
|
require "vagrant/util/which"
|
|
|
|
|
2013-01-14 00:41:32 +00:00
|
|
|
module VagrantPlugins
|
|
|
|
module Chef
|
|
|
|
module Config
|
|
|
|
class ChefClient < Base
|
|
|
|
attr_accessor :chef_server_url
|
|
|
|
attr_accessor :client_key_path
|
2013-08-29 17:50:50 +00:00
|
|
|
attr_accessor :delete_client
|
|
|
|
attr_accessor :delete_node
|
2013-01-14 00:41:32 +00:00
|
|
|
attr_accessor :encrypted_data_bag_secret_key_path
|
|
|
|
attr_accessor :encrypted_data_bag_secret
|
2013-04-15 19:08:08 +00:00
|
|
|
attr_accessor :environment
|
|
|
|
attr_accessor :validation_key_path
|
|
|
|
attr_accessor :validation_client_name
|
|
|
|
|
|
|
|
def initialize
|
|
|
|
super
|
|
|
|
|
|
|
|
@chef_server_url = UNSET_VALUE
|
|
|
|
@client_key_path = UNSET_VALUE
|
2013-08-29 17:50:50 +00:00
|
|
|
@delete_client = UNSET_VALUE
|
|
|
|
@delete_node = UNSET_VALUE
|
2013-04-15 19:08:08 +00:00
|
|
|
@encrypted_data_bag_secret_key_path = UNSET_VALUE
|
|
|
|
@encrypted_data_bag_secret = UNSET_VALUE
|
|
|
|
@environment = UNSET_VALUE
|
|
|
|
@validation_key_path = UNSET_VALUE
|
|
|
|
@validation_client_name = UNSET_VALUE
|
|
|
|
end
|
|
|
|
|
|
|
|
def finalize!
|
|
|
|
super
|
2013-01-14 00:41:32 +00:00
|
|
|
|
2013-04-16 22:07:37 +00:00
|
|
|
@chef_server_url = nil if @chef_server_url == UNSET_VALUE
|
2013-04-15 19:08:08 +00:00
|
|
|
@client_key_path = "/etc/chef/client.pem" if @client_key_path == UNSET_VALUE
|
2013-08-29 18:27:00 +00:00
|
|
|
@delete_client = false if @delete_client == UNSET_VALUE
|
|
|
|
@delete_node = false if @delete_node == UNSET_VALUE
|
2013-04-16 22:07:37 +00:00
|
|
|
@encrypted_data_bag_secret_key_path = nil if @encrypted_data_bag_secret_key_path == UNSET_VALUE
|
2013-04-22 15:43:20 +00:00
|
|
|
@encrypted_data_bag_secret = "/tmp/encrypted_data_bag_secret" if @encrypted_data_bag_secret == UNSET_VALUE
|
2013-04-16 22:07:37 +00:00
|
|
|
@environment = nil if @environment == UNSET_VALUE
|
2013-04-15 19:08:08 +00:00
|
|
|
@validation_client_name = "chef-validator" if @validation_client_name == UNSET_VALUE
|
2013-04-16 22:07:37 +00:00
|
|
|
@validation_key_path = nil if @validation_key_path == UNSET_VALUE
|
2013-04-15 19:08:08 +00:00
|
|
|
end
|
2013-01-14 00:41:32 +00:00
|
|
|
|
2013-01-18 21:12:02 +00:00
|
|
|
def validate(machine)
|
2013-04-03 23:18:37 +00:00
|
|
|
errors = _detected_errors
|
2013-07-11 02:31:52 +00:00
|
|
|
errors.concat(validate_base(machine))
|
2013-01-18 21:12:02 +00:00
|
|
|
errors << I18n.t("vagrant.config.chef.server_url_empty") if \
|
|
|
|
!chef_server_url || chef_server_url.strip == ""
|
|
|
|
errors << I18n.t("vagrant.config.chef.validation_key_path") if \
|
|
|
|
!validation_key_path
|
2013-01-14 00:41:32 +00:00
|
|
|
|
2013-08-29 18:36:37 +00:00
|
|
|
if delete_client || delete_node
|
|
|
|
if !Vagrant::Util::Which.which("knife")
|
|
|
|
errors << I18n.t("vagrant.chef_config_knife_not_found")
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2013-01-18 21:12:02 +00:00
|
|
|
{ "chef client provisioner" => errors }
|
2013-01-14 00:41:32 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|