Module: KnifeHitori::InteractiveConfigure

Included in:
Chef::Knife::HitoriConfig, Chef::Knife::HitoriPrepare
Defined in:
lib/knife-hitori/lib/interactive_configure.rb

Instance Method Summary collapse

Instance Method Details

#ask_ec2_config_all(knife, runtime = false) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/knife-hitori/lib/interactive_configure.rb', line 5

def ask_ec2_config_all(knife, runtime=false)
  config = {}
  config[:aws_access_key_id] = input_arg('aws_access_key_id', knife[:aws_access_key_id], ENV['AWS_ACCESS_KEY_ID']) unless runtime
  config[:aws_secret_access_key] = input_arg('aws_secret_access_key', knife[:aws_secret_access_key], ENV['AWS_SECRET_ACCESS_KEY']) unless runtime
  config[:image] = input_arg('ami image', knife[:image], ENV['EC2_AMI_IMAGE'])
  config[:flavor] = input_arg('flavor', knife[:flavor], ENV['EC2_FLAVOR'], 'm1.small')
  config[:security_groups] = input_arg('Security Group', knife[:security_groups], ENV['EC2_SECURITY_GROUP'], 'default')
  config[:ssh_user] = input_arg('ssh_user', knife[:ssh_user], ENV['EC2_SSH_USER'], 'ec2-user')
  config[:identity_file] = k = input_arg('identity_file(*.pem)', knife[:identity_file], ENV['EC2_PRIVATE_KEY'])
  config[:aws_ssh_key_id] = input_arg('ssh_key_name', knife[:aws_ssh_key_id], ENV['EC2_SSH_KEY'], File.basename(k || '').sub(/\.pem$/, ''))
  config[:availability_zone] = input_arg('availability_zone', knife[:availability_zone], ENV['EC2_AVAILABILITY_ZONE'])
  config[:region] = input_arg('region', knife[:region], config[:availability_zone][0...-1], ENV['EC2_REGION'])
  config[:identity_file] = File.absolute_path(config[:identity_file]) if config[:identity_file]
  config[:template_file] = knife[:template_file] if runtime
  config[:ssh_port] = knife[:ssh_port] if runtime
  config
end

#input_arg(message, *defaults) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
# File 'lib/knife-hitori/lib/interactive_configure.rb', line 23

def input_arg(message, *defaults)
  input = nil
  default = defaults.select { |x| !x.to_s.empty? }.first
  while true
    print "#{message} [#{default}] ? "
    input = STDIN.gets.strip
    input = input.empty? ? default : input
    break if not block_given? or yield(input)
  end
  input
end