ciinabox-ecs 0.3.2 → 0.4.1

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: 290615a87906adae6078212fa7b2b73f1675f0a64eec2820e7652d24e1f29ae9
4
- data.tar.gz: 99e29c42c55cb2265b560ad944bb405d382c1ec981d80b03e5421a28dc32d22a
3
+ metadata.gz: 6cb8948addbd8934d3ce023ebe42cdc62c351543cd18e3bab5bcede51b721cd8
4
+ data.tar.gz: b9580c6df69c88aae63efa127df2c2f7776f5d43be0e3786571f2377813a120b
5
5
  SHA512:
6
- metadata.gz: f4f836716a32b0307e092446ba77a288f8d45a0518372f28ec8efe0700f94261ce3565266666f8449c17ebc25c262d8660c376a955ca0d58d7ef950542f8f1f1
7
- data.tar.gz: 6de2338585808d75804ca6592089ebced3e930c3d529aab78c06648f91470eafc9222756d26852b33305c450b6dd84fbf70d0936258efc7d5e643b9a3b3074bc
6
+ metadata.gz: dfaf07f44c8c9df46e421deede422ec11d8c487127164e3976b42afeb662cd395b00e261d2efd34c9efd19a136e02956fdc635f85cd0e4973667f0e44af04f28
7
+ data.tar.gz: 3a56e95ab477129ef96d2bfbb47c33ef08606c3eea4f4260410f76f3debf1c3de3bcb635f706392955cd7a4060442b70cdf72b1b1a9d61b1570eb377396a933b
data/README.md CHANGED
@@ -234,6 +234,23 @@ A common update would be to lock down ip access to your ciinabox environment
234
234
  ....
235
235
  ```
236
236
 
237
+ or using AWS IP Prefix Lists
238
+
239
+ ```yaml
240
+ ....
241
+ #Environment Access
242
+ #add list of public IP addresses you want to access the environment from
243
+ #default to public access probably best to change this
244
+ opsIpPrefixLists:
245
+ - pl-12345
246
+ - pl-abcde
247
+ #add list of public IP addresses for your developers to access the environment
248
+ #default to public access probably best to change this
249
+ devIpPrefixLists:
250
+ - pl-11111
251
+ ....
252
+ ```
253
+
237
254
  2. update your ciinabox
238
255
  ```bash
239
256
  $ ciinabox-ecs generate deploy update [ciinabox_name]
@@ -137,20 +137,23 @@ CloudFormation {
137
137
  ])
138
138
  }
139
139
 
140
- if defined? webHooks
141
- rules = []
142
- webHooks.each do |ip|
143
- rules << { IpProtocol: 'tcp', FromPort: '443', ToPort: '443', CidrIp: ip }
144
- end
145
- else
146
- rules = [{ IpProtocol: 'tcp', FromPort: '443', ToPort: '443', CidrIp: '192.168.1.1/32' }]
140
+ webHooks = webHooks || []
141
+ webHooksIpPrefixLists = webHooksIpPrefixLists || []
142
+
143
+ rules = []
144
+ webHooks.each do |ip|
145
+ rules << { IpProtocol: 'tcp', FromPort: '443', ToPort: '443', CidrIp: ip }
146
+ end
147
+
148
+ webHooksIpPrefixLists.each do |list|
149
+ rules << { IpProtocol: 'tcp', FromPort: '443', ToPort: '443', SourcePrefixListId: list }
147
150
  end
148
151
 
149
152
  Resource("SecurityGroupWebHooks") {
150
153
  Type 'AWS::EC2::SecurityGroup'
151
154
  Property('VpcId', Ref('VPC'))
152
155
  Property('GroupDescription', 'WebHooks like github')
153
- Property('SecurityGroupIngress', rules)
156
+ Property('SecurityGroupIngress', rules) if rules.any?
154
157
  }
155
158
 
