Parent

Files

Class/Module Index [+]

Quicksearch

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 134
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}:443")
  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 => '/etc/chef-server/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
  @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-server/chef-validator.pem')
  @validation_key         = File.expand_path(@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.expand_path(@new_client_key)
end
ask_user_for_config_path() click to toggle source
# File lib/chef/knife/configure.rb, line 125
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.expand_path(config[:config_file])
  if File.exists?(config[:config_file])
    confirm("Overwrite #{config[:config_file]}")
  end
end
chef_config_path() click to toggle source
# File lib/chef/knife/configure.rb, line 166
def chef_config_path
  File.dirname(config_file)
end
config_file() click to toggle source
# File lib/chef/knife/configure.rb, line 162
def config_file
  config[:config_file]
end
configure_chef() click to toggle source
# File lib/chef/knife/configure.rb, line 62
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
# File lib/chef/knife/configure.rb, line 154
def guess_servername
  o = Ohai::System.new
  o.load_plugins
  o.require_plugin 'os'
  o.require_plugin 'hostname'
  o[:fqdn] || o[:machinename] || o[:hostname] || 'localhost'
end
run() click to toggle source
# File lib/chef/knife/configure.rb, line 69
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 log_level                :infolog_location             STDOUTnode_name                '#{new_client_name}'client_key               '#{new_client_key}'validation_client_name   '#{validation_client_name}'validation_key           '#{validation_key}'chef_server_url          '#{chef_server}'syntax_check_cache_path  '#{File.join(chef_config_path, "syntax_check_cache")}'
    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
    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("*****")
    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

[Validate]

Generated with the Darkfish Rdoc Generator 2.