veronic 0.0.14 → 0.0.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/lib/config/config.rb CHANGED
@@ -6,36 +6,36 @@ module Veronic
6
6
  config_file = File.exists?('/etc/veronic/veronic.yml') ? '/etc/veronic/veronic.yml' : '../../' + File.dirname($0) + '/veronic.yml'
7
7
  config_from_file = YAML.load_file(options[:config_file] || config_file)
8
8
 
9
- @dnsprovider = :route53
10
- @cloudprovider = :ec2
11
- @configprovider = :chefserver
12
- @dnsprovider_access_key_id = options[:dnsprovider_access_key_id] || config_from_file['dnsprovider_access_key_id']
13
- @dnsprovider_secret_access_key = options[:dnsprovider_secret_access_key] || config_from_file['dnsprovider_secret_access_key']
14
- @dnsprovider_zones = options[:dnsprovider_zones] || config_from_file['dnsprovider_zones']
15
- @cloudprovider_access_key_id = options[:cloudprovider_access_key_id] || config_from_file['cloudprovider_access_key_id']
16
- @cloudprovider_secret_access_key = options[:cloudprovider_secret_access_key] || config_from_file['cloudprovider_secret_access_key']
17
- @cloudprovider_images_owner_id = options[:cloudprovider_images_owner_id] || config_from_file['cloudprovider_images_owner_id']
18
- @region = options[:region] || config_from_file['region']
19
- @availability_zone = options[:availability_zone] || config_from_file['availability_zone']
20
- @aws_ssh_key_id = options[:aws_ssh_key_id] || config_from_file['aws_ssh_key_id']
21
- @node_name = options[:node_name] || config_from_file['node_name']
22
- @client_key = options[:client_key] || config_from_file['client_key']
23
- @validation_client_name = options[:validation_client_name] || config_from_file['validation_client_name']
24
- @validation_key = options[:validation_key] || config_from_file['validation_key']
25
- @chef_server_url = options[:chef_server_url] || config_from_file['chef_server_url']
26
- @ssl_version = options[:ssl_version] || config_from_file['ssl_version']
27
- @identity_file = options[:identity_file] || config_from_file['identity_file']
28
- @branch = options[:branch] || config_from_file['branch']
29
- @environment = options[:environment] || config_from_file['environment']
30
- @ssh_user = options[:ssh_user] || config_from_file['ssh_user'] || 'ubuntu'
31
- @ssh_port = options[:ssh_port] || config_from_file['ssh_port'] || 22
32
- @role = options[:role] || config_from_file['role']
33
- @flavor = options[:flavor] || config_from_file['flavor'] || 'm1.medium'
34
- @security_groups = [options[:security_groups]] || [config_from_file['security_groups']]
35
- @deploy_cmd = options[:deploy_cmd] || config_from_file['deploy_cmd'] || 'sudo chef-client'
36
- @name = (options[:branch] || config_from_file['branch']) ? (options[:branch] || config_from_file['branch']) : (options[:name] || config_from_file['name'])
37
- @image = options[:ami_image] || config_from_file['ami_image']
38
- @verbose = options[:verbose] || config_from_file['verbose']
9
+ @dnsprovider = :route53
10
+ @cloudprovider = :ec2
11
+ @configprovider = :chefserver
12
+ @dnsprovider_access_key_id = options[:dnsprovider_access_key_id] || config_from_file['dnsprovider_access_key_id']
13
+ @dnsprovider_secret_access_key = options[:dnsprovider_secret_access_key] || config_from_file['dnsprovider_secret_access_key']
14
+ @dnsprovider_zones = options[:dnsprovider_zones] || config_from_file['dnsprovider_zones']
15
+ @cloudprovider_access_key_id = options[:cloudprovider_access_key_id] || config_from_file['cloudprovider_access_key_id']
16
+ @cloudprovider_secret_access_key = options[:cloudprovider_secret_access_key] || config_from_file['cloudprovider_secret_access_key']
17
+ @cloudprovider_images_owner_id = options[:cloudprovider_images_owner_id] || config_from_file['cloudprovider_images_owner_id']
18
+ @region = options[:region] || config_from_file['region']
19
+ @availability_zone = options[:availability_zone] || config_from_file['availability_zone']
20
+ @aws_ssh_key_id = options[:aws_ssh_key_id] || config_from_file['aws_ssh_key_id']
21
+ @node_name = options[:node_name] || config_from_file['node_name']
22
+ @client_key = options[:client_key] || config_from_file['client_key']
23
+ @validation_client_name = options[:validation_client_name] || config_from_file['validation_client_name']
24
+ @validation_key = options[:validation_key] || config_from_file['validation_key']
25
+ @chef_server_url = options[:chef_server_url] || config_from_file['chef_server_url']
26
+ @ssl_version = options[:ssl_version] || config_from_file['ssl_version']
27
+ @identity_file = options[:identity_file] || config_from_file['identity_file']
28
+ @branch = options[:branch] || config_from_file['branch']
29
+ @environment = options[:environment] || config_from_file['environment']
30
+ @ssh_user = options[:ssh_user] || config_from_file['ssh_user'] || 'ubuntu'
31
+ @ssh_port = options[:ssh_port] || config_from_file['ssh_port'] || 22
32
+ @role = options[:role] || config_from_file['role']
33
+ @flavor = options[:flavor] || config_from_file['flavor'] || 'm1.medium'
34
+ @security_groups = [options[:security_groups]] || [config_from_file['security_groups']]
35
+ @deploy_cmd = options[:deploy_cmd] || config_from_file['deploy_cmd'] || 'sudo chef-client'
36
+ @name = (options[:branch] || config_from_file['branch']) ? (options[:branch] || config_from_file['branch']) : (options[:name] || config_from_file['name'])
37
+ @image = options[:ami_image] || config_from_file['ami_image']
38
+ @verbose = options[:verbose] || config_from_file['verbose']
39
39
  end
