-
Notifications
You must be signed in to change notification settings - Fork 17
/
ACS::ECS::ConfigureOOSPackage.json
148 lines (148 loc) · 6.01 KB
/
ACS::ECS::ConfigureOOSPackage.json
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
{
"FormatVersion": "OOS-2019-06-01",
"Description": {
"name-en": "ACS::ECS::ConfigureOOSPackage",
"name-zh-cn": "在ECS实例中安装OOS自定义软件包",
"en": "Configure OOS package on ECS instance",
"zh-cn": "在ECS实例中安装OOS自定义软件包"
},
"Parameters": {
"regionId": {
"Description": {
"en": "The ID of region",
"zh-cn": "地域ID"
},
"Type": "String",
"Default": "{{ ACS::RegionId }}"
},
"instanceId": {
"Description": {
"en": "The ID of ECS instance",
"zh-cn": "ECS实例ID"
},
"Type": "String"
},
"action": {
"Description": {
"en": "The action to configure package",
"zh-cn": "设置软件包的方式"
},
"Type": "String",
"AllowedValues": [
"install",
"uninstall"
],
"Default": "install"
},
"packageName": {
"Description": {
"en": "The name of package",
"zh-cn": "软件包名称"
},
"Type": "String"
},
"packageVersion": {
"Description": {
"en": "The version of package",
"zh-cn": "软件包版本"
},
"Type": "String",
"Default": ""
}
},
"Tasks": [
{
"Name": "queryInstanceOSType",
"Action": "ACS::ExecuteApi",
"Description": {
"en": "Queries ECS instance OS type",
"zh-cn": "获取操作系统类型"
},
"Properties": {
"Service": "ECS",
"API": "DescribeInstances",
"Parameters": {
"RegionId": "{{ regionId }}",
"InstanceIds": [
"{{ instanceId }}"
]
}
},
"Outputs": {
"OSType": {
"Type": "String",
"ValueSelector": "Instances.Instance[].OSType"
}
}
},
{
"Name": "configureLinuxPackage",
"Description": {
"en": "Configures OOS package on Linux instance",
"zh-cn": "在Linux类型实例中安装OOS软件包"
},
"When": {
"Fn::Equals": [
"{{ queryInstanceOSType.OSType }}",
"linux"
]
},
"Action": "ACS::ECS::RunCommand",
"Properties": {
"instanceId": "{{ instanceId }}",
"regionId": "{{ regionId }}",
"commandType": "RunShellScript",
"commandContent": "#!/bin/bash\ncurrent_version=`aliyun-service -v`\nspecified_version=1.0.2.497\n\nif [[ $current_version > $specified_version ]]; then\n if [ '{{ packageVersion }}' = '' ] ; then\n acs-plugin-manager --exec -P oosutil --params configure_package,{{action}},{{packageName}}\n else\n acs-plugin-manager --exec -P oosutil --params configure_package,{{action}},{{packageName}},--package-version,{{packageVersion}}\n fi\nelse\n version='{{ ACS::OOSUtilVersion }}'\n path=/usr/local/share/aliyun-oosutil/$version\n test -e $path || mkdir -p $path\n currentPath=`pwd`\n cd $path && test -e oosutil_linux || wget -q \"https://oos-public-{{regionId}}.oss-{{regionId}}-internal.aliyuncs.com/oosutil/$version/linux/oosutil_linux\"\n chmod +x oosutil_linux\n cd $currentPath\n if [ '{{ packageVersion }}' = '' ] ; then\n $path/oosutil_linux configure_package {{action}} {{packageName}}\n else\n $path/oosutil_linux configure_package {{action}} {{packageName}} --package-version {{packageVersion}}\n fi\nfi"
},
"Outputs": {
"commandOutput": {
"Type": "String",
"ValueSelector": "invocationOutput"
}
}
},
{
"Name": "configureWindowsPackage",
"Description": {
"en": "Configures OOS package on Windows instance",
"zh-cn": "在Windows类型实例中安装OOS软件包"
},
"When": {
"Fn::Equals": [
"{{ queryInstanceOSType.OSType }}",
"windows"
]
},
"Action": "ACS::ECS::RunCommand",
"Properties": {
"regionId": "{{ regionId }}",
"instanceId": "{{ instanceId }}",
"commandType": "RunPowerShellScript",
"commandContent": "$current_version=(aliyun_assist_service.exe -v)\n$specified_version=\"1.0.0.134\"\nif ($current_version -gt $specified_version){\n if ('{{ packageVersion }}'){\n acs-plugin-manager.exe --exec -P oosutil_win --params \"configure_package,{{action}},{{packageName}},--package-version,{{packageVersion}}\"\n if ($LASTEXITCODE -ne 0){\n exit $LASTEXITCODE;\n }\n }else{\n acs-plugin-manager.exe --exec -P oosutil_win --params \"configure_package,{{action}},{{packageName}}\"\n if ($LASTEXITCODE -ne 0){\n exit $LASTEXITCODE;\n }\n }\n}else{\n $version=\"{{ACS::OOSUtilVersion}}\"\n $path = \"C:\\aliyun-oosutil\\$version\"\n $currentPath=(pwd)\n $pathExistOrNot = Test-Path -Path \"$path\"\n if ($pathExistOrNot){\n cd $path\n }else{\n mkdir $path\n cd $path\n }\n $client = new-object System.Net.WebClient\n $client.DownloadFile(\"https://oos-public-{{ACS::RegionId}}.oss-{{ACS::RegionId}}-internal.aliyuncs.com/oosutil/$version/windows/oosutil_windows.exe\", \"$path/oosutil_windows.exe\")\n cd $currentPath\n if ('{{ packageVersion }}'){\n C:\\aliyun-oosutil\\{{ ACS::OOSUtilVersion }}\\oosutil_windows.exe configure_package {{action}} {{packageName}} --package-version {{ packageVersion }}\n if ($LASTEXITCODE -ne 0){\n exit $LASTEXITCODE;\n }\n }else{\n C:\\aliyun-oosutil\\{{ ACS::OOSUtilVersion }}\\oosutil_windows.exe configure_package {{action}} {{packageName}}\n if ($LASTEXITCODE -ne 0){\n exit $LASTEXITCODE;\n }\n }\n}"
},
"Outputs": {
"commandOutput": {
"Type": "String",
"ValueSelector": "invocationOutput"
}
}
}
],
"Outputs": {
"commandOutput": {
"Type": "String",
"Value": {
"Fn::If": [
{
"Fn::Equals": [
"linux",
"{{ queryInstanceOSType.OSType }}"
]
},
"{{ configureLinuxPackage.commandOutput }}",
"{{ configureWindowsPackage.commandOutput }}"
]
}
}
}
}