-
Notifications
You must be signed in to change notification settings - Fork 17
/
ACS-ESS-RollingUpdateByUpdateContainerGroup.yml
345 lines (345 loc) · 10.3 KB
/
ACS-ESS-RollingUpdateByUpdateContainerGroup.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
FormatVersion: OOS-2019-06-01
Description:
en: Rolling update ECI instances in scaling group by update container group
zh-cn: 通过更新容器组的方式滚动更新伸缩组内的ECI实例
name-en: ACS-ESS-RollingUpdateByUpdateContainerGroup
name-zh-cn: 通过更新容器组的方式滚动更新伸缩组内的ECI实例
categories:
- elastic_manage
Parameters:
invokeType:
Label:
en: InvokeType
zh-cn: 操作类型
Type: String
AllowedValues:
- invoke
- rollback
scalingGroupId:
Label:
en: ScalingGroupId
zh-cn: 伸缩组ID
Type: String
enterProcess:
Label:
en: EnterProcess
zh-cn: 执行开始要暂停的伸缩组流程
Type: List
Default:
- ScaleIn
- ScaleOut
- HealthCheck
- AlarmNotification
- ScheduledAction
exitProcess:
Label:
en: ExitProcess
zh-cn: 执行结束要恢复的伸缩组流程
Type: List
Default:
- ScaleIn
- ScaleOut
- HealthCheck
- AlarmNotification
- ScheduledAction
containerConfigure:
Label:
en: ContainerConfigure
zh-cn: 用于更新的容器配置
Type: Json
sourceContainerConfigure:
Label:
en: SourceContainerConfigure
zh-cn: 用于回滚的容器配置
Type: Json
Default: {}
updateType:
Label:
en: ContainersUpdateType
zh-cn: Containers参数更新方式
Description:
en: >-
<ul class="ul">
<li class="li">RenewUpdate: Full update, all related parameters need to be filled in when updating. If the parameter is a List, it does not support updating an item individually, and if the parameter is a structure, it does not support updating an internal member individually. </li>
<li class="li">IncrementalUpdate: Incremental update, when updating, you can only fill in a parameter that needs to be updated, and other related parameters remain unchanged. </li>
</ul>
zh-cn: >-
<ul class="ul">
<li class="li">RenewUpdate:全量更新,更新时需填写相关的所有参数。如果参数是一个List,不支持单独更新某个item,如果参数是一个结构体,不支持单独更新某个内部成员。</li>
<li class="li">IncrementalUpdate:增量更新,更新时可以只填某一需要更新的参数,其它相关参数保持原有不变。</li>
</ul>
Type: String
AllowedValues:
- RenewUpdate
- IncrementalUpdate
Default: IncrementalUpdate
sourceExecutionId:
Label:
en: SourceExecutionId
zh-cn: 用于回滚的OOS执行ID
Type: String
Default: ''
scalingConfigurationId:
Label:
en: ScalingConfigurationId
zh-cn: 伸缩配置ID
Type: String
batchPauseOption:
Label:
en: BatchPauseOption
zh-cn: 分批模式
Type: String
AllowedValues:
- Automatic
- FirstBatchPause
- EveryBatchPause
Default: Automatic
batchNumber:
Label:
en: BatchNumber
zh-cn: 分批执行的批次
Type: Number
MinValue: 1
MaxValue: 100
Default: 5
maxErrors:
Label:
en: MaxErrors
zh-cn: 分批执行的最大错误次数
Type: Number
Default: 0
OOSAssumeRole:
Label:
en: OOSAssumeRole
zh-cn: OOS扮演的RAM角色
Type: String
Default: ''
RamRole: '{{ OOSAssumeRole }}'
Tasks:
- Name: choiceNextTask
Action: ACS::Choice
Description:
en: Choose next task by invoke type
zh-cn: 根据执行的类型选择执行的任务
Properties:
DefaultTask: getInstance
Choices:
- When:
Fn::Equals:
- rollback
- '{{ invokeType }}'
NextTask: getExecutionInstanceIds
- Name: getInstance
Description:
en: Get the ECI instances
zh-cn: 获取ECI实例
Action: ACS::ExecuteApi
Properties:
Service: ESS
API: DescribeScalingInstances
Parameters:
ScalingGroupId: '{{ scalingGroupId }}'
LifecycleState: InService
Outputs:
instanceIds:
Type: List
ValueSelector: ScalingInstances.ScalingInstance[].InstanceId
- Name: whetherTheScalingGroupInstanceIsEmpty
Action: ACS::Choice
Description:
en: Check whether the instance in the service in the scaling group is empty
zh-cn: 检查伸缩组内服务中的实例是否为空
Properties:
DefaultTask: whetherToSuspendProcess
Choices:
- When:
Fn::Equals:
- []
- '{{ getInstance.instanceIds }}'
NextTask: modifyScalingConfigurationForInvoke
- Name: whetherToSuspendProcess
Action: ACS::Choice
Description:
en: Choose next task by process
zh-cn: 根据流程值判断是否暂停流程
Properties:
DefaultTask: suspendProcess
Choices:
- When:
Fn::Equals:
- []
- '{{ enterProcess }}'
NextTask: invokeByUpdateContainerGroup
- Name: suspendProcess
Action: ACS::ExecuteAPI
Description:
en: Suspend process
zh-cn: 暂停伸缩组流程
Properties:
Service: ESS
API: SuspendProcesses
Parameters:
ScalingGroupId: '{{ scalingGroupId }}'
Process: '{{ enterProcess }}'
- Name: invokeByUpdateContainerGroup
Action: ACS::ESS::UpdateContainerGroup
Description:
en: Update Container Group
zh-cn: 更新容器组
Properties:
instanceId: '{{ ACS::TaskLoopItem }}'
scalingGroupId: '{{ scalingGroupId }}'
containerConfigure: '{{ containerConfigure }}'
updateType: '{{ updateType }}'
Loop:
Items: '{{ getInstance.instanceIds }}'
BatchPauseOption: '{{ batchPauseOption }}'
Concurrency:
Fn::CalculateBatch:
- '{{ batchNumber }}'
- '{{ getInstance.instanceIds }}'
- Name: modifyScalingConfigurationForInvoke
Action: ACS::ExecuteAPI
Description:
en: Modify scaling configuration for invoke
zh-cn: 更新操作修改伸缩配置
Properties:
Service: ESS
API: ModifyEciScalingConfiguration
Parameters:
ScalingConfigurationId: '{{ scalingConfigurationId }}'
Container: '{{ containerConfigure }}'
ContainersUpdateType: '{{ updateType }}'
- Name: whetherToResumeProcessesByGroupInstances
Action: ACS::Choice
Description:
en: Check whether the instance in the service in the scaling group is empty
zh-cn: 检查伸缩组内服务中的实例是否为空
Properties:
DefaultTask: whetherToResumeProcesses
Choices:
- When:
Fn::Equals:
- []
- '{{ getInstance.instanceIds }}'
NextTask: ACS::END
- Name: whetherToResumeProcesses
Action: ACS::Choice
Description:
en: Choose next task by process
zh-cn: 根据流程值判断是否恢复流程
Properties:
DefaultTask: resumeProcesses
Choices:
- When:
Fn::Equals:
- []
- '{{ exitProcess }}'
NextTask: ACS::END
- Name: resumeProcesses
Action: ACS::ExecuteAPI
OnSuccess: ACS::END
Description:
en: Resume process
zh-cn: 恢复伸缩组流程
Properties:
Service: ESS
API: ResumeProcesses
Parameters:
ScalingGroupId: '{{ scalingGroupId }}'
Process: '{{ exitProcess }}'
- Name: getExecutionInstanceIds
Action: ACS::ExecuteAPI
Description:
en: Get the instance id that has been updated
zh-cn: 获取已经更新容器的实例ID
Properties:
Service: OOS
API: ListExecutions
Parameters:
ParentExecutionId: '{{ sourceExecutionId }}'
Outputs:
instanceIds:
Type: List
ValueSelector: .Executions[].Parameters.instanceId
- Name: getRollbackProcess
Action: ACS::ExecuteAPI
Description:
en: Get resource parameters
zh-cn: 获取源执行的参数
Properties:
Service: OOS
API: ListExecutions
Parameters:
ExecutionId: '{{ sourceExecutionId }}'
Outputs:
enterProcess:
Type: List
ValueSelector: Executions[].Parameters.enterProcess[]
exitProcess:
Type: List
ValueSelector: Executions[].Parameters.exitProcess[]
- Name: suspendProcessWithRollBack
Action: ACS::ExecuteAPI
Description:
en: Suspend process
zh-cn: 暂停伸缩组流程
Properties:
Service: ESS
API: SuspendProcesses
Parameters:
ScalingGroupId: '{{ scalingGroupId }}'
Process: '{{ getRollbackProcess.enterProcess }}'
- Name: rollbackByUpdateContainerGroup
Action: ACS::ESS::UpdateContainerGroup
Description:
en: Update container group for rollback
zh-cn: 回滚更新容器组
Properties:
instanceId: '{{ ACS::TaskLoopItem }}'
scalingGroupId: '{{ scalingGroupId }}'
containerConfigure: '{{ sourceContainerConfigure }}'
updateType: '{{ updateType }}'
Loop:
Items: '{{ getExecutionInstanceIds.instanceIds }}'
BatchPauseOption: '{{ batchPauseOption }}'
Concurrency:
Fn::CalculateBatch:
- '{{ batchNumber }}'
- '{{ getExecutionInstanceIds.instanceIds }}'
- Name: modifyScalingConfigurationForRollback
Action: ACS::ExecuteAPI
Description:
en: Modify scaling configuration for rollback
zh-cn: 回滚操作修改伸缩配置
Properties:
Service: ESS
API: ModifyEciScalingConfiguration
Parameters:
ScalingConfigurationId: '{{ scalingConfigurationId }}'
Container: '{{ sourceContainerConfigure }}'
ContainersUpdateType: '{{ updateType }}'
- Name: whetherToResumeProcessesWithRollback
Action: ACS::Choice
Description:
en: Choose next task by process
zh-cn: 根据流程值判断是否恢复流程
Properties:
DefaultTask: resumeProcessesWithRollback
Choices:
- When:
Fn::Equals:
- []
- '{{ getRollbackProcess.exitProcess }}'
NextTask: ACS::END
- Name: resumeProcessesWithRollback
Action: ACS::ExecuteAPI
Description:
en: Resume process
zh-cn: 恢复伸缩组流程
Properties:
Service: ESS
API: ResumeProcesses
Parameters:
ScalingGroupId: '{{ scalingGroupId }}'
Process: '{{ getRollbackProcess.exitProcess }}'