40
40
 
41
41
  def to_hash
@@ -25,16 +25,16 @@ module Provider
25
25
  class ChefServer
26
26
 
27
27
  def initialize(config)
28
- @path = File.dirname($0)
29
- @config = config
30
- Chef::Config[:environment] = config[:environment]
31
- Chef::Config[:node_name] = config[:node_name]
32
- Chef::Config[:client_key] = config[:client_key]
33
- Chef::Config[:validation_client_name] = config[:validation_client_name]
34
- Chef::Config[:validation_key] = config[:validation_key]
35
- Chef::Config[:chef_server_url] = config[:chef_server_url]
36
- Chef::Config[:ssl_version] = config[:ssl_version]
37
- Chef::Config[:log_level] = config[:verbose]
28
+ @path = File.dirname($0)
29
+ @config = config
30
+ Chef::Config[:environment] = config[:environment]
31
+ Chef::Config[:node_name] = config[:node_name]
32
+ Chef::Config[:client_key] = config[:client_key]
33
+ Chef::Config[:validation_client_name] = config[:validation_client_name]
34
+ Chef::Config[:validation_key] = config[:validation_key]
35
+ Chef::Config[:chef_server_url] = config[:chef_server_url]
36
+ Chef::Config[:ssl_version] = config[:ssl_version]
37
+ Chef::Config[:log_level] = config[:verbose]
38
38
  @knife = knife
39
39
  end
40
40
 
@@ -3,28 +3,28 @@ module Provider
3
3
  class Instance
4
4
 
5
5
  def initialize(config)
6
- @access_key_id = config[:cloudprovider_access_key_id]
7
- @secret_access_key = config[:cloudprovider_secret_access_key]
8
- @name = config[:name]
9
- @image = config[:image]
10
- @security_groups = config[:security_groups]
11
- @ssh_user = config[:ssh_user]
12
- @ssh_port = config[:ssh_port]
13
- @identity_file = config[:identity_file]
14
- @aws_ssh_key_id = config[:aws_ssh_key_id]
15
- @environment = config[:environment]
16
- @roles = "role[#{config[:role]}]"
17
- @flavor = config[:flavor]
18
- @region = config[:region]
19
- @availability_zone = config[:availability_zone]
20
- @verbose = config[:verbose]
21
- Chef::Config[:knife][:image] = @image
22
- Chef::Config[:knife][:aws_ssh_key_id] = @aws_ssh_key_id
23
- Chef::Config[:knife][:aws_access_key_id] = @access_key_id
24
- Chef::Config[:knife][:aws_secret_access_key] = @secret_access_key
25
- Chef::Config[:knife][:region] = @region
26
- Chef::Config[:knife][:availability_zone] = @availability_zone
27
- Chef::Config[:knife][:log_level] = :debug
6
+ @access_key_id = config[:cloudprovider_access_key_id]
7
+ @secret_access_key = config[:cloudprovider_secret_access_key]
8
+ @name = config[:name]
9
+ @image = config[:image]
10
+ @security_groups = config[:security_groups]
11
+ @ssh_user = config[:ssh_user]
12
+ @ssh_port = config[:ssh_port]
13
+ @identity_file = config[:identity_file]
14
+ @aws_ssh_key_id = config[:aws_ssh_key_id]
15
+ @environment = config[:environment]
16
+ @roles = "role[#{config[:role]}]"
17
+ @flavor = config[:flavor]
18
+ @region = config[:region]
19
+ @availability_zone = config[:availability_zone]
20
+ @verbose = config[:verbose]
21
+ Chef::Config[:knife][:image] = @image
22
+ Chef::Config[:knife][:aws_ssh_key_id] = @aws_ssh_key_id
23
+ Chef::Config[:knife][:aws_access_key_id] = @access_key_id
24
+ Chef::Config[:knife][:aws_secret_access_key] = @secret_access_key
25
+ Chef::Config[:knife][:region] = @region
26
+ Chef::Config[:knife][:availability_zone] = @availability_zone
27
+ Chef::Config[:knife][:log_level] = @verbose
28
28
  end
