avst-cloud 0.1.38 → 0.1.39

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ce616eddab00f500b04085c616b6cc4415b319dac8cf1a29973460fae64fe905
4
- data.tar.gz: 685fa1a66ec43f53726f9208ceb480633f94980d6b3039514407f232715628a1
3
+ metadata.gz: e554dc8cd38016db8c872e1f914121d5c3ea77656baf8728dfd4adeac4f1d46f
4
+ data.tar.gz: 56246f4e2eac57dba6b5e840cb037d64425e7d69b3cb44f7bf6e78da80b3c4ce
5
5
  SHA512:
6
- metadata.gz: 53d7bd60378e3e1114ff1ed000efa78b53acd75e73390496b05d41d8ae7f7a24a4158640c39c60bbb573a25e911725d40764c213d9c35b7749db46a3c2bef1da
7
- data.tar.gz: 0a274f0af0b36dd8f2a9a4e65913849366d3a6f33b671baae484cb0de99f4c2c9ac9cd44382673f40f6403e26ac7a28d02cfc03cf4e1f981c4a642896a9c999d
6
+ metadata.gz: 0b8cdba149899e18f325e7452e006c0b20d9fca52b334984682b092bba5784cfb6d028849d67a9b87c57e7e5a8e48c849b6940a181e7f9df74e12d598db1ba98
7
+ data.tar.gz: 2a02c5de191f28a462db748ae7f803758f5b13272731600df90ec34e4d1cfdbb5948aacfc49fd8f3a099ce54b1deabf7db56c90ec4e64e30312070996ee265bd
@@ -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.38'
7
+ spec.version = '0.1.39'
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 }
@@ -33,7 +33,7 @@ module AvstCloud
33
33
  AvstCloud::AwsServer.new(server, server_name, server.public_ip_address, root_user, root_password)
34
34
  end
35
35
 
36
- def create_server(server_name, flavour, os, key_name, ssh_key, subnet_id, security_group_ids, ebs_size, hdd_device_path, ami_image_id, availability_zone, additional_hdds={}, vpc=nil, created_by=nil, custom_tags={}, root_username=nil, create_elastic_ip=false)
36
+ def create_server(server_name, flavour, os, key_name, ssh_key, subnet_id, security_group_ids, ebs_size, hdd_device_path, ami_image_id, availability_zone, additional_hdds={}, vpc=nil, created_by=nil, custom_tags={}, root_username=nil, create_elastic_ip=false, encrypt_root=false ,root_encryption_key=nil, delete_root_disk=true, root_disk_type='gp2', root_disk_iops=0)
37
37
  # Permit named instances from DEFAULT_FLAVOURS
38
38
  flavour = flavour || "t2.micro"
39
39
  os = os || "ubuntu-14"
@@ -91,22 +91,56 @@ module AvstCloud
91
91
  create_ebs_volume = nil
92
92
  if ebs_size
93
93
  # in case of centos ami we need to use /dev/xvda this is ami dependent
94
- create_ebs_volume = [
95
- {
96
- :DeviceName => device_name,
97
- 'Ebs.VolumeType' => 'gp2',
98
- 'Ebs.VolumeSize' => ebs_size,
99
- }
100
- ]
94
+ root_disk = {
95
+ :DeviceName => device_name,
96
+ 'Ebs.VolumeType' => root_disk_type,
97
+ 'Ebs.VolumeSize' => ebs_size,
98
+ }
99
+ # if the root disk is to be encrypted set te "Encrypted" flag to true, if there is an optional KMS Key ID send that,
100
+ # if not set to nil and thereby defalt to the default key for EBS
101
+ if encrypt_root
102
+ root_disk.merge!('Ebs.Encrypted' => true, 'Ebs.KmsKeyId' => root_encryption_key||nil )
103
+ end
104
+
105
+ # if we do not want to delete the root disk with the VM set the flag
106
+ if delete_root_disk == false || delete_root_disk == 'false'
107
+ root_disk.merge!('Ebs.DeleteOnTermination' => false)
108
+ end
109
+
110
+ # if this is a provisioned IOPS disk set the iops value
111
+ if root_disk_type == 'io1'
112
+ root_disk.merge!('Ebs.Iops' => root_disk_iops)
113
+ end
114
+ # add the root disk as the first entry in the array of disks to create/attach
115
+ create_ebs_volume = [ root_disk ]
116
+
101
117
  if additional_hdds and additional_hdds.is_a?(Hash)
102
118
  additional_hdds.each_value do |disk|
103
119
  volume_type = disk['volume_type'] || 'gp2'
104
120
  if disk['device_name'] && disk['ebs_size']
105
- create_ebs_volume << {
121
+ disk_hash = {
106
122
  :DeviceName => disk['device_name'],
107
123
  'Ebs.VolumeType' => volume_type,
108
124
  'Ebs.VolumeSize' => disk['ebs_size']
109
125
  }
126
+ # if the additional disk is to be encrypted set te "Encrypted" flag to true, if there is an optional KMS Key ID send that,
127
+ # if not set to nil and thereby defalt to the default key for EBS
128
+ if disk['encrypted']
129
+ disk_hash.merge!('Ebs.Encrypted' => true, 'Ebs.KmsKeyId' => disk['encryption_key_id'] || nil)
130
+ end
131
+
132
+ # if we do not want to delete the additional disk with the VM set the flag
133
+ if disk['delete_disk_with_vm'] == false || disk['delete_disk_with_vm'] == 'false'
134
+ disk_hash.merge!('Ebs.DeleteOnTermination' => false)
135
+ end
136
+
137
+ # if the additional disk is an provisioned IOPS disk set the iops value
138
+ if volume_type == 'io1'
139
+ disk_hash.merge!('Ebs.Iops' => disk['volume_iops'] || 0)
140
+ end
141
+
142
+ # add this disk to the array of all disks to create/attach
143
+ create_ebs_volume << disk_hash
110
144
  else
111
145
  logger.warn "Failed to create additional hdd, required params device_name (e.g. /dev/sda1) or ebs_size missing: #{disk}"
112
146
  end
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.38
4
+ version: 0.1.39
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: 2020-03-13 00:00:00.000000000 Z
13
+ date: 2020-08-21 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: bundler
@@ -275,8 +275,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
275
275
  - !ruby/object:Gem::Version
276
276
  version: '0'
277
277
  requirements: []
278
- rubyforge_project:
279
- rubygems_version: 2.7.7
278
+ rubygems_version: 3.0.8
280
279
  signing_key:
281
280
  specification_version: 4
282
281
  summary: Automated creation, bootstrapping and provisioning of servers