avst-cloud 0.1.35 → 0.1.36

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 08b2bde0582221a0d81aae6d0b3606206633d23ebffb3350273b6e94118ae05c
4
- data.tar.gz: 95b4457c08517ea0ea4275cc866262eb8067de3bc9ff93fe0e12837ceb7fadfe
3
+ metadata.gz: 65428e23baf04bc8f038bb7d30bde02843ac8ac3967375ec218fdd4f3c18d388
4
+ data.tar.gz: ab4d149ae0797e91fe2c03fbfe36471b4815a835ba98b5b26abe1625cd1f6a9f
5
5
  SHA512:
6
- metadata.gz: 7d1253877fe6464c5c7c9a8a8d6a3649c73cd8f5cf9a0c2948269742c7d5c9851c75b11e7c12dcc1535cdd3566ec5344888b47600c7a878417e52dbf8d40bd43
7
- data.tar.gz: a57749823fcb9baffdca0f3ecd504b3329f8acc2dd92370ff1241b7c36767df345f12800140311f7bb4b07c71134dc994c539140aaf0206cbf81e13cdc4b3ed2
6
+ metadata.gz: daa8f6241425b059d2d4c8a62f9f84ad32c638e5b37b50e3967e638494b004c0ab21d6042283027581bbd880dc61c3b97b3e69fb4289a6f52c251113cdd76bab
7
+ data.tar.gz: 4236cd139da56d4f35a73704ddf2f00b696d5335032d35c8930385949e1d8bc70a0d42c4c17e5c1b3b55f534023fa9917392ef1289c3832308a58c5ef24d353a
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "avst-cloud"
7
- spec.version = '0.1.35'
7
+ spec.version = '0.1.36'
8
8
  spec.authors = ["Martin Brehovsky", "Jon Bevan", "Matthew Hope"]
9
9
  spec.email = ["mbrehovsky@adaptavist.com", "jbevan@adaptavist.com", "mhope@adaptavist.com"]
10
10
  spec.summary = %q{Automated creation, bootstrapping and provisioning of servers }
@@ -15,13 +15,14 @@ Gem::Specification.new do |spec|
15
15
  spec.executables = ["avst-cloud", "avst-cloud-puppet", "avst-cloud-rackspace", "avst-cloud-azure", "avst-cloud-azure-rm"]
16
16
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
17
17
  spec.require_paths = ["lib"]
18
- spec.add_development_dependency "bundler", "~> 1.16.1"
18
+ spec.add_development_dependency "bundler", "~> 1.17.3"
19
19
  spec.add_development_dependency "rake"
20
20
  spec.add_dependency "fog"
21
21
  spec.add_dependency "fog-core", "1.43.0"
22
- spec.add_dependency "fog-azure"
23
- spec.add_dependency "fog-azure-rm", "0.0.3"
24
- spec.add_dependency "azure"
22
+ ###spec.add_dependency "fog-azure"
23
+ ###spec.add_dependency "fog-azure-rm", "0.0.3"
24
+ spec.add_dependency "fog-google", "1.8.2"
25
+ ###spec.add_dependency "azure"
25
26
  spec.add_dependency "rvm-capistrano"
26
27
  spec.add_dependency "capistrano", "3.4.1"
27
28
  spec.add_dependency "capistrano-rvm"
@@ -33,3 +34,4 @@ Gem::Specification.new do |spec|
33
34
  spec.add_dependency "nokogiri", '1.8.2'
34
35
  end
35
36
 