29
29
 
30
30
  def create
@@ -32,16 +32,16 @@ module Provider
32
32
 
33
33
  node = Chef::Knife::Ec2ServerCreate.new()
34
34
 
35
- node.config[:run_list] = [@roles]
36
- node.config[:image] = @image
37
- node.config[:flavor] = @flavor
38
- node.config[:security_groups] = @security_groups
39
- node.config[:ssh_user] = @ssh_user
40
- node.config[:ssh_port] = @ssh_port
41
- node.config[:chef_node_name] = @name
42
- node.config[:identity_file] = @identity_file
43
- node.config[:environment] = @environment
44
- node.config[:log_level] = @verbose
35
+ node.config[:run_list] = [@roles]
36
+ node.config[:image] = @image
37
+ node.config[:flavor] = @flavor
38
+ node.config[:security_groups] = @security_groups
39
+ node.config[:ssh_user] = @ssh_user
40
+ node.config[:ssh_port] = @ssh_port
41
+ node.config[:chef_node_name] = @name
42
+ node.config[:identity_file] = @identity_file
43
+ node.config[:environment] = @environment
44
+ node.config[:log_level] = @verbose
45
45
 
46
46
  puts node.config
47
47
  node.run
@@ -52,22 +52,22 @@ module Provider
52
52
 
53
53
  node = Chef::Knife::Ec2ServerCreate.new()
54
54
 
55
- node.config[:image] = @image
56
- node.config[:flavor] = @flavor
57
- node.config[:security_groups] = @security_groups
58
- node.config[:ssh_user] = @ssh_user
59
- node.config[:ssh_port] = @ssh_port
60
- node.config[:chef_node_name] = @name
61
- node.config[:identity_file] = @identity_file
62
- node.config[:environment] = @environment
63
- node.config[:log_level] = @verbose
55
+ node.config[:image] = @image
56
+ node.config[:flavor] = @flavor
57
+ node.config[:security_groups] = @security_groups
58
+ node.config[:ssh_user] = @ssh_user
59
+ node.config[:ssh_port] = @ssh_port
60
+ node.config[:chef_node_name] = @name
61
+ node.config[:identity_file] = @identity_file
62
+ node.config[:environment] = @environment
63
+ node.config[:log_level] = @verbose
64
64
 
65
65
  puts node.config
66
66
  begin
67
67
  node.run
68
68
  rescue
69
69
  puts "Creation of #{@name} failed"
70
- self.destroy([node.server.id])
70
+ self.destroy([node.server.id]) if node.server
71
71
  self.bootstrap(recursive_count+=1) if recursive_count < 3
72
72
  end
73
73
  end
@@ -77,10 +77,10 @@ module Provider
77
77
 
78
78
  node = Chef::Knife::Ec2ServerDelete.new()
79
79
 
80
- node.config[:purge] = true
81
- node.config[:chef_node_name] = @name
82
- node.config[:yes] = true
83
- node.name_args = instance_ids
80
+ node.config[:purge] = true
81
+ node.config[:chef_node_name] = @name
82
+ node.config[:yes] = true
83
+ node.name_args = instance_ids
84
84
 
85
85
  puts node.config
86
86
  node.run
