avst-cloud 0.1.38 → 0.1.39

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: 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