37
+
@@ -0,0 +1,124 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # Copyright 2015 Adaptavist.com Ltd.
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ require 'avst-cloud'
18
+ require 'avst-cloud/gcp_connection'
19
+ require 'avst-cloud/gcp_server'
20
+
21
+ avst_cloud_base="#{File.expand_path("../../", __FILE__)}"
22
+
23
+ # FILL IN YOUR GCP ACCOUNT DETAILS (Access Key ID and Secret Access Key), GIT REPO AND MAKE SURE
24
+ # FILES IN files FOLDER HAS CORRECT CONTENT
25
+ provider_user=''
26
+ provider_pass=''
27
+ project=''
28
+ region='europe-west1'
29
+
30
+ # Initiate connector object
31
+ conn = AvstCloud::GcpConnection.new(provider_user, provider_pass, region, project)
32
+
33
+ server_name = 'hostname1'
34
+
35
+ flavour = nil # defaults to t2.micro
36
+ hdd_device_path = nil # defaults to '/dev/sda1'
37
+ machine_type_id = nil
38
+ os = "centos-7"
39
+
40
+ key_name = 'admin' # key name, e.g. admin
41
+ ssh_public_key = "path/to/your/admin.pem.pub" # Full path to ssh public key, e.g. /tmp/admin.pem.pub
42
+ ssh_private_key = "path/to/your/admin.pem" # Full path to ssh private key, e.g. /tmp/admin.pem
43
+ subnet_id = nil # Your subnet
44
+ security_group_ids = [''] # List of security groups
45
+ root_disk_size = nil # In GB
46
+ additional_hdds = {}
47
+ vpc = nil
48
+ created_by = nil
49
+ root_username = nil
50
+ custom_tags = []
51
+ availability_zone = 'europe-west1-b'
52
+ delete_root_disk = true
53
+
54
+ # display server status
55
+ ##server_detail = conn.server_status(server_name)
56
+ ##puts server_detail.inspect
57
+ ##conn.list_zones
58
+ ##conn.list_flavours(availability_zone)
59
+ ##conn.list_images
60
+ ##conn.list_networks
61
+ ##conn.list_disk_types(availability_zone)
62
+
63
+ server = conn.create_server(server_name, flavour, os, key_name, ssh_public_key, ssh_private_key, subnet_id, security_group_ids, root_disk_size, machine_type_id, availability_zone, additional_hdds, vpc, created_by, custom_tags, root_username, delete_root_disk)
64
+
65
+ # server = conn.server(server_name, root_username, ssh_private_key, os)
66
+ # server.destroy
67
+
68
+ # puts conn.server_status(server_name)
69
+ # exit
70
+
71
+ pre_upload_commands = [
72
+ "echo 'pre_upload_command was here' >> /tmp/pre_upload",
73
+ ]
74
+
75
+ custom_file_uploads = {
76
+ "#{avst_cloud_base}/files/id_rsa" => "/tmp/.",
77
+ "#{avst_cloud_base}/files/known_hosts" => "/tmp/."
78
+ }
79
+
80
+ # Uploading ssh keys to access git repo in provisioning stage, make sure you provide correct keys
81
+ post_upload_commands = [
82
+ "mkdir /home/ubuntu/.ssh",
83
+ "mv /tmp/id_rsa /home/ubuntu/.ssh/.",
84
+ "mv /tmp/known_hosts /home/ubuntu/.ssh/.",
85
+ "chmod 0600 /home/ubuntu/.ssh/known_hosts",
86
+ "chmod 0600 /home/ubuntu/.ssh/id_rsa",
87
+ "mkdir /var/opt/puppet",
88
+ "chown ubuntu /var/opt/puppet",
89
+ "apt-get update && apt-get install -o Dpkg::Options::='--force-confold' -f -y git puppet-common puppet"
90
+ ]
91
+
92
+ remote_server_debug = true
93
+ debug_structured_log = false
94
+
95
+ ##!##server.bootstrap(pre_upload_commands, custom_file_uploads, post_upload_commands, remote_server_debug, debug_structured_log, false)
96
+
97
+ git = "ssh://git@you_repo.git"
98
+ branch = "master"
99
+ reference = nil # Tag
100
+ # In this example we do not use puppet-runner, check doco
101
+ puppet_runner = nil
102
+ puppet_runner_prepare = nil
103
+ avst_cloud_config_dir = nil
104
+ download_dependencies_command = nil
105
+ custom_provisioning_commands = ["echo 'done' >> /tmp/done", "echo 'done' >> /tmp/done1"]
106
+ server_tmp_folder="/tmp/avst_cloud_tmp_#{Time.now.to_i}"
107
+
108
+ destination_folder = nil # defaults to /var/opt/puppet
109
+ ##!##server.provision(git, branch, server_tmp_folder, reference, custom_provisioning_commands, puppet_runner, puppet_runner_prepare, destination_folder, avst_cloud_config_dir, download_dependencies_command)
110
+
111
+ # puts conn.server_status(server_name)
112
+ # server.stop
113
+
114
+ # puts conn.server_status(server_name)
115
+ # server.start
116
+
117
+ # puts conn.server_status(server_name)
118
+
119
+ # custom_commands=nil
120
+ # server_tmp_folder="/tmp/done"
121
+ # server.post_provisioning_cleanup(custom_commands, os, remote_server_debug, server_tmp_folder)
122
+
123
+ # server.destroy
124
+ # puts conn.server_status(server_name)
@@ -0,0 +1,310 @@
1
+ # Copyright 2015 Adaptavist.com Ltd.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ require_relative './cloud_connection.rb'
16
+ require 'fog/google'
17
+ using Rainbow
18
+ module AvstCloud
19
+
20
+ class GcpConnection < AvstCloud::CloudConnection
21
+
22
+ attr_accessor :region
23
+
24
+ def initialize(provider_user, provider_pass, region, project)
25
+ super('Google', provider_user, provider_pass)
26
+ @region = region
27
+ @project = project
28
+ end
29
+
30
+ def server(server_name, root_user, root_password, os=nil)
31
+ server = find_fog_server(server_name)
32
+ if !root_user and os
33
+ root_user = user_from_key(os)
34
+ end
35
+ AvstCloud::GcpServer.new(server, server_name, server.public_ip_address, root_user, root_password)
36
+ end
37
+
38
+ def create_server(server_name, flavour, os, key_name, ssh_public_key, ssh_private_key, subnet_id, security_group_ids, root_disk_size, root_disk_type, machine_type_id, availability_zone, additional_hdds={}, vpc=nil, created_by=nil, custom_tags=[], root_username=nil, delete_root_disk=true)
39
+ flavour = flavour || "g1-small"
40
+ os = os || "centos-7"
41
+ vpc_name = vpc || "default"
42
+ subnet_name = subnet_id || "default"
43
+ machine_type_id = machine_type_id || get_image_name(os)
44
+ if machine_type_id.nil? or machine_type_id.empty?
45
+ machine_type_id = "centos-7-v20190312"
46
+ end
47
+
48
+ unless File.file?(ssh_public_key)
49
+ logger.error "Could not find local public SSH key '#{ssh_public_key}'".red
50
+ raise "Could not find local SSH public key '#{ssh_public_key}'"
51
+ end
52
+
53
+ unless File.file?(ssh_private_key)
54
+ logger.error "Could not find local private SSH key '#{ssh_public_key}'".red
55
+ raise "Could not find local SSH private key '#{ssh_public_key}'"
56
+ end
57
+ root_user = root_username || user_from_key(os)
58
+
59
+ existing_servers = all_named_servers(server_name)
60
+ restartable_servers = existing_servers.select{ |serv| serv.status == 'TERMINATED' }
61
+ #TODO, status is a guess, need to work out if "DELETED" is valid for GCP
62
+ running_servers = existing_servers.select{ |serv| serv.status != 'TERMINATED' && serv.status != 'DELETED' }
63
+
64
+ if running_servers.length > 0
65
+ running_servers.each do |server|
66
+ logger.error "Server #{server_name} with id #{server.id} found in state: #{server.status}".yellow
67
+ end
68
+ raise "Server with the same name found!"
69
+
70
+ elsif restartable_servers.length > 0
71
+ if restartable_servers.length > 1
72
+ running_servers.each do |server|
73
+ logger.error "Server #{server_name} with id #{server.id} found in state: #{server.status}. Can not restart".yellow
74
+ end
75
+ raise "Too many servers can be restarted."
76
+ end
77
+ server = restartable_servers.first
78
+ server.start
79
+ result_server = AvstCloud::GcpServer.new(server, server_name, server.public_ip_address, root_user, ssh_private_key)
80
+ result_server.wait_for_state() {|serv| serv.ready?}
81
+ logger.debug "[DONE]\n\n"
82
+ logger.debug "The server was successfully re-started.\n\n"
83
+ result_server
84
+ else
85
+ logger.debug "Creating GCP server:"
86
+ logger.debug "Server name - #{server_name}"
87
+ logger.debug "Operating system - #{os}"
88
+ logger.debug "image_template_id - #{machine_type_id}"
89
+ logger.debug "flavour - #{flavour}"
90
+ logger.debug "key_name - #{key_name}"
91
+ logger.debug "Public ssh_key - #{ssh_public_key}"
92
+ logger.debug "Private ssh_key - #{ssh_private_key}"
93
+ logger.debug "root user - #{root_user}"
94
+ logger.debug "subnet_id - #{subnet_name}"
95
+ logger.debug "security_group_ids - #{security_group_ids}"
96
+ logger.debug "region - #{@region}"
97
+ logger.debug "availability_zone - #{availability_zone}"
98
+ logger.debug "root_disk_size - #{root_disk_size}"
99
+ logger.debug "additional_hdds - #{additional_hdds}"
100
+ logger.debug "vpc - #{vpc_name}"
101
+
102
+ # Create root disk
103
+ # TODO check if this exists and exit politely, or catch the exception and exit politely
104
+ root_disk_type = root_disk_type || 'pd-standard'
105
+ logger.debug "Creating root disk with type #{root_disk_type}"
106
+ root_disk_url="https://www.googleapis.com/compute/v1/projects/#{@project}/zones/#{availability_zone}/diskTypes/#{root_disk_type}"
107
+ disk = connect.disks.create :name => "#{server_name}-root",
108
+ :size_gb => root_disk_size,
109
+ :zone => availability_zone,
110
+ :source_image => machine_type_id,
111
+ :type => root_disk_url
112
+
113
+ # wait for the disk to be ready
114
+ logger.debug "Waiting for root disk to be ready"
115
+ disk.wait_for { ready? }
116
+
117
+ disk_to_attach=[disk.attached_disk_obj(boot: true, auto_delete: delete_root_disk)]
118
+
119
+ # create additional HDD's if required
120
+ if additional_hdds and additional_hdds.is_a?(Hash)
121
+ disk_count=1
122
+ additional_hdds.each_value do |disk|
123
+ #TODO wortk out how to set disk type!
124
+ if disk['disk_size'] || disk['ebs_size']
125
+ disk_type = disk['disk_type'] || 'pd-standard'
126
+ logger.debug "Creating additional disk #{disk_count} with type #{disk_type}"
127
+ disk_url="https://www.googleapis.com/compute/v1/projects/#{@project}/zones/#{availability_zone}/diskTypes/#{disk_type}"
128
+ delete_disk_with_vm = disk['delete_disk_with_vm'] || false
129
+ additional_disk = connect.disks.create :name => "#{server_name}-disk#{disk_count}",
130
+ :size_gb => disk['disk_size'] || disk['ebs_size'],
131
+ :zone => availability_zone,
132
+ :type => disk_url
133
+ # wait for additional disk
134
+ logger.debug "Waiting for additional disk #{disk_count}"
135
+ additional_disk.wait_for { ready? }
136
+
137
+ # add disk to array of those to be mounted
138
+ disk_to_attach.push additional_disk.attached_disk_obj(boot: false, auto_delete: delete_disk_with_vm)
139
+
140
+ #blank the additional disk object for the next time around
141
+ attached_disk = nil
142
+
143
+ # increment disk counter
144
+ disk_count = disk_count +1
145
+ else
146
+ logger.warn "Failed to create additional hdd, required param disk_size missing: #{disk}"
147
+ end
148
+ end
149
+ end
150
+
151
+ ## GCP tags are not key value pairs
152
+ tags = [server_name, os] + custom_tags
153
+
154
+ # work out the URK for the subnetwork
155
+ subnet_url = "https://www.googleapis.com/compute/v1/projects/#{@project}/regions/#{region}/subnetworks/#{subnet_name}"
156
+
157
+ # create server
158
+ logger.debug "Creating Server"
159
+ server = connect.servers.create :name => server_name,
160
+ :disks => disk_to_attach,
161
+ :machine_type => flavour,
162
+ :private_key_path => ssh_private_key,
163
+ :public_key_path => ssh_public_key,
164
+ :zone => availability_zone,
165
+ :network_interfaces => [{ :network => "global/networks/#{vpc_name}",
166
+ :subnetwork => subnet_url,
167
+ :access_configs => [{
168
+ :name => "External NAT",
169
+ :type => "ONE_TO_ONE_NAT" }]
170
+ }],
171
+ :username => root_user,
172
+ :tags => tags
173
+
174
+ result_server = AvstCloud::GcpServer.new(server, server_name, nil, root_user, ssh_private_key)
175
+ # result_server.logger = logger
176
+ # Check every 5 seconds to see if server is in the active state (ready?).
177
+ # If the server has not been built in 5 minutes (600 seconds) an exception will be raised.
178
+ result_server.wait_for_state() {|serv| serv.ready?}
179
+
180
+ logger.debug "[DONE]\n\n"
181
+ logger.debug "The server has been successfully created, to login onto the server:\n"
182
+ logger.debug "\t ssh -i #{ssh_private_key} #{root_user}@#{server.public_ip_address}\n"
183
+ result_server.ip_address = server.public_ip_address
184
+ result_server
185
+ end
186
+ end
187
+
188
+ def server_status(server_name)
189
+ #TODO, status is a guess, need to work out if this is valid for GCP
190
+ servers = all_named_servers(server_name).select{|serv| serv.status != 'DELETED'}
191
+ if servers.length > 0
192
+ servers.each do |server|
193
+ logger.debug "Server #{server.id} with name '#{server_name}' exists and has state: #{server.status}"
194
+ end
195
+ else
196
+ logger.debug "Server not found for name: #{server_name}"
197
+ end
198
+ end
199
+
200
+ def list_zones
201
+ logger.debug connect.list_zones
202
+ end
203
+
204
+ def list_flavours(zone)
205
+ logger.debug connect.list_machine_types(zone)
206
+ end
207
+
208
+ def list_images
209
+ # Only list current images, not deprecated ones
210
+ get_images.each do |im|
211
+ logger.debug im.inspect
212
+ end
213
+ end
214
+
215
+ def list_networks
216
+ logger.debug connect.list_networks
217
+ end
218
+
219
+ def list_disk_types(availability_zone)
220
+ logger.debug connect.list_disk_types(availability_zone)
221
+ end
222
+
223
+ # Returns list of servers from fog
224
+ def list_known_servers
225
+ connect.servers.all
226
+ end
227
+
228
+ def find_fog_server(server_name, should_fail=true)
229
+ #TODO, status is a guess, need to work out if this is valid for GCP
230
+ servers = all_named_servers(server_name).select{|serv| serv.status != 'DELETED'}
231
+ unless servers.length == 1
232
+ logger.debug "Found #{servers.length} servers for name: #{server_name}".yellow
233
+ if should_fail
234
+ raise "Found #{servers.length} servers for name: #{server_name}"
235
+ end
236
+ end
237
+ servers.first
238
+ end
239
+
240
+ private
241
+ # attempt to workout the user from the key comments! - TODO
242
+ def user_from_key(os)
243
+ raise "Function to extract username from key comment not yet implemented"
244
+ end
245
+ def connect
246
+ unless @connection
247
+ logger.debug "Creating new connection to GCP"
248
+ @connection = Fog::Compute.new({
249
+ :provider => 'Google',
250
+ :google_project => @project,
251
+ :google_client_email => @provider_access_user,
252
+ :google_json_key_location => @provider_access_pass
253
+ })
254
+ end
255
+ @connection
256
+ end
257
+ # get a list of images,
258
+ def get_images(family=nil, deprecated=false)
259
+ # if we are looking to include depreacted images get them all
260
+ if deprecated
261
+ images = connect.images.all
262
+ # if not just get the current ones
263
+ else
264
+ images = connect.images.current
265
+ end
266
+
267
+ # if we are to filter on a list of families do so
268
+ if family
269
+ final_images = Array.new
270
+ images.each do |image|
271
+ if image.family == family
272
+ final_images.push image
273
+ end
274
+ end
275
+ # return the filtered list
276
+ final_images
277
+ # if not just return all results
278
+ else
279
+ # return the results
280
+ images
281
+ end
282
+ end
283
+ # get a single machine image by family
284
+ def get_image_name(family)
285
+ image = get_images(family, false)
286
+ if image.length != 1
287
+ raise "Too many images returned for family #{family}, #{image.length} were returned"
288
+ end
289
+ # return the image name
290
+ image.first.name
291
+
292
+ end
293
+
294
+ def all_named_servers(server_name)
295
+ # ***connect.servers.all does not accept any arguments in GCP***
296
+
297
+ # create empty array
298
+ named_servers=Array.new
299
+ # get all servers
300
+ connect.servers.all.each do | returned_server |
301
+ # if the server name matches what we are looking for add to the result array
302
+ if returned_server.name == server_name
303
+ named_servers.push(returned_server)
304
+ end
305
+ end
306
+ # return the list of servers
307
+ named_servers
308
+ end
309
+ end
310
+ end
@@ -0,0 +1,55 @@
1
+ # Copyright 2015 Adaptavist.com Ltd.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ require_relative './cloud_server.rb'
16
+ using Rainbow
17
+ module AvstCloud
18
+ class GcpServer < AvstCloud::CloudServer
19
+
20
+ def stop
21
+ if @server
22
+ logger.debug "Stopping #{@server_name}"
23
+ @server.stop
24
+ wait_for_state() {|serv| serv.status == 'TERMINATED'}
25
+ logger.debug "[DONE]\n\n"
26
+ logger.debug "Server #{@server_name} stopped...".green
27
+ else
28
+ raise "Server #{@server_name} does not exist!".red
29
+ end
30
+ end
31
+
32
+ def start
33
+ if @server
34
+ logger.debug "Starting #{@server_name}"
35
+ @server.start
36
+ wait_for_state() {|serv| serv.ready?}
37
+ logger.debug "[DONE]\n\n"
38
+ logger.debug "Server #{@server_name} started...".green
39
+ else
40
+ raise "Server #{@server_name} does not exist!".red
41
+ end
42
+ end
43
+
44
+ def destroy
45
+ if @server
46
+ logger.debug "Killing #{@server_name}"
47
+ @server.destroy
48
+ logger.debug "Server #{@server_name} destroying...".green
49
+ else
50
+ raise "Server #{@server_name} does not exist!".red
51
+ end
52
+ end
53
+
54
+ end
55
+ end
@@ -176,9 +176,8 @@ module AvstCloud
176
176
  if hdd.state == expected_state
177
177
  break
178
178
  end
179
- logger.debug(.)
180
179
  sleep 60
181
180
  end
182
181
  end
183
182
  end
184
- end
183
+ end
@@ -54,10 +54,6 @@ task :prepare_puppet_and_execute do
54
54
  execute :link_puppet
55
55
  execute :link_hiera
56
56
 
57
- if File.exist?("#{ENV["avst_cloud_config_dir"]}/keys")
58
- upload! "#{ENV["avst_cloud_config_dir"]}/keys", "/etc/puppet/config", recursive: true
59
- end
60
-
61
57
  within '/etc/puppet' do
62
58
  begin
63
59
  execute :execute_puppet_runner
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: avst-cloud
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.35
4
+ version: 0.1.36
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Brehovsky
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2018-10-03 00:00:00.000000000 Z
13
+ date: 2019-06-20 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: bundler
@@ -18,14 +18,14 @@ dependencies:
18
18
  requirements:
19
19
  - - "~>"
20
20
  - !ruby/object:Gem::Version
21
- version: 1.16.1
21
+ version: 1.17.3
22
22
  type: :development
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
26
  - - "~>"
27
27
  - !ruby/object:Gem::Version
28
- version: 1.16.1
28
+ version: 1.17.3
29
29
  - !ruby/object:Gem::Dependency