@@ -106,10 +106,10 @@ module Provider
106
106
  def ssh(query, cmd_line, manual)
107
107
  knife_ssh = Chef::Knife::Ssh.new()
108
108
 
109
- knife_ssh.config[:manual] = manual
110
- knife_ssh.config[:ssh_user] = @ssh_user
111
- knife_ssh.config[:identity_file] = @identity_file
112
- knife_ssh.config[:log_level] = @verbose
109
+ knife_ssh.config[:manual] = manual
110
+ knife_ssh.config[:ssh_user] = @ssh_user
111
+ knife_ssh.config[:identity_file] = @identity_file
112
+ knife_ssh.config[:log_level] = @verbose
113
113
 
114
114
  knife_ssh.name_args = [query, cmd_line]
115
115
  sys_status = knife_ssh.run
@@ -6,12 +6,13 @@ module Provider
6
6
  class Ec2
7
7
 
8
8
  def initialize(config)
9
- @name = config[:name]
10
- @environment = config[:environment]
11
- @access_key_id = config[:cloudprovider_access_key_id]
12
- @secret_access_key = config[:cloudprovider_secret_access_key]
13
- @owner_id = config[:cloudprovider_images_owner_id]
14
- @ec2 = ec2
9
+ @name = config[:name]
10
+ @region = config[:region]
11
+ @environment = config[:environment]
12
+ @access_key_id = config[:cloudprovider_access_key_id]
13
+ @secret_access_key = config[:cloudprovider_secret_access_key]
14
+ @owner_id = config[:cloudprovider_images_owner_id]
15
+ @ec2 = ec2
15
16
  end
16
17
 
17
18
  def image(name=nil)
@@ -29,7 +30,7 @@ module Provider
29
30
  end
30
31
 
31
32
  def ec2
32
- AWS::EC2.new(:access_key_id => @access_key_id, :secret_access_key => @secret_access_key)
33
+ AWS::EC2.new(:access_key_id => @access_key_id, :secret_access_key => @secret_access_key, :region => @region)
33
34
  end
34
35
 
35
36
  end
@@ -36,25 +36,26 @@ module Provider
36
36
  end
37
37
 
38
38
  def get_image
39
- images = @ec2.images
40
- my_image = images.with_owner(@owner_id).select {|x| x.name == @ami_name}.first
41
- unless my_image
42
- my_image = images[@name]
43
- unless my_image.exists?
44
- return false
45
- end
46
- else
47
- while my_image.exists? == false && my_image.state != :failed
48
- print "."
49
- sleep 1
50
- end
51
- while my_image.state == :pending && my_image.state != :failed
52
- print "."
53
- sleep 1
39
+ AWS.memoize do
40
+ my_image = @ec2.images.with_owner(@owner_id).select {|x| x.name == @ami_name}.first
41
+ unless my_image
42
+ my_image = @ec2.images[@ami_name]
43
+ unless my_image.exists?
44
+ return false
45
+ end
46
+ else
47
+ while my_image.exists? == false && my_image.state != :failed
48
+ print "."
49
+ sleep 1
50
+ end
51
+ while my_image.state == :pending && my_image.state != :failed
52
+ print "."
53
+ sleep 1
54
+ end
55
+ puts ""
54
56
  end
55
- puts ""
57
+ return my_image
56
58
  end
57
- return my_image
58
59
  end
59
60
 
60
61
  end
data/lib/veronic.rb CHANGED
@@ -44,7 +44,7 @@ module Veronic
44
44
  def deploy_stacks
45
45
  bootstrap
46
46
  query = cloudprovider.instance.dns_name
47
- deploy_cmd = 'sudo chef-client -l debug'
47
+ deploy_cmd = "sudo chef-client #{@config.verbose ? '-l ' + @config.verbose : ''}"
48
48
  manual = true
49
49
  configprovider.ssh(query, deploy_cmd, manual)
50
50
  end
data/veronic.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'veronic'
3
- s.version = '0.0.14'
3
+ s.version = '0.0.15'
4
4
  s.date = '2013-04-05'
5
5
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
6
6
  s.summary = "Veronic, a simple cloud deployer"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: veronic
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.14
4
+ version: 0.0.15
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -128,3 +128,4 @@ signing_key:
128
128
  specification_version: 3
129
129
  summary: Veronic, a simple cloud deployer
130
130
  test_files: []
131
+ has_rdoc: