veronic 0.0.4 → 0.0.5
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/bin/veronic +25 -63
- data/lib/config/config.rb +47 -0
- data/lib/providers/chefserver/instance.rb +1 -1
- data/lib/providers/route53/r53.rb +2 -2
- data/lib/veronic.rb +130 -0
- data/veronic.gemspec +1 -1
- data/veronic.yml +23 -14
- metadata +3 -2
- data/lib/deployer.rb +0 -109
data/bin/veronic
CHANGED
@@ -3,13 +3,10 @@
|
|
3
3
|
require 'rubygems'
|
4
4
|
require 'optparse'
|
5
5
|
require 'yaml'
|
6
|
-
require "cgi"
|
7
6
|
|
8
|
-
require_relative '../lib/
|
7
|
+
require_relative '../lib/veronic'
|
9
8
|
|
10
9
|
file = __FILE__
|
11
|
-
path = File.dirname($0)
|
12
|
-
config_file = File.exists?('/etc/veronic/veronic.yml') ? '/etc/veronic/veronic.yml' : path + '/veronic.yml'
|
13
10
|
|
14
11
|
options = {}
|
15
12
|
|
@@ -31,18 +28,17 @@ opt_parser = OptionParser.new do |opt|
|
|
31
28
|
opt.separator ""
|
32
29
|
opt.separator "Options"
|
33
30
|
|
34
|
-
options[:config_file] = ENV['config_file']
|
31
|
+
options[:config_file] = ENV['config_file']
|
35
32
|
opt.on("-c","--config_file veronic.yml","Use specific config file") do |c|
|
36
33
|
options[:config_file] = c
|
37
34
|
end
|
38
|
-
CONFIG = YAML.load_file(options[:config_file])
|
39
35
|
|
40
|
-
options[:environment] = ENV['environment']
|
36
|
+
options[:environment] = ENV['environment']
|
41
37
|
opt.on("-E","--environment ENVIRONMENT","Which environment you want box run") do |e|
|
42
38
|
options[:environment] = e
|
43
39
|
end
|
44
40
|
|
45
|
-
options[:name] = ENV['name']
|
41
|
+
options[:name] = ENV['name']
|
46
42
|
opt.on("-N","--node-name NAME","Which node name you want for the box") do |n|
|
47
43
|
options[:name] = n
|
48
44
|
end
|
@@ -52,42 +48,42 @@ opt_parser = OptionParser.new do |opt|
|
|
52
48
|
options[:branch] = b
|
53
49
|
end
|
54
50
|
|
55
|
-
options[:ssh_user] = ENV['ssh_user']
|
51
|
+
options[:ssh_user] = ENV['ssh_user']
|
56
52
|
opt.on("-u","--ssh_user ssh_user","Which ssh user use to connect box") do |s|
|
57
53
|
options[:ssh_user] = s
|
58
54
|
end
|
59
55
|
|
60
|
-
options[:ssh_port] = ENV['ssh_port']
|
56
|
+
options[:ssh_port] = ENV['ssh_port']
|
61
57
|
opt.on("-p","--ssh_port ssh_port","Which ssh port use to connect box") do |p|
|
62
58
|
options[:ssh_port] = p
|
63
59
|
end
|
64
60
|
|
65
|
-
options[:identity_file] = ENV['identity_file']
|
61
|
+
options[:identity_file] = ENV['identity_file']
|
66
62
|
opt.on("-i","--identity_file identity_file.pem","Which file use by ssh to connect box") do |i|
|
67
63
|
options[:identity_file] = i
|
68
64
|
end
|
69
65
|
|
70
|
-
options[:role] = ENV['role']
|
66
|
+
options[:role] = ENV['role']
|
71
67
|
opt.on("-r","--role role","Which role use to deploy the box") do |r|
|
72
68
|
options[:role] = r
|
73
69
|
end
|
74
70
|
|
75
|
-
options[:flavor] = ENV['flavor']
|
71
|
+
options[:flavor] = ENV['flavor']
|
76
72
|
opt.on("-f","--flavor flavor","Which flavor use to deploy the box") do |f|
|
77
73
|
options[:flavor] = f
|
78
74
|
end
|
79
75
|
|
80
|
-
options[:
|
76
|
+
options[:dnsprovider_zone_name] = ENV['dnsprovider_zone_name']
|
81
77
|
opt.on("-d","--dns_zone_name dns_zone_name","Which dns zone use for the box's dns") do |d|
|
82
|
-
options[:
|
78
|
+
options[:dnsprovider_zone_name] = d
|
83
79
|
end
|
84
80
|
|
85
|
-
options[:security_groups] = ENV['security_groups']
|
81
|
+
options[:security_groups] = ENV['security_groups']
|
86
82
|
opt.on("-S","--security_groups security_groups","Which security groups use for the box") do |s|
|
87
83
|
options[:security_groups] = s
|
88
84
|
end
|
89
85
|
|
90
|
-
options[:deploy_cmd] = ENV['deploy_cmd']
|
86
|
+
options[:deploy_cmd] = ENV['deploy_cmd']
|
91
87
|
opt.on("-D","--deploy_cmd security_groups","Which command line us to deploy the box") do |dc|
|
92
88
|
options[:deploy_cmd] = dc
|
93
89
|
end
|
@@ -97,64 +93,30 @@ end
|
|
97
93
|
|
98
94
|
opt_parser.parse!
|
99
95
|
|
100
|
-
config = {}
|
101
|
-
config[:dnsprovider] = :route53
|
102
|
-
config[:cloudprovider] = :ec2
|
103
|
-
config[:configprovider] = :chefserver
|
104
|
-
config[:dnsprovider_access_key_id] = CONFIG['dnsprovider_access_key_id']
|
105
|
-
config[:dnsprovider_secret_access_key] = CONFIG['dnsprovider_secret_access_key']
|
106
|
-
config[:cloudprovider_access_key_id] = CONFIG['cloudprovider_access_key_id']
|
107
|
-
config[:cloudprovider_secret_access_key] = CONFIG['cloudprovider_secret_access_key']
|
108
|
-
config[:cloudprovider_images_owner_id] = CONFIG['cloudprovider_images_owner_id']
|
109
|
-
config[:dnsprovider_zone_url] = CONFIG['dnsprovider_zone_url']
|
110
|
-
config[:region] = CONFIG['us-east-1']
|
111
|
-
config[:availability_zone] = CONFIG['us-east-1b']
|
112
|
-
config[:aws_ssh_key_id] = CONFIG['aws_ssh_key_id']
|
113
|
-
config[:node_name] = CONFIG['node_name']
|
114
|
-
config[:client_key] = CONFIG['client_key']
|
115
|
-
config[:validation_client_name] = CONFIG['validation_client_name']
|
116
|
-
config[:validation_key] = CONFIG['validation_key']
|
117
|
-
config[:chef_server_url] = CONFIG['chef_server_url']
|
118
|
-
config[:ssl_version] = CONFIG['ssl_version']
|
119
|
-
config[:identity_file] = options[:identity_file]
|
120
|
-
config[:dnsprovider_zone_name] = "#{options[:dns_zone_name]}."
|
121
|
-
config[:branch] = options[:branch]
|
122
|
-
config[:environment] = options[:environment]
|
123
|
-
config[:name] = options[:branch] ? options[:branch] : options[:name]
|
124
|
-
config[:ssh_user] = options[:ssh_user]
|
125
|
-
config[:ssh_port] = options[:ssh_port]
|
126
|
-
config[:role] = options[:role]
|
127
|
-
config[:roles] = "role[#{options[:role]}]"
|
128
|
-
config[:flavor] = options[:flavor]
|
129
|
-
config[:domain] = options[:dns_zone_name]
|
130
|
-
config[:security_groups] = [options[:security_groups]]
|
131
|
-
config[:deploy_cmd] = options[:deploy_cmd]
|
132
|
-
config[:dns_array] = ["#{config[:name]}.#{options[:dns_zone_name]}", "#{config[:name]}.core.#{options[:dns_zone_name]}", "#{config[:name]}.store.#{options[:dns_zone_name]}", "*.#{config[:name]}.store.#{options[:dns_zone_name]}"]
|
133
|
-
|
134
96
|
case ARGV[0] || ENV['action']
|
135
97
|
when "create"
|
136
|
-
Deployer.new(
|
98
|
+
Veronic::Deployer.new(options).create
|
137
99
|
when "bootstrap"
|
138
|
-
Deployer.new(
|
100
|
+
Veronic::Deployer.new(options).bootstrap
|
139
101
|
when "destroy"
|
140
|
-
Deployer.new(
|
102
|
+
Veronic::Deployer.new(options).destroy
|
141
103
|
when "deploy"
|
142
|
-
Deployer.new(
|
104
|
+
Veronic::Deployer.new(options).deploy
|
143
105
|
when "deploy_stacks"
|
144
|
-
Deployer.new(
|
106
|
+
Veronic::Deployer.new(options).deploy_stacks
|
145
107
|
when "deploy_apps"
|
146
|
-
Deployer.new(
|
108
|
+
Veronic::Deployer.new(options).deploy_apps
|
147
109
|
when "run_tests"
|
148
|
-
Deployer.new(
|
110
|
+
Veronic::Deployer.new(options).run_tests
|
149
111
|
when "update_instance_dns"
|
150
|
-
Deployer.new(
|
112
|
+
Veronic::Deployer.new(options).update_instance_dns
|
151
113
|
when "stop"
|
152
|
-
Deployer.new(
|
114
|
+
Veronic::Deployer.new(options).stop
|
153
115
|
when "start"
|
154
|
-
Deployer.new(
|
155
|
-
Deployer.new(
|
116
|
+
Veronic::Deployer.new(options).start
|
117
|
+
Veronic::Deployer.new(options).update_instance_dns
|
156
118
|
when "list"
|
157
|
-
Deployer.new(
|
119
|
+
Veronic::Deployer.new(options).instances_list
|
158
120
|
else
|
159
121
|
puts opt_parser
|
160
122
|
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module Veronic
|
2
|
+
class Config
|
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_zone_url, :dnsprovider_zone_name, :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
|
4
|
+
|
5
|
+
def initialize(options={})
|
6
|
+
config_file = File.exists?('/etc/veronic/veronic.yml') ? '/etc/veronic/veronic.yml' : '../../' + File.dirname($0) + '/veronic.yml'
|
7
|
+
config_from_file = YAML.load_file(options[:config_file] || config_file)
|
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
|
+
@cloudprovider_access_key_id = options[:cloudprovider_access_key_id] || config_from_file['cloudprovider_access_key_id']
|
15
|
+
@cloudprovider_secret_access_key = options[:cloudprovider_secret_access_key] || config_from_file['cloudprovider_secret_access_key']
|
16
|
+
@cloudprovider_images_owner_id = options[:cloudprovider_images_owner_id] || config_from_file['cloudprovider_images_owner_id']
|
17
|
+
@dnsprovider_zone_url = options[:dnsprovider_zone_url] || config_from_file['dnsprovider_zone_url']
|
18
|
+
@dnsprovider_zone_name = options[:dnsprovider_zone_name] || config_from_file['dnsprovider_zone_name']
|
19
|
+
@region = options[:region] || config_from_file['region']
|
20
|
+
@availability_zone = options[:availability_zone] || config_from_file['availability_zone']
|
21
|
+
@aws_ssh_key_id = options[:aws_ssh_key_id] || config_from_file['aws_ssh_key_id']
|
22
|
+
@node_name = options[:node_name] || config_from_file['node_name']
|
23
|
+
@client_key = options[:client_key] || config_from_file['client_key']
|
24
|
+
@validation_client_name = options[:validation_client_name] || config_from_file['validation_client_name']
|
25
|
+
@validation_key = options[:validation_key] || config_from_file['validation_key']
|
26
|
+
@chef_server_url = options[:chef_server_url] || config_from_file['chef_server_url']
|
27
|
+
@ssl_version = options[:ssl_version] || config_from_file['ssl_version']
|
28
|
+
@identity_file = options[:identity_file] || config_from_file['identity_file']
|
29
|
+
@branch = options[:branch] || config_from_file['branch']
|
30
|
+
@environment = options[:environment] || config_from_file['environment'] || 'beta'
|
31
|
+
@ssh_user = options[:ssh_user] || config_from_file['ssh_user'] || 'ubuntu'
|
32
|
+
@ssh_port = options[:ssh_port] || config_from_file['ssh_port'] || 22
|
33
|
+
@role = options[:role] || config_from_file['role'] || 'default'
|
34
|
+
@flavor = options[:flavor] || config_from_file['flavor'] || 'm1.medium'
|
35
|
+
@security_groups = [options[:security_groups]] || [config_from_file['security_groups']]
|
36
|
+
@deploy_cmd = options[:deploy_cmd] || config_from_file['deploy_cmd'] || 'sudo chef-client'
|
37
|
+
@name = (options[:branch] || config_from_file['branch']) ? (options[:branch] || config_from_file['branch']) : (options[:name] || config_from_file['name'])
|
38
|
+
@image = nil
|
39
|
+
end
|
40
|
+
|
41
|
+
def to_hash
|
42
|
+
hash = {}
|
43
|
+
self.instance_variables.each {|var| hash[var.to_s.delete("@").to_sym] = self.instance_variable_get(var) }
|
44
|
+
return hash
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -23,7 +23,7 @@ module Provider
|
|
23
23
|
@identity_file = config[:identity_file]
|
24
24
|
@aws_ssh_key_id = config[:aws_ssh_key_id]
|
25
25
|
@environment = config[:environment]
|
26
|
-
@roles = config[:
|
26
|
+
@roles = "role[#{config[:role]}]"
|
27
27
|
@flavor = config[:flavor]
|
28
28
|
@region = config[:region]
|
29
29
|
@availability_zone = config[:availability_zone]
|
@@ -8,7 +8,7 @@ module Provider
|
|
8
8
|
def initialize(config)
|
9
9
|
@access_key_id = config[:dnsprovider_access_key_id]
|
10
10
|
@secret_access_key = config[:dnsprovider_secret_access_key]
|
11
|
-
@zone_name = config[:dnsprovider_zone_name]
|
11
|
+
@zone_name = config[:dnsprovider_zone_name] || '' + '.'
|
12
12
|
@zone_url = config[:dnsprovider_zone_url]
|
13
13
|
@r53 = r53
|
14
14
|
@zone = zone
|
@@ -19,7 +19,7 @@ module Provider
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def zone
|
22
|
-
Provider::R53::Zone.new(@r53, @zone_name, @zone_url)
|
22
|
+
Provider::R53::Zone.new(@r53, @zone_name, @zone_url) rescue puts 'Bad DNS settings'
|
23
23
|
end
|
24
24
|
|
25
25
|
end
|
data/lib/veronic.rb
ADDED
@@ -0,0 +1,130 @@
|
|
1
|
+
require_relative 'config/config'
|
2
|
+
require_relative 'providers/cloudprovider'
|
3
|
+
require_relative 'providers/dnsprovider'
|
4
|
+
require_relative 'providers/configprovider'
|
5
|
+
|
6
|
+
module Veronic
|
7
|
+
class Deployer
|
8
|
+
|
9
|
+
def initialize(options={})
|
10
|
+
@config = config(options)
|
11
|
+
@config_hash = @config.to_hash
|
12
|
+
@role = @config_hash[:role]
|
13
|
+
@environment = @config_hash[:environment]
|
14
|
+
@deploy_cmd = @config_hash[:deploy_cmd]
|
15
|
+
end
|
16
|
+
|
17
|
+
def config
|
18
|
+
@config || Veronic::Config.new
|
19
|
+
end
|
20
|
+
|
21
|
+
def config(options={})
|
22
|
+
@config || Veronic::Config.new(options)
|
23
|
+
end
|
24
|
+
|
25
|
+
def configprovider
|
26
|
+
ConfigProvider.new(@config_hash)
|
27
|
+
end
|
28
|
+
|
29
|
+
def dnsprovider
|
30
|
+
DnsProvider.new(@config_hash)
|
31
|
+
end
|
32
|
+
|
33
|
+
def cloudprovider
|
34
|
+
CloudProvider.new(@config_hash)
|
35
|
+
end
|
36
|
+
|
37
|
+
def create
|
38
|
+
unless bootstrap
|
39
|
+
configprovider.instance.create
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def deploy_stacks
|
44
|
+
bootstrap
|
45
|
+
query = cloudprovider.instance.dns_name
|
46
|
+
deploy_cmd = 'sudo chef-client -l debug'
|
47
|
+
manual = true
|
48
|
+
configprovider.ssh(query, deploy_cmd, manual)
|
49
|
+
end
|
50
|
+
|
51
|
+
def deploy_apps
|
52
|
+
if bootstrap
|
53
|
+
deploy_stacks
|
54
|
+
end
|
55
|
+
query = cloudprovider.instance.dns_name
|
56
|
+
deploy_cmd = 'sudo chef-client -o "recipe[lift_envs::app_deploy]" -l debug'
|
57
|
+
manual = true
|
58
|
+
configprovider.ssh(query, deploy_cmd, manual)
|
59
|
+
end
|
60
|
+
|
61
|
+
def run_tests
|
62
|
+
if bootstrap
|
63
|
+
deploy_stacks
|
64
|
+
deploy_apps
|
65
|
+
end
|
66
|
+
query = cloudprovider.instance.dns_name
|
67
|
+
deploy_cmd = 'sudo chef-client -o "recipe[lift_envs::app_testing]" -l debug'
|
68
|
+
manual = true
|
69
|
+
configprovider.ssh(query, deploy_cmd, manual)
|
70
|
+
end
|
71
|
+
|
72
|
+
def destroy
|
73
|
+
if cloudprovider.instance.exist?
|
74
|
+
configprovider.instance.destroy([cloudprovider.instance.id])
|
75
|
+
else
|
76
|
+
configprovider.instance.destroy([])
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
def deploy
|
81
|
+
if cloudprovider.instance.exist?
|
82
|
+
if @environment == 'branch'
|
83
|
+
query = cloudprovider.instance.dns_name
|
84
|
+
manual = true
|
85
|
+
else
|
86
|
+
query = "role:#{@role}"
|
87
|
+
manual = false
|
88
|
+
end
|
89
|
+
configprovider.ssh(query, @deploy_cmd, manual)
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
def update_instance_dns
|
94
|
+
@dns_array.each do |dns|
|
95
|
+
puts "Setting DNS #{dns} ..."
|
96
|
+
dnsprovider.zone.record.new(dnsprovider.zone, dns, [cloudprovider.instance.public_ip_address], "A", "10")
|
97
|
+
puts "DNS #{dns} updated"
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
def instances_list
|
102
|
+
cloudprovider.instances_list
|
103
|
+
end
|
104
|
+
|
105
|
+
def stop
|
106
|
+
cloudprovider.instance.stop
|
107
|
+
end
|
108
|
+
|
109
|
+
def start
|
110
|
+
cloudprovider.instance.start
|
111
|
+
update_instance_dns
|
112
|
+
end
|
113
|
+
|
114
|
+
def bootstrap
|
115
|
+
@config.image = cloudprovider.image.id
|
116
|
+
if cloudprovider.instance.status == :running
|
117
|
+
return false
|
118
|
+
elsif cloudprovider.instance.status == :stopped
|
119
|
+
start
|
120
|
+
return false
|
121
|
+
elsif cloudprovider.instance.exist? == false
|
122
|
+
configprovider.instance.bootstrap
|
123
|
+
configprovider.instance.set_role
|
124
|
+
return true
|
125
|
+
else
|
126
|
+
raise ArgumentError.new('Error during connecting instance')
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|
data/veronic.gemspec
CHANGED
data/veronic.yml
CHANGED
@@ -1,16 +1,25 @@
|
|
1
|
-
dnsprovider_access_key_id:
|
2
|
-
dnsprovider_secret_access_key:
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
1
|
+
dnsprovider_access_key_id:
|
2
|
+
dnsprovider_secret_access_key:
|
3
|
+
cloudprovider_access_key_id:
|
4
|
+
cloudprovider_secret_access_key:
|
5
|
+
cloudprovider_images_owner_id:
|
6
|
+
dnsprovider_zone_url:
|
7
|
+
dnsprovider_zone_name:
|
8
|
+
region:
|
9
|
+
availability_zone:
|
10
|
+
aws_ssh_key_id:
|
10
11
|
node_name:
|
11
|
-
|
12
|
-
validation_client_name:
|
12
|
+
client_key:
|
13
|
+
validation_client_name:
|
13
14
|
validation_key:
|
14
|
-
|
15
|
-
|
16
|
-
|
15
|
+
chef_server_url:
|
16
|
+
ssl_version:
|
17
|
+
identity_file:
|
18
|
+
branch:
|
19
|
+
environment:
|
20
|
+
ssh_user:
|
21
|
+
ssh_port:
|
22
|
+
role:
|
23
|
+
flavor:
|
24
|
+
security_groups:
|
25
|
+
deploy_cmd:
|
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.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -21,7 +21,7 @@ files:
|
|
21
21
|
- .gitignore
|
22
22
|
- README.md
|
23
23
|
- bin/veronic
|
24
|
-
- lib/
|
24
|
+
- lib/config/config.rb
|
25
25
|
- lib/providers/chefserver/chefserver.rb
|
26
26
|
- lib/providers/chefserver/instance.rb
|
27
27
|
- lib/providers/chefserver/rest_request.rb
|
@@ -34,6 +34,7 @@ files:
|
|
34
34
|
- lib/providers/route53/r53.rb
|
35
35
|
- lib/providers/route53/record.rb
|
36
36
|
- lib/providers/route53/zone.rb
|
37
|
+
- lib/veronic.rb
|
37
38
|
- veronic.gemspec
|
38
39
|
- veronic.yml
|
39
40
|
homepage: http://github.com/GabKlein/veronic
|
data/lib/deployer.rb
DELETED
@@ -1,109 +0,0 @@
|
|
1
|
-
require_relative 'providers/cloudprovider'
|
2
|
-
require_relative 'providers/dnsprovider'
|
3
|
-
require_relative 'providers/configprovider'
|
4
|
-
|
5
|
-
class Deployer
|
6
|
-
|
7
|
-
def initialize(config)
|
8
|
-
@role = config[:role]
|
9
|
-
@environment = config[:environment]
|
10
|
-
@deploy_cmd = config[:deploy_cmd]
|
11
|
-
@dns_array = config[:dns_array]
|
12
|
-
@cloudprovider = CloudProvider.new(config)
|
13
|
-
config[:image] = @cloudprovider.image.id
|
14
|
-
@dnsprovider = DnsProvider.new(config)
|
15
|
-
@configprovider = ConfigProvider.new(config)
|
16
|
-
end
|
17
|
-
|
18
|
-
def create
|
19
|
-
if bootstrap
|
20
|
-
@configprovider.instance.create
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
def deploy_stacks
|
25
|
-
bootstrap
|
26
|
-
query = @cloudprovider.instance.dns_name
|
27
|
-
deploy_cmd = 'sudo chef-client -l debug'
|
28
|
-
manual = true
|
29
|
-
@configprovider.ssh(query, deploy_cmd, manual)
|
30
|
-
end
|
31
|
-
|
32
|
-
def deploy_apps
|
33
|
-
unless bootstrap
|
34
|
-
deploy_stacks
|
35
|
-
end
|
36
|
-
query = @cloudprovider.instance.dns_name
|
37
|
-
deploy_cmd = 'sudo chef-client -o "recipe[lift_envs::app_deploy]" -l debug'
|
38
|
-
manual = true
|
39
|
-
@configprovider.ssh(query, deploy_cmd, manual)
|
40
|
-
end
|
41
|
-
|
42
|
-
def run_tests
|
43
|
-
unless bootstrap
|
44
|
-
deploy_stacks
|
45
|
-
deploy_apps
|
46
|
-
end
|
47
|
-
query = @cloudprovider.instance.dns_name
|
48
|
-
deploy_cmd = 'sudo chef-client -o "recipe[lift_envs::app_testing]" -l debug'
|
49
|
-
manual = true
|
50
|
-
@configprovider.ssh(query, deploy_cmd, manual)
|
51
|
-
end
|
52
|
-
|
53
|
-
def destroy
|
54
|
-
if @cloudprovider.instance.exist?
|
55
|
-
@configprovider.instance.destroy([@cloudprovider.instance.id])
|
56
|
-
else
|
57
|
-
@configprovider.instance.destroy([])
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
def deploy
|
62
|
-
if @cloudprovider.instance.exist?
|
63
|
-
if @environment == 'branch'
|
64
|
-
query = @cloudprovider.instance.dns_name
|
65
|
-
manual = true
|
66
|
-
else
|
67
|
-
query = "role:#{@role}"
|
68
|
-
manual = false
|
69
|
-
end
|
70
|
-
@configprovider.ssh(query, @deploy_cmd, manual)
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
def update_instance_dns
|
75
|
-
@dns_array.each do |dns|
|
76
|
-
puts "Setting DNS #{dns} ..."
|
77
|
-
@dnsprovider.zone.record.new(@dnsprovider.zone, dns, [@cloudprovider.instance.public_ip_address], "A", "10")
|
78
|
-
puts "DNS #{dns} updated"
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
def instances_list
|
83
|
-
@cloudprovider.instances_list
|
84
|
-
end
|
85
|
-
|
86
|
-
def stop
|
87
|
-
@cloudprovider.instance.stop
|
88
|
-
end
|
89
|
-
|
90
|
-
def start
|
91
|
-
@cloudprovider.instance.start
|
92
|
-
update_instance_dns
|
93
|
-
end
|
94
|
-
|
95
|
-
def bootstrap
|
96
|
-
if @cloudprovider.instance.status == :running
|
97
|
-
return true
|
98
|
-
elsif @cloudprovider.instance.status == :stopped
|
99
|
-
start
|
100
|
-
return true
|
101
|
-
elsif @cloudprovider.instance.exist? == false
|
102
|
-
@configprovider.instance.bootstrap
|
103
|
-
@configprovider.instance.set_role
|
104
|
-
return false
|
105
|
-
else
|
106
|
-
raise ArgumentError.new('Error during connecting instance')
|
107
|
-
end
|
108
|
-
end
|
109
|
-
end
|