forked from aliyun/oos-templates
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathACS-ECS-ConfigurePackage.yml
135 lines (134 loc) · 3.94 KB
/
ACS-ECS-ConfigurePackage.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
FormatVersion: OOS-2019-06-01
Description:
en: Use this template to install or unistall package on ecs
zh-cn: 使用这个模板批量的在ECS安装或卸载yum/apt包
name-en: ACS-ECS-ConfigurePackage
name-zh-cn: 批量安装或卸载包
categories:
- run_command
Parameters:
regionId:
Type: String
Description:
en: The id of region.
zh-cn: 地域ID。
AssociationProperty: RegionId
Default: '{{ ACS::RegionId }}'
installer:
Type: String
Default: apt-get
AllowedValues:
- apt-get
- yum
action:
Type: String
Default: install
AllowedValues:
- install
- uninstall
targets:
Type: Json
AssociationProperty: Targets
AssociationPropertyMetadata:
ResourceType: 'ALIYUN::ECS::Instance'
RegionId: regionId
packageName:
Type: String
Description:
en: The package you want to yum/apt-get install/uninstall
zh-cn: yum/apt-get安装的包名
rateControl:
Description:
en: Concurrency ratio of task execution.
zh-cn: 任务执行的并发比率。
Type: Json
AssociationProperty: RateControl
Default:
Mode: Concurrency
MaxErrors: 0
Concurrency: 10
OOSAssumeRole:
Description: The RAM role to be assumed by OOS.
Type: String
Default: OOSServiceRole
RamRole: '{{ OOSAssumeRole }}'
Tasks:
- Name: getInstance
Description:
en: Views the ECS instances.
zh-cn: 获取ECS实例。
Action: 'ACS::SelectTargets'
Properties:
ResourceType: 'ALIYUN::ECS::Instance'
RegionId: '{{ regionId }}'
Filters:
- '{{ targets }}'
Outputs:
instanceIds:
Type: List
ValueSelector: 'Instances.Instance[].InstanceId'
- Name: runCommand
Action: 'ACS::ECS::RunCommand'
Properties:
commandContent: |-
#!/bin/bash
if [ "{{installer}}" = "yum" ]; then
if [ "{{action}}" = "install" ]; then
yum install -y {{packageName}}
if [ $? -ne 0 ]; then
echo "Package is install failed. Please check your command" >&2;
exit 1;
fi
exit 0;
elif [ "{{action}}" = "uninstall" ]; then
yum remove -y {{packageName}}
if [ $? -ne 0 ]; then
echo "Package uninstall failed. Please check your command" >&2;
exit 1;
fi
exit 0;
else
echo "Package command must be install or uninstall" >& 2
exit 1;
fi
elif [ "{{installer}}" = "apt-get" ]; then
if [ "{{action}}" = "install" ]; then
apt-get -y install {{packageName}}
if [ $? -ne 0 ]; then
echo "Package is install failed. Please check your command" >&2;
exit 1;
fi
exit 0;
elif [ "{{action}}" = "uninstall" ]; then
apt-get -y remove {{packageName}}
if [ $? -ne 0 ]; then
echo "Package uninstall failed. Please check your command" >&2;
exit 1;
fi
exit 0;
else
echo "Package command must be install or uninstall" >& 2
exit 1;
fi
else
echo "Unknown pakcage installer. Only support yum/apt-get" >&2;
exit 1;
fi
instanceId: '{{ ACS::TaskLoopItem }}'
regionId: '{{ regionId }}'
commandType: RunShellScript
Loop:
Items: '{{ getInstance.instanceIds }}'
RateControl: '{{ rateControl }}'
Outputs:
commandOutputs:
AggregateType: 'Fn::ListJoin'
AggregateField: commandOutput
Outputs:
commandOutput:
Type: String
ValueSelector: invocationOutput
Outputs:
commandOutput:
Type: String
Value: '{{ runCommand.commandOutputs }}'