156
159
  Resource('ToolsSSLCertificate') {
@@ -261,6 +264,14 @@ CloudFormation {
261
264
  end
262
265
  end
263
266
 
267
+ log_group_retention = log_group_retention || 90
268
+
269
+ Resource("LogGroup") {
270
+ Type "AWS::Logs::LogGroup"
271
+ Property("LogGroupName", "/ciinabox/#{ciinabox_name}/proxy")
272
+ Property("RetentionInDays", log_group_retention)
273
+ }
274
+
264
275
  volumes = []
265
276
  mount_points = []
266
277
 
@@ -290,6 +301,14 @@ CloudFormation {
290
301
  HostPort: 8080,
291
302
  ContainerPort: 80
292
303
  }],
304
+ LogConfiguration: {
305
+ LogDriver: 'awslogs',
306
+ Options: {
307
+ 'awslogs-group' => Ref("LogGroup"),
308
+ "awslogs-region" => Ref("AWS::Region"),
309
+ "awslogs-stream-prefix" => "proxy"
310
+ }
311
+ },
293
312
  Essential: true,
294
313
  MountPoints: mount_points
295
314
  }
@@ -1,189 +1,219 @@
1
1
  require 'cfndsl'
2
2
  require_relative '../../ext/helper'
3
3
 
