veronic 0.0.22 → 0.0.23
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/Gemfile +1 -1
- data/Gemfile.lock +87 -0
- data/bin/veronic +41 -0
- data/lib/config/config.rb +7 -7
- data/lib/providers/chefserver/chefserver.rb +3 -4
- data/lib/providers/ec2/ec2.rb +1 -1
- data/lib/providers/ec2/image.rb +12 -10
- data/lib/providers/ec2/instance.rb +6 -7
- data/lib/veronic.rb +15 -11
- data/veronic.gemspec +1 -1
- metadata +2 -1
data/Gemfile
CHANGED
data/Gemfile.lock
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
GEM
|
|
2
|
+
remote: https://rubygems.org/
|
|
3
|
+
specs:
|
|
4
|
+
aws-sdk (1.11.2)
|
|
5
|
+
json (~> 1.4)
|
|
6
|
+
nokogiri (< 1.6.0)
|
|
7
|
+
uuidtools (~> 2.1)
|
|
8
|
+
builder (3.2.2)
|
|
9
|
+
chef (11.4.4)
|
|
10
|
+
erubis
|
|
11
|
+
highline (>= 1.6.9)
|
|
12
|
+
json (>= 1.4.4, <= 1.7.7)
|
|
13
|
+
mixlib-authentication (>= 1.3.0)
|
|
14
|
+
mixlib-cli (~> 1.3.0)
|
|
15
|
+
mixlib-config (>= 1.1.2)
|
|
16
|
+
mixlib-log (>= 1.3.0)
|
|
17
|
+
mixlib-shellout
|
|
18
|
+
net-ssh (~> 2.6)
|
|
19
|
+
net-ssh-multi (~> 1.1.0)
|
|
20
|
+
ohai (>= 0.6.0)
|
|
21
|
+
rest-client (>= 1.0.4, < 1.7.0)
|
|
22
|
+
yajl-ruby (~> 1.1)
|
|
23
|
+
erubis (2.7.0)
|
|
24
|
+
excon (0.23.0)
|
|
25
|
+
fog (1.12.1)
|
|
26
|
+
builder
|
|
27
|
+
excon (~> 0.23.0)
|
|
28
|
+
formatador (~> 0.2.0)
|
|
29
|
+
mime-types
|
|
30
|
+
multi_json (~> 1.0)
|
|
31
|
+
net-scp (~> 1.1)
|
|
32
|
+
net-ssh (>= 2.1.3)
|
|
33
|
+
nokogiri (~> 1.5.0)
|
|
34
|
+
ruby-hmac
|
|
35
|
+
formatador (0.2.4)
|
|
36
|
+
highline (1.6.19)
|
|
37
|
+
hpricot (0.8.6)
|
|
38
|
+
ipaddress (0.8.0)
|
|
39
|
+
json (1.7.7)
|
|
40
|
+
knife-ec2 (0.6.4)
|
|
41
|
+
chef (>= 0.10.10)
|
|
42
|
+
fog (~> 1.6)
|
|
43
|
+
mime-types (1.23)
|
|
44
|
+
mixlib-authentication (1.3.0)
|
|
45
|
+
mixlib-log
|
|
46
|
+
mixlib-cli (1.3.0)
|
|
47
|
+
mixlib-config (1.1.2)
|
|
48
|
+
mixlib-log (1.6.0)
|
|
49
|
+
mixlib-shellout (1.1.0)
|
|
50
|
+
multi_json (1.7.6)
|
|
51
|
+
net-scp (1.1.1)
|
|
52
|
+
net-ssh (>= 2.6.5)
|
|
53
|
+
net-ssh (2.6.7)
|
|
54
|
+
net-ssh-gateway (1.2.0)
|
|
55
|
+
net-ssh (>= 2.6.5)
|
|
56
|
+
net-ssh-multi (1.1)
|
|
57
|
+
net-ssh (>= 2.1.4)
|
|
58
|
+
net-ssh-gateway (>= 0.99.0)
|
|
59
|
+
nokogiri (1.5.10)
|
|
60
|
+
ohai (6.16.0)
|
|
61
|
+
ipaddress
|
|
62
|
+
mixlib-cli
|
|
63
|
+
mixlib-config
|
|
64
|
+
mixlib-log
|
|
65
|
+
mixlib-shellout
|
|
66
|
+
systemu
|
|
67
|
+
yajl-ruby
|
|
68
|
+
rest-client (1.6.7)
|
|
69
|
+
mime-types (>= 1.16)
|
|
70
|
+
route53 (0.2.1)
|
|
71
|
+
builder
|
|
72
|
+
hpricot
|
|
73
|
+
ruby-hmac
|
|
74
|
+
ruby-hmac (0.4.0)
|
|
75
|
+
systemu (2.5.2)
|
|
76
|
+
uuidtools (2.1.4)
|
|
77
|
+
yajl-ruby (1.1.0)
|
|
78
|
+
|
|
79
|
+
PLATFORMS
|
|
80
|
+
ruby
|
|
81
|
+
|
|
82
|
+
DEPENDENCIES
|
|
83
|
+
aws-sdk
|
|
84
|
+
chef
|
|
85
|
+
excon (~> 0.23.0)
|
|
86
|
+
knife-ec2
|
|
87
|
+
route53
|
data/bin/veronic
CHANGED
|
@@ -36,6 +36,47 @@ opt_parser = OptionParser.new do |opt|
|
|
|
36
36
|
options[:config_file] = c
|
|
37
37
|
end
|
|
38
38
|
|
|
39
|
+
options[:dnsprovider] = ENV['dnsprovider']
|
|
40
|
+
opt.on("--dnsprovider","--dnsprovider r53","Use specific dnsprovider") do |dns|
|
|
41
|
+
options[:dnsprovider] = dns
|
|
42
|
+
end
|
|
43
|
+
options[:cloudprovider] = ENV['cloudprovider']
|
|
44
|
+
opt.on("--cloudprovider","--cloudprovider ec2","Use specific cloudprovider") do |cloud|
|
|
45
|
+
options[:cloudprovider] = cloud
|
|
46
|
+
end
|
|
47
|
+
options[:configprovider] = ENV['configprovider']
|
|
48
|
+
opt.on("--configprovider","--configprovider chef","Use specific configprovider") do |config|
|
|
49
|
+
options[:configprovider] = config
|
|
50
|
+
end
|
|
51
|
+
options[:dnsprovider_access_key_id] = ENV['dnsprovider_access_key_id']
|
|
52
|
+
opt.on("--dnsprovider_access_key_id","--dnsprovider_access_key_id","Use specific dnsprovider_access_key_id") do |d|
|
|
53
|
+
options[:dnsprovider_access_key_id] = d
|
|
54
|
+
end
|
|
55
|
+
options[:dnsprovider_secret_access_key] = ENV['dnsprovider_secret_access_key']
|
|
56
|
+
opt.on("--dnsprovider_secret_access_key","--dnsprovider_secret_access_key","Use specific dnsprovider_secret_access_key") do |d|
|
|
57
|
+
options[:dnsprovider_secret_access_key] = d
|
|
58
|
+
end
|
|
59
|
+
options[:dnsprovider_zones] = ENV['dnsprovider_zones']
|
|
60
|
+
opt.on("--dnsprovider_zones","--dnsprovider_zones","Use specific dnsprovider_zones") do |d|
|
|
61
|
+
options[:dnsprovider_zones] = d
|
|
62
|
+
end
|
|
63
|
+
options[:cloudprovider_access_key_id] = ENV['cloudprovider_access_key_id']
|
|
64
|
+
opt.on("--cloudprovider_access_key_id","--cloudprovider_access_key_id","Use specific cloudprovider_access_key_id") do |c|
|
|
65
|
+
options[:cloudprovider_access_key_id] = c
|
|
66
|
+
end
|
|
67
|
+
options[:cloudprovider_secret_access_key] = ENV['cloudprovider_secret_access_key']
|
|
68
|
+
opt.on("--cloudprovider_secret_access_key","--cloudprovider_secret_access_key","Use specific cloudprovider_secret_access_keye") do |c|
|
|
69
|
+
options[:cloudprovider_secret_access_key] = c
|
|
70
|
+
end
|
|
71
|
+
options[:cloudprovider_images_owner_id] = ENV['cloudprovider_images_owner_id']
|
|
72
|
+
opt.on("--cloudprovider_images_owner_id","--cloudprovider_images_owner_id","Use specific cloudprovider_images_owner_id") do |c|
|
|
73
|
+
options[:cloudprovider_images_owner_id] = c
|
|
74
|
+
end
|
|
75
|
+
options[:region] = ENV['region']
|
|
76
|
+
opt.on("--region","--region","Use specific region") do |r|
|
|
77
|
+
options[:region] = r
|
|
78
|
+
end
|
|
79
|
+
|
|
39
80
|
options[:environment] = ENV['environment']
|
|
40
81
|
opt.on("-E","--environment ENVIRONMENT","Which environment you want box run") do |e|
|
|
41
82
|
options[:environment] = e
|
data/lib/config/config.rb
CHANGED
|
@@ -3,12 +3,12 @@ module Veronic
|
|
|
3
3
|
attr_accessor :dnsprovider, :cloudprovider, :configprovider, :dnsprovider_access_key_id, :dnsprovider_secret_access_key, :cloudprovider_access_key_id, :cloudprovider_secret_access_key, :cloudprovider_images_owner_id, :dnsprovider_zones, :region, :availability_zone, :aws_ssh_key_id, :node_name, :client_key, :validation_client_name, :validation_key, :chef_server_url, :ssl_version, :identity_file, :branch, :environment, :ssh_user, :ssh_port, :role, :flavor, :security_groups, :deploy_cmd, :name, :image, :zone_name, :zone_url, :verbose, :query
|
|
4
4
|
|
|
5
5
|
def initialize(options={})
|
|
6
|
-
config_file = File.exists?('/etc/veronic/veronic.yml') ? '/etc/veronic/veronic.yml' :
|
|
6
|
+
config_file = File.exists?('/etc/veronic/veronic.yml') ? '/etc/veronic/veronic.yml' : File.exists?('./veronic.yml') ? './veronic.yml' : nil
|
|
7
7
|
config_from_file = YAML.load_file(options[:config_file] || config_file)
|
|
8
8
|
|
|
9
|
-
@dnsprovider = :route53
|
|
10
|
-
@cloudprovider = :ec2
|
|
11
|
-
@configprovider = :chefserver
|
|
9
|
+
@dnsprovider = options[:dnsprovider] || config_from_file['dnsprovider'] || :route53
|
|
10
|
+
@cloudprovider = options[:cloudprovider] || config_from_file['cloudprovider'] || :ec2
|
|
11
|
+
@configprovider = options[:configprovider] || config_from_file['configprovider'] || :chefserver
|
|
12
12
|
@dnsprovider_access_key_id = options[:dnsprovider_access_key_id] || config_from_file['dnsprovider_access_key_id']
|
|
13
13
|
@dnsprovider_secret_access_key = options[:dnsprovider_secret_access_key] || config_from_file['dnsprovider_secret_access_key']
|
|
14
14
|
@dnsprovider_zones = options[:dnsprovider_zones] || config_from_file['dnsprovider_zones']
|
|
@@ -34,9 +34,9 @@ module Veronic
|
|
|
34
34
|
@security_groups = options[:security_groups].split(',') || config_from_file['security_groups'].split(',')
|
|
35
35
|
@deploy_cmd = options[:deploy_cmd] || config_from_file['deploy_cmd'] || 'sudo chef-client'
|
|
36
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]
|
|
38
|
-
@verbose = options[:verbose]
|
|
39
|
-
@query = options[:query]
|
|
37
|
+
@image = options[:ami_image] || config_from_file['ami_image']
|
|
38
|
+
@verbose = options[:verbose] || config_from_file['verbose']
|
|
39
|
+
@query = options[:query] || config_from_file['query']
|
|
40
40
|
end
|
|
41
41
|
|
|
42
42
|
def to_hash
|
|
@@ -32,14 +32,13 @@ module Provider
|
|
|
32
32
|
Chef::Config[:client_key] = config[:client_key]
|
|
33
33
|
Chef::Config[:validation_client_name] = config[:validation_client_name]
|
|
34
34
|
Chef::Config[:validation_key] = config[:validation_key]
|
|
35
|
-
Chef::Config[:chef_server_url] = config[:chef_server_url]
|
|
35
|
+
Chef::Config[:chef_server_url] = config[:chef_server_url] if config[:chef_server_url]
|
|
36
36
|
Chef::Config[:ssl_version] = config[:ssl_version]
|
|
37
37
|
Chef::Config[:log_level] = config[:verbose]
|
|
38
|
-
@knife = knife
|
|
39
38
|
end
|
|
40
39
|
|
|
41
40
|
def knife
|
|
42
|
-
knife = Provider::ChefServer::Instance.new(@config)
|
|
41
|
+
@knife = @knife || Provider::ChefServer::Instance.new(@config)
|
|
43
42
|
end
|
|
44
43
|
|
|
45
44
|
def instances(query)
|
|
@@ -55,7 +54,7 @@ module Provider
|
|
|
55
54
|
end
|
|
56
55
|
|
|
57
56
|
def ssh(query, deploy_cmd, manual)
|
|
58
|
-
|
|
57
|
+
knife.ssh(query, deploy_cmd, manual)
|
|
59
58
|
end
|
|
60
59
|
|
|
61
60
|
def instance
|
data/lib/providers/ec2/ec2.rb
CHANGED
|
@@ -12,7 +12,7 @@ module Provider
|
|
|
12
12
|
@access_key_id = config[:cloudprovider_access_key_id]
|
|
13
13
|
@secret_access_key = config[:cloudprovider_secret_access_key]
|
|
14
14
|
@owner_id = config[:cloudprovider_images_owner_id]
|
|
15
|
-
@image = config[:image]
|
|
15
|
+
@image = config[:image] || config[:name]
|
|
16
16
|
@ec2 = ec2
|
|
17
17
|
end
|
|
18
18
|
|
data/lib/providers/ec2/image.rb
CHANGED
|
@@ -10,16 +10,16 @@ module Provider
|
|
|
10
10
|
end
|
|
11
11
|
|
|
12
12
|
def id
|
|
13
|
-
if
|
|
14
|
-
|
|
13
|
+
if get_image
|
|
14
|
+
get_image.id
|
|
15
15
|
end
|
|
16
16
|
end
|
|
17
17
|
|
|
18
18
|
def detroy
|
|
19
|
-
puts "Destroying image #{@ami_name}..."
|
|
20
|
-
if
|
|
19
|
+
puts "Destroying image #{@ami_name} ..."
|
|
20
|
+
if get_image
|
|
21
21
|
begin
|
|
22
|
-
|
|
22
|
+
get_image.deregister
|
|
23
23
|
sleep 5
|
|
24
24
|
puts "Image #{@ami_name} destroyed"
|
|
25
25
|
rescue
|
|
@@ -29,17 +29,18 @@ module Provider
|
|
|
29
29
|
return true
|
|
30
30
|
end
|
|
31
31
|
|
|
32
|
-
def
|
|
33
|
-
|
|
34
|
-
@image ||= get_image
|
|
32
|
+
def exists?
|
|
33
|
+
get_image
|
|
35
34
|
end
|
|
36
35
|
|
|
37
36
|
def get_image
|
|
38
|
-
AWS.memoize do
|
|
37
|
+
@get_image || AWS.memoize do
|
|
38
|
+
puts "Getting image #{@ami_name}"
|
|
39
39
|
my_image = @ec2.images.with_owner(@owner_id).select {|x| x.name == @ami_name}.first
|
|
40
40
|
unless my_image
|
|
41
41
|
my_image = @ec2.images[@ami_name]
|
|
42
42
|
unless my_image.exists?
|
|
43
|
+
puts "Unabled to found image #{@ami_name}"
|
|
43
44
|
return false
|
|
44
45
|
end
|
|
45
46
|
else
|
|
@@ -53,7 +54,8 @@ module Provider
|
|
|
53
54
|
end
|
|
54
55
|
puts ""
|
|
55
56
|
end
|
|
56
|
-
|
|
57
|
+
@get_image = my_image
|
|
58
|
+
return @get_image
|
|
57
59
|
end
|
|
58
60
|
end
|
|
59
61
|
|
|
@@ -6,7 +6,7 @@ module Provider
|
|
|
6
6
|
@ec2 = ec2
|
|
7
7
|
@name = name
|
|
8
8
|
@instance = instance
|
|
9
|
-
|
|
9
|
+
@ami_name = image || name
|
|
10
10
|
end
|
|
11
11
|
|
|
12
12
|
def stop
|
|
@@ -40,7 +40,7 @@ module Provider
|
|
|
40
40
|
return true
|
|
41
41
|
end
|
|
42
42
|
|
|
43
|
-
def
|
|
43
|
+
def exists?
|
|
44
44
|
puts "Checking for ec2 server #{@name} ..."
|
|
45
45
|
if AWS.memoize do @ec2.instances.any? {|x| x.tags['Name'] == @name && x.status != :shutting_down && x.status != :terminated} end
|
|
46
46
|
puts "Instance #{@name} found"
|
|
@@ -78,19 +78,18 @@ module Provider
|
|
|
78
78
|
end
|
|
79
79
|
|
|
80
80
|
def create_image
|
|
81
|
-
@ami_name = @image || @name
|
|
82
81
|
puts "Create image #{@ami_name}"
|
|
83
|
-
|
|
84
|
-
while
|
|
82
|
+
new_image = @instance.create_image(@ami_name, { :no_reboot => true })
|
|
83
|
+
while new_image.exists? == false && new_image.state != :failed
|
|
85
84
|
print "."
|
|
86
85
|
sleep 1
|
|
87
86
|
end
|
|
88
|
-
while
|
|
87
|
+
while new_image.state == :pending && new_image.state != :failed
|
|
89
88
|
print "."
|
|
90
89
|
sleep 1
|
|
91
90
|
end
|
|
92
91
|
puts ""
|
|
93
|
-
return
|
|
92
|
+
return new_image
|
|
94
93
|
end
|
|
95
94
|
|
|
96
95
|
def tags(hash={})
|
data/lib/veronic.rb
CHANGED
|
@@ -79,7 +79,7 @@ module Veronic
|
|
|
79
79
|
record = dnsprovider.zone.record(dns, [], "A", "1").delete
|
|
80
80
|
puts "DNS #{dns} deleted"
|
|
81
81
|
end
|
|
82
|
-
if cloudprovider.instance.
|
|
82
|
+
if cloudprovider.instance.exists?
|
|
83
83
|
configprovider.instance.destroy([cloudprovider.instance.id])
|
|
84
84
|
else
|
|
85
85
|
configprovider.instance.destroy([])
|
|
@@ -107,14 +107,18 @@ module Veronic
|
|
|
107
107
|
end
|
|
108
108
|
|
|
109
109
|
def update_instance_dns
|
|
110
|
-
@config.dnsprovider_zones
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
110
|
+
if @config.dnsprovider_zones
|
|
111
|
+
@config.dnsprovider_zones.each do |z|
|
|
112
|
+
@config.zone_name = z['zone_name']
|
|
113
|
+
@config.zone_url = z['zone_url']
|
|
114
|
+
dns = "#{@config.name}.#{z['zone_name']}"
|
|
115
|
+
puts "Setting DNS #{dns} ..."
|
|
116
|
+
record = dnsprovider.zone.record(dns, [cloudprovider.instance.dns_name], "CNAME", "1").wait_set
|
|
117
|
+
puts "DNS #{dns} updated"
|
|
118
|
+
end
|
|
119
|
+
else
|
|
120
|
+
puts "Unabled to update DNS"
|
|
121
|
+
end
|
|
118
122
|
end
|
|
119
123
|
|
|
120
124
|
def instances_list
|
|
@@ -145,7 +149,7 @@ module Veronic
|
|
|
145
149
|
puts "#{@config.name} is running"
|
|
146
150
|
elsif cloudprovider.instance.status == :stopped
|
|
147
151
|
start
|
|
148
|
-
elsif cloudprovider.instance.
|
|
152
|
+
elsif cloudprovider.instance.exists? == false
|
|
149
153
|
@config.availability_zone = get_availability_zone
|
|
150
154
|
get_image
|
|
151
155
|
configprovider.instance.client.destroy
|
|
@@ -175,7 +179,7 @@ module Veronic
|
|
|
175
179
|
configprovider.instance.client.destroy
|
|
176
180
|
end
|
|
177
181
|
else
|
|
178
|
-
|
|
182
|
+
puts 'Unable to set_node arguments --role or --environment is missing'
|
|
179
183
|
end
|
|
180
184
|
end
|
|
181
185
|
|
data/veronic.gemspec
CHANGED
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.
|
|
4
|
+
version: 0.0.23
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -100,6 +100,7 @@ extra_rdoc_files: []
|
|
|
100
100
|
files:
|
|
101
101
|
- .gitignore
|
|
102
102
|
- Gemfile
|
|
103
|
+
- Gemfile.lock
|
|
103
104
|
- README.md
|
|
104
105
|
- bin/veronic
|
|
105
106
|
- lib/config/config.rb
|