Class: Chef::Knife::Configure
- Inherits:
-
Chef::Knife
- Object
- Chef::Knife
- Chef::Knife::Configure
- Defined in:
- lib/chef/knife/configure.rb
Instance Attribute Summary collapse
-
#admin_client_key ⇒ Object
readonly
Returns the value of attribute admin_client_key.
-
#admin_client_name ⇒ Object
readonly
Returns the value of attribute admin_client_name.
-
#chef_repo ⇒ Object
readonly
Returns the value of attribute chef_repo.
-
#chef_server ⇒ Object
readonly
Returns the value of attribute chef_server.
-
#new_client_key ⇒ Object
readonly
Returns the value of attribute new_client_key.
-
#new_client_name ⇒ Object
readonly
Returns the value of attribute new_client_name.
-
#validation_client_name ⇒ Object
readonly
Returns the value of attribute validation_client_name.
-
#validation_key ⇒ Object
readonly
Returns the value of attribute validation_key.
Attributes inherited from Chef::Knife
Instance Method Summary collapse
- #ask_user_for_config ⇒ Object
- #ask_user_for_config_path ⇒ Object
- #chef_config_path ⇒ Object
- #config_file ⇒ Object
- #configure_chef ⇒ Object
- #guess_servername ⇒ Object
- #run ⇒ Object
Methods inherited from Chef::Knife
#api_key, category, common_name, #create_object, #delete_object, deps, #format_rest_error, guess_category, #highlight_config_error, #humanize_exception, #humanize_http_exception, inherited, #initialize, list_commands, load_commands, load_deps, msg, #noauth_rest, #parse_options, #read_config_file, reset_subcommands!, #rest, run, #run_with_pretty_exceptions, #server_url, #show_usage, snake_case_name, subcommand_category, subcommand_class_from, subcommand_loader, subcommands, subcommands_by_category, ui, unnamed?, #username
Methods included from Mixin::ConvertToClassName
#convert_to_class_name, #convert_to_snake_case, #filename_to_qualified_string, #snake_case_basename
Methods included from Mixin::PathSanity
Constructor Details
This class inherits a constructor from Chef::Knife
Instance Attribute Details
#admin_client_key ⇒ Object (readonly)
Returns the value of attribute admin_client_key.
24 25 26 |
# File 'lib/chef/knife/configure.rb', line 24 def admin_client_key @admin_client_key end |
#admin_client_name ⇒ Object (readonly)
Returns the value of attribute admin_client_name.
24 25 26 |
# File 'lib/chef/knife/configure.rb', line 24 def admin_client_name @admin_client_name end |
#chef_repo ⇒ Object (readonly)
Returns the value of attribute chef_repo.
25 26 27 |
# File 'lib/chef/knife/configure.rb', line 25 def chef_repo @chef_repo end |
#chef_server ⇒ Object (readonly)
Returns the value of attribute chef_server.
24 25 26 |
# File 'lib/chef/knife/configure.rb', line 24 def chef_server @chef_server end |
#new_client_key ⇒ Object (readonly)
Returns the value of attribute new_client_key.
25 26 27 |
# File 'lib/chef/knife/configure.rb', line 25 def new_client_key @new_client_key end |
#new_client_name ⇒ Object (readonly)
Returns the value of attribute new_client_name.
24 25 26 |
# File 'lib/chef/knife/configure.rb', line 24 def new_client_name @new_client_name end |
#validation_client_name ⇒ Object (readonly)
Returns the value of attribute validation_client_name.
25 26 27 |
# File 'lib/chef/knife/configure.rb', line 25 def validation_client_name @validation_client_name end |
#validation_key ⇒ Object (readonly)
Returns the value of attribute validation_key.
25 26 27 |
# File 'lib/chef/knife/configure.rb', line 25 def validation_key @validation_key end |
Instance Method Details
#ask_user_for_config ⇒ Object
132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 |
# File 'lib/chef/knife/configure.rb', line 132 def ask_user_for_config server_name = guess_servername @chef_server = config[:chef_server_url] || ask_question("Please enter the chef server URL: ", :default => "http://#{server_name}:4000") if config[:initial] @new_client_name = config[:node_name] || ask_question("Please enter a clientname for the new client: ", :default => Etc.getlogin) @admin_client_name = config[:admin_client_name] || ask_question("Please enter the existing admin clientname: ", :default => 'chef-webui') @admin_client_key = config[:admin_client_key] || ask_question("Please enter the location of the existing admin client's private key: ", :default => '/etc/chef/webui.pem') @admin_client_key = File.(@admin_client_key) else @new_client_name = config[:node_name] || ask_question("Please enter an existing username or clientname for the API: ", :default => Etc.getlogin) end @validation_client_name = config[:validation_client_name] || ask_question("Please enter the validation clientname: ", :default => 'chef-validator') @validation_key = config[:validation_key] || ask_question("Please enter the location of the validation key: ", :default => '/etc/chef/validation.pem') @validation_key = File.(@validation_key) @chef_repo = config[:repository] || ask_question("Please enter the path to a chef repository (or leave blank): ") @new_client_key = config[:client_key] || File.join(chef_config_path, "#{@new_client_name}.pem") @new_client_key = File.(@new_client_key) end |
#ask_user_for_config_path ⇒ Object
123 124 125 126 127 128 129 130 |
# File 'lib/chef/knife/configure.rb', line 123 def ask_user_for_config_path config[:config_file] ||= ask_question("Where should I put the config file? ", :default => "#{Chef::Config[:user_home]}/.chef/knife.rb") # have to use expand path to expand the tilde character to the user's home config[:config_file] = File.(config[:config_file]) if File.exists?(config[:config_file]) confirm("Overwrite #{config[:config_file]}") end end |
#chef_config_path ⇒ Object
163 164 165 |
# File 'lib/chef/knife/configure.rb', line 163 def chef_config_path File.dirname(config_file) end |
#config_file ⇒ Object
159 160 161 |
# File 'lib/chef/knife/configure.rb', line 159 def config_file config[:config_file] end |
#configure_chef ⇒ Object
61 62 63 64 65 66 |
# File 'lib/chef/knife/configure.rb', line 61 def configure_chef # We are just faking out the system so that you can do this without a key specified Chef::Config[:node_name] = 'woot' super Chef::Config[:node_name] = nil end |
#guess_servername ⇒ Object
152 153 154 155 156 157 |
# File 'lib/chef/knife/configure.rb', line 152 def guess_servername o = Ohai::System.new o.require_plugin 'os' o.require_plugin 'hostname' o[:fqdn] || 'localhost' end |
#run ⇒ Object
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
# File 'lib/chef/knife/configure.rb', line 68 def run ask_user_for_config_path FileUtils.mkdir_p(chef_config_path) ask_user_for_config ::File.open(config[:config_file], "w") do |f| f.puts <<-EOH log_level :info log_location STDOUT node_name '#{new_client_name}' client_key '#{new_client_key}' validation_client_name '#{validation_client_name}' validation_key '#{validation_key}' chef_server_url '#{chef_server}' cache_type 'BasicFile' cache_options( :path => '#{File.join(chef_config_path, "checksums")}' ) EOH unless chef_repo.empty? f.puts "cookbook_path [ '#{chef_repo}/cookbooks' ]" end end if config[:initial] ui.msg("Creating initial API user...") Chef::Config[:chef_server_url] = chef_server Chef::Config[:node_name] = admin_client_name Chef::Config[:client_key] = admin_client_key client_create = Chef::Knife::ClientCreate.new client_create.name_args = [ new_client_name ] client_create.config[:admin] = true client_create.config[:file] = new_client_key client_create.config[:yes] = true client_create.config[:disable_editing] = true client_create.run else ui.msg("*****") ui.msg("") ui.msg("You must place your client key in:") ui.msg(" #{new_client_key}") ui.msg("Before running commands with Knife!") ui.msg("") ui.msg("*****") ui.msg("") ui.msg("You must place your validation key in:") ui.msg(" #{validation_key}") ui.msg("Before generating instance data with Knife!") ui.msg("") ui.msg("*****") end ui.msg("Configuration file written to #{config[:config_file]}") end |