30
30
  name: rake
31
31
  requirement: !ruby/object:Gem::Requirement
@@ -69,47 +69,19 @@ dependencies:
69
69
  - !ruby/object:Gem::Version
70
70
  version: 1.43.0
71
71
  - !ruby/object:Gem::Dependency
72
- name: fog-azure
73
- requirement: !ruby/object:Gem::Requirement
74
- requirements:
75
- - - ">="
76
- - !ruby/object:Gem::Version
77
- version: '0'
78
- type: :runtime
79
- prerelease: false
80
- version_requirements: !ruby/object:Gem::Requirement
81
- requirements:
82
- - - ">="
83
- - !ruby/object:Gem::Version
84
- version: '0'
85
- - !ruby/object:Gem::Dependency
86
- name: fog-azure-rm
72
+ name: fog-google
87
73
  requirement: !ruby/object:Gem::Requirement
88
74
  requirements:
89
75
  - - '='
90
76
  - !ruby/object:Gem::Version
91
- version: 0.0.3
77
+ version: 1.8.2
92
78
  type: :runtime
93
79
  prerelease: false
94
80
  version_requirements: !ruby/object:Gem::Requirement
95
81
  requirements:
96
82
  - - '='
97
83
  - !ruby/object:Gem::Version
98
- version: 0.0.3
99
- - !ruby/object:Gem::Dependency
100
- name: azure
101
- requirement: !ruby/object:Gem::Requirement
102
- requirements:
103
- - - ">="
104
- - !ruby/object:Gem::Version
105
- version: '0'
106
- type: :runtime
107
- prerelease: false
108
- version_requirements: !ruby/object:Gem::Requirement
109
- requirements:
110
- - - ">="
111
- - !ruby/object:Gem::Version
112
- version: '0'
84
+ version: 1.8.2
113
85
  - !ruby/object:Gem::Dependency
