-
Notifications
You must be signed in to change notification settings - Fork 17
/
ACS::ECS::CreateNetworkInterfaceAndEipAndAttachToInstance.yml
265 lines (261 loc) · 7.78 KB
/
ACS::ECS::CreateNetworkInterfaceAndEipAndAttachToInstance.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
FormatVersion: OOS-2019-06-01
Description:
name-en: ACS::ECS::CreateNetworkInterfaceAndEipAndAttachToInstance
name-zh-cn: 创建弹性网卡与弹性IP并将其绑定到ECS实例上
en: Create the NetworkInterface and eip and bind the to instance
zh-cn: 创建弹性网卡和EIP并绑定到ECS实例上
Parameters:
regionId:
Label:
en: RegionId
zh-cn: 地域ID
Type: String
AssociationProperty: ALIYUN::ECS::RegionId
Default: '{{ ACS::RegionId }}'
instanceId:
Label:
en: ECSInstanceId
zh-cn: ECS实例ID
Type: String
AssociationProperty: ALIYUN::ECS::Instance::InstanceId
AssociationPropertyMetadata:
RegionId: regionId
internetChargeType:
Label:
en: EIPInternetChargeType
zh-cn: EIP的网络计费方式
Type: String
AllowedValues:
- PayByBandwidth
- PayByTraffic
Default: PayByBandwidth
bandwidth:
Label:
en: EIPBandwidth
zh-cn: EIP带宽峰值
Type: Number
Default: 5
Tasks:
- Name: checkInstanceReady
Action: 'ACS::CheckFor'
Description:
en: Checks ECS instance is in the Running status
zh-cn: 检查实例是否处于运行中状态
Properties:
Service: ECS
API: DescribeInstances
Parameters:
InstanceIds:
- '{{ instanceId }}'
DesiredValues:
- Running
- Stopped
PropertySelector: 'Instances.Instance[].Status'
Outputs:
vSwitchId:
Type: String
ValueSelector: 'Instances.Instance[].VpcAttributes.VSwitchId'
SecurityGroupIds:
Type: List
ValueSelector: 'Instances.Instance[].SecurityGroupIds.SecurityGroupId[]'
- Action: 'ACS::ExecuteAPI'
Name: createNetworkInterface
Description:
en: Creates network interface
zh-cn: 创建弹性网卡
Properties:
Service: ECS
API: CreateNetworkInterface
Parameters:
RegionId: '{{ regionId }}'
VSwitchId: '{{ checkInstanceReady.vSwitchId }}'
SecurityGroupIds: '{{ checkInstanceReady.SecurityGroupIds }}'
Outputs:
networkInterfaceId:
Type: String
ValueSelector: .NetworkInterfaceId
- Name: waitNetworkInterfaceReady
Action: 'ACS::WaitFor'
Description:
en: Waits for the NetworkInterface util Available
zh-cn: 等待弹性网卡创建到达Available状态
Delay: 15
Retries: 7
DelayType: Constant
OnError: deleteNetworkInterface
Properties:
Service: ECS
API: DescribeNetworkInterfaces
Parameters:
RegionId: '{{ regionId }}'
NetworkInterfaceId:
- '{{ createNetworkInterface.networkInterfaceId }}'
DesiredValues:
- Available
PropertySelector: 'NetworkInterfaceSets.NetworkInterfaceSet[].Status'
- Action: 'ACS::ExecuteAPI'
Name: attachNetworkInterface
Description:
en: Attach the NetworkInterface to ECS instance
zh-cn: 挂载弹性网卡到ECS实例
OnError: deleteNetworkInterface
Properties:
Service: ECS
API: AttachNetworkInterface
Parameters:
RegionId: '{{ regionId }}'
NetworkInterfaceId: '{{ createNetworkInterface.networkInterfaceId }}'
InstanceId: '{{ instanceId }}'
Outputs:
networkInterfaceId:
Type: String
ValueSelector: .NetworkInterfaceId
- Name: waitNetworkInterfaceInUse
Action: 'ACS::WaitFor'
Description:
en: Waits for the NetworkInterface util In_use
zh-cn: 等待弹性网卡到达In_use状态
Delay: 15
Retries: 7
DelayType: Constant
OnError: deleteNetworkInterface
Properties:
Service: ECS
API: DescribeNetworkInterfaces
Parameters:
RegionId: '{{ regionId }}'
NetworkInterfaceId:
- '{{ createNetworkInterface.networkInterfaceId }}'
DesiredValues:
- InUse
PropertySelector: 'NetworkInterfaceSets.NetworkInterfaceSet[].Status'
- Name: allocateEipAddress
Action: 'ACS::ExecuteAPI'
Description:
en: Apply for EIP
zh-cn: 申请弹性公网IP
OnError: detachNetworkInterface
Properties:
Service: ECS
API: AllocateEipAddress
Parameters:
RegionId: '{{ regionId }}'
InternetChargeType: '{{ internetChargeType }}'
Bandwidth: '{{ bandwidth }}'
Outputs:
allocationId:
Type: String
ValueSelector: .AllocationId
- Name: waitEipAddressReady
Action: 'ACS::WaitFor'
Description:
en: Waits for the EIP util Available
zh-cn: 等待EIP到达Available状态
Delay: 15
Retries: 7
DelayType: Constant
Properties:
Service: ECS
API: DescribeEipAddresses
Parameters:
AllocationId: '{{ allocateEipAddress.allocationId }}'
DesiredValues:
- Available
PropertySelector: 'EipAddresses.EipAddress[].Status'
- Name: associateEipAddress
Action: 'ACS::ExecuteAPI'
Description:
en: Binds the eip to instance
zh-cn: 绑定EIP到实例
OnError: detachNetworkInterface
Properties:
Service: ECS
API: AssociateEipAddress
Parameters:
RegionId: '{{ regionId }}'
AllocationId: '{{ allocateEipAddress.allocationId }}'
InstanceId: '{{ createNetworkInterface.networkInterfaceId }}'
InstanceType: NetworkInterface
- Name: runCommand
Action: 'ACS::ECS::RunCommand'
Description:
en: Run command
zh-cn: 执行命令
OnError: detachNetworkInterface
OnSuccess: 'ACS::END'
Properties:
regionId: '{{ regionId }}'
commandContent: >-
wget
https://oos-public-{{regionId}}.oss-{{regionId}}-internal.aliyuncs.com/x64/multi-nic-util-0.6.tgz
tar -zxvf multi-nic-util-0.6.tgz
cd multi-nic-util-0.6
bash install.sh
systemctl restart eni.service
instanceId: '{{instanceId}}'
commandType: RunShellScript
Outputs:
commandOutput:
Type: String
ValueSelector: invocationOutput
- Action: 'ACS::ExecuteAPI'
Name: detachNetworkInterface
Description:
en: Detaches the network interface
zh-cn: 解绑弹性网卡
OnError: releaseEipAddress
Properties:
Service: ECS
API: DetachNetworkInterface
Parameters:
RegionId: '{{ regionId }}'
InstanceId: '{{ instanceId }}'
NetworkInterfaceId: '{{ createNetworkInterface.networkInterfaceId }}'
- Name: waitNetworkInterfaceAvailable
Action: 'ACS::WaitFor'
Description:
en: Waits for the NetworkInterface util Available
zh-cn: 等待弹性网卡解绑成功
Delay: 15
Retries: 7
DelayType: Constant
Properties:
Service: ECS
API: DescribeNetworkInterfaces
Parameters:
RegionId: '{{ regionId }}'
NetworkInterfaceId:
- '{{ createNetworkInterface.networkInterfaceId }}'
DesiredValues:
- Available
PropertySelector: 'NetworkInterfaceSets.NetworkInterfaceSet[].Status'
- Action: 'ACS::ExecuteAPI'
Name: deleteNetworkInterface
Description:
en: Deletes the network interface
zh-cn: 删除弹性网卡
Properties:
Service: ECS
API: DeleteNetworkInterface
Parameters:
RegionId: '{{ regionId }}'
NetworkInterfaceId: '{{ createNetworkInterface.networkInterfaceId }}'
- Action: 'ACS::ExecuteAPI'
Name: releaseEipAddress
Description:
en: Releases the EIP
zh-cn: 释放EIP。
OnError: 'ACS::END'
Properties:
Service: ECS
API: ReleaseEipAddress
Parameters:
RegionId: '{{ regionId }}'
AllocationId: '{{ allocateEipAddress.allocationId }}'
Outputs:
networkInterfaceIdAndAllocationId:
Type: String
Value: >-
{instanceId:{{ instanceId }}, allocationId: {{
allocateEipAddress.allocationId }}, networkInterfaceId: {{
createNetworkInterface.networkInterfaceId }}}