class Chef::Knife::Configure
Attributes
admin_client_key[R]
admin_client_name[R]
chef_repo[R]
chef_server[R]
new_client_key[R]
new_client_name[R]
validation_client_name[R]
validation_key[R]
Public Instance Methods
ask_user_for_config()
click to toggle source
# File lib/chef/knife/configure.rb, line 114 def ask_user_for_config server_name = guess_servername @chef_server = config[:chef_server_url] || ask_question("Please enter the chef server URL: ", default: "https://#{server_name}/organizations/myorg") if config[:initial] @new_client_name = config[:node_name] || ask_question("Please enter a name for the new user: ", default: Etc.getlogin) @admin_client_name = config[:admin_client_name] || ask_question("Please enter the existing admin name: ", default: "admin") @admin_client_key = config[:admin_client_key] || ask_question("Please enter the location of the existing admin's private key: ", default: "#{Chef::Dist::SERVER_CONF_DIR}/admin.pem") @admin_client_key = File.expand_path(@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 @new_client_key = config[:client_key] || File.join(chef_config_path, "#{@new_client_name}.pem") @new_client_key = File.expand_path(@new_client_key) end
chef_config_path()
click to toggle source
@return [String] the path to the user's .chef directory
# File lib/chef/knife/configure.rb, line 138 def chef_config_path @chef_config_path ||= Chef::Util::PathHelper.home(".chef") end
config_file_path()
click to toggle source
@return [String] the full path to the config file (credential file)
# File lib/chef/knife/configure.rb, line 143 def config_file_path @config_file_path ||= ::File.expand_path(::File.join(chef_config_path, "credentials")) end
configure_chef()
click to toggle source
Calls superclass method
Chef::Knife#configure_chef
# File lib/chef/knife/configure.rb, line 64 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()
click to toggle source
@return [String] our best guess at what the servername should be using Ohai data and falling back to localhost
# File lib/chef/knife/configure.rb, line 131 def guess_servername o = Ohai::System.new o.all_plugins(%w{ os hostname fqdn }) o[:fqdn] || o[:machinename] || o[:hostname] || "localhost" end
run()
click to toggle source
# File lib/chef/knife/configure.rb, line 71 def run FileUtils.mkdir_p(chef_config_path) ask_user_for_config confirm("Overwrite #{config_file_path}") if ::File.exist?(config_file_path) ::File.open(config_file_path, "w") do |f| f.puts <<~EOH [default] client_name = '#{new_client_name}' client_key = '#{new_client_key}' chef_server_url = '#{chef_server}' EOH 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 user_create = Chef::Knife::UserCreate.new user_create.name_args = [ new_client_name ] user_create.config[:user_password] = config[:user_password] || ui.ask("Please enter a password for the new user: ") { |q| q.echo = false } user_create.config[:admin] = true user_create.config[:file] = new_client_key user_create.config[:yes] = true user_create.config[:disable_editing] = true user_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("*****") end ui.msg("Knife configuration file written to #{config_file_path}") end