114
86
  name: rvm-capistrano
115
87
  requirement: !ruby/object:Gem::Requirement
@@ -260,6 +232,7 @@ files:
260
232
  - bin/avst-cloud
261
233
  - bin/avst-cloud-azure
262
234
  - bin/avst-cloud-azure-rm
235
+ - bin/avst-cloud-gcp
263
236
  - bin/avst-cloud-puppet
264
237
  - bin/avst-cloud-rackspace
265
238
  - config/custom_system_config/hiera-configs/defaults/example.yaml
@@ -277,6 +250,8 @@ files:
277
250
  - lib/avst-cloud/azure_server.rb
278
251
  - lib/avst-cloud/cloud_connection.rb
279
252
  - lib/avst-cloud/cloud_server.rb
253
+ - lib/avst-cloud/gcp_connection.rb
254
+ - lib/avst-cloud/gcp_server.rb
280
255
  - lib/avst-cloud/logging.rb
281
256
  - lib/avst-cloud/rackspace_connection.rb
282
257
  - lib/avst-cloud/rackspace_server.rb
@@ -300,8 +275,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
300
275
  - !ruby/object:Gem::Version
301
276
  version: '0'
302
277
  requirements: []
303
- rubyforge_project:
304
- rubygems_version: 2.7.7
278
+ rubygems_version: 3.0.4
305
279
  signing_key:
306
280
  specification_version: 4
307
281
  summary: Automated creation, bootstrapping and provisioning of servers