4
- if !defined? timezone
5
- timezone = 'GMT'
6
- end
7
-
8
- if !defined? internal_elb
9
- internal_elb = nil
10
- end
11
-
12
- if !defined? volatile_jenkins_slave
13
- volatile_jenkins_slave = false
14
- end
15
-
16
- # Prefixing application images allows us to 'vendorize' ciinabox into client's account by setting
17
- # ciinabox_repo to ${account_no}.dkr.ecr.${region}.amazonaws.com
18
- if not defined? ciinabox_repo
19
- ciinabox_repo = 'ghcr.io/base2services'
20
- end
21
- image = "#{ciinabox_repo}/ciinabox-jenkins:lts"
22
-
23
- jenkins_java_opts = ''
24
- memory = 2048
25
- slave_memory = 2048
26
- cpu = 300
27
- container_port = 0
28
- service = lookup_service('jenkins', services)
29
- virtual_host = "jenkins.#{dns_domain}"
30
- if defined? internal_elb and internal_elb
31
- virtual_host = "#{virtual_host},internal-jenkins.#{dns_domain}"
32
- end
33
- port_mappings = []
34
-
35
- if defined? service
36
- service = {} if service.nil?
37
- jenkins_java_opts = service['JAVA_OPTS'] || ''
38
- image = service['ContainerImage'] || image
39
- memory = service['ContainerMemory'] || 2048
40
- slave_memory = service['SlaveContainerMemory'] || 2048
41
- cpu = service['ContainerCPU'] || 300
42
-
43
- if service['InstancePort']
44
- port_mappings << {
45
- HostPort: service['InstancePort'],
46
- ContainerPort: service['InstancePort']
47
- }
48
- container_port = service['InstancePort']
49
- virtual_host = "jenkins.#{dns_domain},internal-jenkins.#{dns_domain}"
4
+ CloudFormation {
5
+ AWSTemplateFormatVersion "2010-09-09"
6
+ Description "ciinabox - ECS Service Jenkins v#{ciinabox_version}"
7
+
8
+ Parameter("ECSCluster") {Type 'String'}
9
+ Parameter("ECSRole") {Type 'String'}
10
+ Parameter("ServiceELB") {Type 'String'}
11
+ Parameter('InternalELB') {Type 'String'} if internal_elb
12
+
13
+ if !defined? timezone
14
+ timezone = 'GMT'
50
15
  end
51
16
 
52
- end
17
+ if !defined? internal_elb
18
+ internal_elb = nil
19
+ end
53
20
 
54
- # container volumes and container definitions depending on feature flags
55
- volumes = [
56
- {
57
- Name: 'timezone',
58
- Host: {
59
- SourcePath: '/etc/localtime'
60
- }
61
- },
62
- {
63
- Name: 'jenkins_data',
64
- Host: {
65
- SourcePath: '/data/jenkins'
66
- }
67
- }]
68
-
69
- container_definitions = [
70
- {
71
- Name: 'jenkins',
72
- Links: [],
73
- Memory: memory,
74
- Cpu: cpu,
75
- Image: image,
76
- PortMappings: port_mappings,
77
- Environment: [
78
- {
79
- Name: 'JAVA_OPTS',
80
- Value: "#{jenkins_java_opts} -Duser.timezone=#{timezone}"
81
- },
82
- {
83
- Name: 'VIRTUAL_HOST',
84
- Value: virtual_host
85
- },
86
- {
87
- Name: 'VIRTUAL_PORT',
88
- Value: '8080'
89
- }
90
- ],
91
- Essential: true,
21
+ if !defined? volatile_jenkins_slave
22
+ volatile_jenkins_slave = false
23
+ end
24
+
25
+ # Prefixing application images allows us to 'vendorize' ciinabox into client's account by setting
26
+ # ciinabox_repo to ${account_no}.dkr.ecr.${region}.amazonaws.com
27
+ if not defined? ciinabox_repo
28
+ ciinabox_repo = 'ghcr.io/base2services'
29
+ end
30
+ image = "#{ciinabox_repo}/ciinabox-jenkins:lts"
31
+
32
+ jenkins_java_opts = ''
33
+ memory = 2048
34
+ slave_memory = 2048
35
+ cpu = 300
36
+ container_port = 0
37
+ service = lookup_service('jenkins', services)
38
+ virtual_host = "jenkins.#{dns_domain}"
39
+ if defined? internal_elb and internal_elb
40
+ virtual_host = "#{virtual_host},internal-jenkins.#{dns_domain}"
41
+ end
42
+ port_mappings = []
43
+
44
+ if defined? service
45
+ service = {} if service.nil?
46
+ jenkins_java_opts = service['JAVA_OPTS'] || ''
47
+ image = service['ContainerImage'] || image
48
+ memory = service['ContainerMemory'] || 2048
49
+ slave_memory = service['SlaveContainerMemory'] || 2048
50
+ cpu = service['ContainerCPU'] || 300
51
+
52
+ if service['InstancePort']
53
+ port_mappings << {
54
+ HostPort: service['InstancePort'],
55
+ ContainerPort: service['InstancePort']
56
+ }
57
+ container_port = service['InstancePort']
58
+ virtual_host = "jenkins.#{dns_domain},internal-jenkins.#{dns_domain}"
59
+ end
60
+
61
+ end
62
+
63
+ # container volumes and container definitions depending on feature flags
64
+ volumes = [
65
+ {
66
+ Name: 'timezone',
67
+ Host: {
68
+ SourcePath: '/etc/localtime'
69
+ }
70
+ },
71
+ {
72
+ Name: 'jenkins_data',
73
+ Host: {
74
+ SourcePath: '/data/jenkins'
75
+ }
76
+ }]
77
+
78
+ container_definitions = [
79
+ {
80
+ Name: 'jenkins',
81
+ Links: [],
82
+ Memory: memory,
83
+ Cpu: cpu,
84
+ Image: image,
85
+ PortMappings: port_mappings,
86
+ Environment: [
87
+ {
88
+ Name: 'JAVA_OPTS',
89
+ Value: "#{jenkins_java_opts} -Duser.timezone=#{timezone}"
90
+ },
91
+ {
92
+ Name: 'VIRTUAL_HOST',
93
+ Value: virtual_host
94
+ },
95
+ {
96
+ Name: 'VIRTUAL_PORT',
97
+ Value: '8080'
98
+ }
99
+ ],
100
+ LogConfiguration: {
101
+ LogDriver: 'awslogs',
102
+ Options: {
103
+ 'awslogs-group' => Ref("LogGroup"),
104
+ "awslogs-region" => Ref("AWS::Region"),
105
+ "awslogs-stream-prefix" => "jenkins"
106
+ }
107
+ },
108
+ Essential: true,
109
+ MountPoints: [
110
+ {
111
+ ContainerPath: '/etc/localtime',
112
+ SourceVolume: 'timezone',
113
+ ReadOnly: true
114
+ },
115
+ {
116
+ ContainerPath: '/var/jenkins_home',
117
+ SourceVolume: 'jenkins_data',
118
+ ReadOnly: false
119
+ }
120
+ ]
121
+ }
122
+ ]
123
+
124
+ # If docker in docker slave is enabled
125
+ if defined? include_diind_slave and include_diind_slave
126
+ container_definitions[0][:Links] << 'jenkins-docker-dind-slave'
127
+ dind_definition = {
128
+ Name: 'jenkins-docker-dind-slave',
129
+ Memory: slave_memory,
130
+ Image: "#{ciinabox_repo}/ciinabox-docker-slave:#{docker_slave_version}",
131
+ Environment: [{Name: 'RUN_DOCKER_IN_DOCKER', Value: 1}],
132
+ LogConfiguration: {
133
+ LogDriver: 'awslogs',
134
+ Options: {
135
+ 'awslogs-group' => Ref("LogGroup"),
136
+ "awslogs-region" => Ref("AWS::Region"),
137
+ "awslogs-stream-prefix" => "jenkins-docker-dind-slave"
138
+ }
139
+ },
140
+ Essential: false,
141
+ Privileged: true
142
+ }
143
+ dind_definition[:Environment] << { Name: 'USE_ECR_CREDENTIAL_HELPER', Value: 1 } if docker_slave_enable_ecr_credentials_helper
144
+ if not volatile_jenkins_slave
145
+ dind_definition[:MountPoints] = [
146
+ {
147
+ ContainerPath: '/var/lib/docker',
148
+ SourceVolume: 'jenkins_dind_data',
149
+ ReadOnly: false
150
+ }
151
+ ]
152
+ volumes << {
153
+ Name: 'jenkins_dind_data',
154
+ Host: {
155
+ SourcePath: '/data/jenkins-diind'
156
+ }
157
+ }
158
+ end
159
+ container_definitions << dind_definition
160
+
161
+ end
162
+
163
+ # If docker outside of docker slave is enabled
164
+ if defined? include_dood_slave and include_dood_slave
165
+ container_definitions[0][:Links] << 'jenkins-docker-dood-slave'
166
+ dood_definition = {
167
+ Name: 'jenkins-docker-dood-slave',
168
+ Memory: slave_memory,
169
+ Image: "#{ciinabox_repo}/ciinabox-docker-slave:#{docker_slave_version}",
170
+ Environment: [{Name: 'RUN_DOCKER_IN_DOCKER', Value: 0}],
171
+ LogConfiguration: {
172
+ LogDriver: 'awslogs',
173
+ Options: {
174
+ 'awslogs-group' => Ref("LogGroup"),
175
+ "awslogs-region" => Ref("AWS::Region"),
176
+ "awslogs-stream-prefix" => "jenkins-docker-dood-slave"
177
+ }
178
+ },
92
179
  MountPoints: [
93
180
  {
94
- ContainerPath: '/etc/localtime',
95
- SourceVolume: 'timezone',
96
- ReadOnly: true
181
+ ContainerPath: '/var/run/docker.sock',
182
+ SourceVolume: 'docker_socket',
183
+ ReadOnly: false
97
184
  },
98
185
  {
99
- ContainerPath: '/var/jenkins_home',
100
- SourceVolume: 'jenkins_data',
186
+ ContainerPath: '/data/jenkins-dood',
187
+ SourceVolume: 'jenkins_dood_data',
101
188
  ReadOnly: false
102
189
  }
103
- ]
190
+ ],
191
+ Essential: false,
192
+ Privileged: false
104
193
  }
105
- ]
106
-
107
- # If docker in docker slave is enabled
108
- if defined? include_diind_slave and include_diind_slave
109
- container_definitions[0][:Links] << 'jenkins-docker-dind-slave'
110
- dind_definition = {
111
- Name: 'jenkins-docker-dind-slave',
112
- Memory: slave_memory,
113
- Image: "#{ciinabox_repo}/ciinabox-docker-slave:#{docker_slave_version}",
114
- Environment: [{Name: 'RUN_DOCKER_IN_DOCKER', Value: 1}],
115
- Essential: false,
116
- Privileged: true
117
- }
118
- dind_definition[:Environment] << { Name: 'USE_ECR_CREDENTIAL_HELPER', Value: 1 } if docker_slave_enable_ecr_credentials_helper
119
- if not volatile_jenkins_slave
120
- dind_definition[:MountPoints] = [
121
- {
122
- ContainerPath: '/var/lib/docker',
123
- SourceVolume: 'jenkins_dind_data',
124
- ReadOnly: false
194
+ dood_definition[:Environment] << { Name: 'USE_ECR_CREDENTIAL_HELPER', Value: 1 } if docker_slave_enable_ecr_credentials_helper
195
+ container_definitions << dood_definition
196
+ volumes << {
197
+ Name: 'jenkins_dood_data',
198
+ Host: {
199
+ SourcePath: '/data/jenkins-dood'
125
200
  }
126
- ]
201
+ }
127
202
  volumes << {
128
- Name: 'jenkins_dind_data',
203
+ Name: 'docker_socket',
129
204
  Host: {
130
- SourcePath: '/data/jenkins-diind'
205
+ SourcePath: '/var/run/docker.sock'
131
206
  }
132
207
  }
133
208
  end
134
- container_definitions << dind_definition
135
-
136
- end
137
-
138
- # If docker outside of docker slave is enabled
139
- if defined? include_dood_slave and include_dood_slave
140
- container_definitions[0][:Links] << 'jenkins-docker-dood-slave'
141
- dood_definition = {
142
- Name: 'jenkins-docker-dood-slave',
143
- Memory: slave_memory,
144
- Image: "#{ciinabox_repo}/ciinabox-docker-slave:#{docker_slave_version}",
145
- Environment: [{Name: 'RUN_DOCKER_IN_DOCKER', Value: 0}],
146
- MountPoints: [
147
- {
148
- ContainerPath: '/var/run/docker.sock',
149
- SourceVolume: 'docker_socket',
150
- ReadOnly: false
151
- },
152
- {
153
- ContainerPath: '/data/jenkins-dood',
154
- SourceVolume: 'jenkins_dood_data',
155
- ReadOnly: false
156
- }
157
- ],
158
- Essential: false,
159
- Privileged: false
160
- }
161
- dood_definition[:Environment] << { Name: 'USE_ECR_CREDENTIAL_HELPER', Value: 1 } if docker_slave_enable_ecr_credentials_helper
162
- container_definitions << dood_definition
163
- volumes << {
164
- Name: 'jenkins_dood_data',
165
- Host: {
166
- SourcePath: '/data/jenkins-dood'
167
- }
168
- }
169
- volumes << {
170
- Name: 'docker_socket',
171
- Host: {
172
- SourcePath: '/var/run/docker.sock'
173
- }
174
- }
175
- end
176
-
177
209
 
178
- CloudFormation {
210
+ log_group_retention = log_group_retention || 90
179
211
 
180
- AWSTemplateFormatVersion "2010-09-09"
181
- Description "ciinabox - ECS Service Jenkins v#{ciinabox_version}"
182
-
183
- Parameter("ECSCluster") {Type 'String'}
184
- Parameter("ECSRole") {Type 'String'}
185
- Parameter("ServiceELB") {Type 'String'}
186
- Parameter('InternalELB') {Type 'String'} if internal_elb
212
+ Resource("LogGroup") {
213
+ Type "AWS::Logs::LogGroup"
214
+ Property("LogGroupName", "/ciinabox/#{ciinabox_name}/jenkins")
215
+ Property("RetentionInDays", log_group_retention)
216
+ }
187
217
 
188
218
  Resource('JenkinsTask') {
189
219
  Type "AWS::ECS::TaskDefinition"
data/templates/vpc.rb CHANGED
@@ -158,6 +158,9 @@ CloudFormation {
158
158
  end
159
159
 
160
160
  rules = []
161
+
162
+ opsAccess = opsAccess || []
163
+
161
164
  opsAccess.each do |ip|
162
165
  rules << { IpProtocol: 'tcp', FromPort: '22', ToPort: '22', CidrIp: ip }
163
166
  rules << { IpProtocol: 'tcp', FromPort: '80', ToPort: '80', CidrIp: ip }
@@ -167,14 +170,24 @@ CloudFormation {
167
170
  rules << { IpProtocol: 'tcp', FromPort: '50000', ToPort: '50000', CidrIp: ip }
168
171
  end
169
172
 
173
+ opsIpPrefixLists = opsIpPrefixLists || []
174
+
175
+ opsIpPrefixLists.each do |list|
176
+ rules << { IpProtocol: 'tcp', FromPort: '80', ToPort: '80', SourcePrefixListId: list }
177
+ rules << { IpProtocol: 'tcp', FromPort: '443', ToPort: '443', SourcePrefixListId: list }
178
+ end
179
+
170
180
  Resource("SecurityGroupOps") {
171
181
  Type 'AWS::EC2::SecurityGroup'
172
182
  Property('VpcId', Ref('VPC'))
173
183
  Property('GroupDescription', 'Ops External Access')
174
- Property('SecurityGroupIngress', rules)
184
+ Property('SecurityGroupIngress', rules) if rules.any?
175
185
  }
176
186
 
177
187
  rules = []
188
+
189
+ devAccess = devAccess || []
190
+
178
191
  devAccess.each do |ip|
179
192
  rules << { IpProtocol: 'tcp', FromPort: '22', ToPort: '22', CidrIp: ip }
180
193
  rules << { IpProtocol: 'tcp', FromPort: '80', ToPort: '80', CidrIp: ip }
@@ -184,11 +197,18 @@ CloudFormation {
184
197
  rules << { IpProtocol: 'tcp', FromPort: '50000', ToPort: '50000', CidrIp: ip }
185
198
  end
186
199
 
200
+ devIpPrefixLists = devIpPrefixLists || []
201
+
202
+ devIpPrefixLists.each do |list|
203
+ rules << { IpProtocol: 'tcp', FromPort: '80', ToPort: '80', SourcePrefixListId: list }
204
+ rules << { IpProtocol: 'tcp', FromPort: '443', ToPort: '443', SourcePrefixListId: list }
205
+ end
206
+
187
207
  Resource("SecurityGroupDev") {
188
208
  Type 'AWS::EC2::SecurityGroup'
189
209
  Property('VpcId', Ref('VPC'))
190
210
  Property('GroupDescription', 'Dev Team Access')
191
- Property('SecurityGroupIngress', rules)
211
+ Property('SecurityGroupIngress', rules) if rules.any?
192
212
  }
193
213
 
194
214
 
@@ -286,4 +306,4 @@ CloudFormation {
286
306
  Value(Ref('SecurityGroupDev'))
287
307
  }
288
308
 
289
- }
309
+ }
data/templates/vpn.rb CHANGED
@@ -41,6 +41,9 @@ CloudFormation do
41
41
  security_groups << Ref('VpnSecurityGroupOps')
42
42
 
43
43
  rules = []
44
+
45
+ devAccess = devAccess || []
46
+
44
47
  devAccess.each do |ip|
45
48
  rules << { IpProtocol: 'tcp', FromPort: '443', ToPort: '443', CidrIp: ip }
46
49
  rules << { IpProtocol: 'tcp', FromPort: '9443', ToPort: '9443', CidrIp: ip }
@@ -48,11 +51,20 @@ CloudFormation do
48
51
  rules << { IpProtocol: 'udp', FromPort: '1194', ToPort: '1194', CidrIp: ip }
49
52
  end
50
53
 
54
+ devIpPrefixLists = devIpPrefixLists || []
55
+
56
+ devIpPrefixLists.each do |list|
57
+ rules << { IpProtocol: 'tcp', FromPort: '443', ToPort: '443', SourcePrefixListId: list }
58
+ rules << { IpProtocol: 'tcp', FromPort: '9443', ToPort: '9443', SourcePrefixListId: list }
59
+ rules << { IpProtocol: 'tcp', FromPort: '943', ToPort: '943', SourcePrefixListId: list }
60
+ rules << { IpProtocol: 'udp', FromPort: '1194', ToPort: '1194', SourcePrefixListId: list }
61
+ end
62
+
51
63
  Resource("VpnSecurityGroupDev") {
52
64
  Type 'AWS::EC2::SecurityGroup'
53
65
  Property('VpcId', Ref('VPC'))
54
66
  Property('GroupDescription', 'Dev Team Access')
55
- Property('SecurityGroupIngress', rules)
67
+ Property('SecurityGroupIngress', rules) if rules.any?
56
68
  }
57
69
 
58
70
  security_groups << Ref('VpnSecurityGroupDev')
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ciinabox-ecs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Base2Services
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-06-08 00:00:00.000000000 Z
11
+ date: 2021-09-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -169,7 +169,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
169
169
  - !ruby/object:Gem::Version
170
170
  version: '0'
171
171
  requirements: []
172
- rubygems_version: 3.2.19
172
+ rubygems_version: 3.1.6
173
173
  signing_key:
174
174
  specification_version: 4
175
175
  summary: Manage ciinabox on Aws Ecs