Nama Template
Template ACS-ECS-ConfigurePackage menginstal atau menguninstal paket secara batch.
Deskripsi Template
Memasang atau menghapus paket Yellowdog Updater Modified (YUM) atau Advanced Packaging Tool (APT) pada beberapa instance Elastic Compute Service (ECS) secara bersamaan.
Tipe Template
Otomatis
Pemilik
Alibaba Cloud
Parameter Input
Parameter | Deskripsi | Tipe | Diperlukan | Nilai Default | Batasan |
action | Jenis operasi | String | Ya | ||
targets | Instans tujuan | Json | Ya | ||
packageName | Nama paket YUM atau APT yang akan dipasang. | String | Ya | ||
regionId | ID wilayah. | String | Tidak | {{ ACS::RegionId }} | |
installer | Sumber instalasi | String | Tidak | apt-get | |
rateControl | Laju konkurensi tugas | Json | Tidak | {'Mode': 'Concurrency', 'MaxErrors': 0, 'Concurrency': 10} | |
OOSAssumeRole | Peran Resource Access Management (RAM) yang diasumsikan oleh CloudOps Orchestration Service (OOS). | String | Tidak | "" |
Parameter Output
Parameter | Deskripsi | Tipe |
commandOutput | String |
Kebijakan Izin yang Dibutuhkan untuk Menjalankan Template
{
"Version": "1",
"Statement": [
{
"Action": [
"ecs:DescribeInstances",
"ecs:DescribeInvocationResults",
"ecs:DescribeInvocations",
"ecs:RunCommand"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"oos:GetApplicationGroup"
],
"Resource": "*",
"Effect": "Allow"
}
]
}
Detail
Untuk informasi lebih lanjut, lihat ACS-ECS-ConfigurePackage.yml di GitHub.
Isi Template
FormatVersion: OOS-2019-06-01
Description:
en: Use this template to install or uninstall packages on ECS instances.
zh-cn: Use this template to install or uninstall packages on ECS instances.
name-en: ACS-ECS-ConfigurePackage
name-zh-cn: Install or uninstall packages in batches
categories:
- run_command
Parameters:
regionId:
Type: String
Label:
en: Region ID
zh-cn: Region ID
AssociationProperty: RegionId
Default: '{{ ACS::RegionId }}'
installer:
Type: String
Label:
en: Installer
zh-cn: Installer
Default: apt-get
AllowedValues:
- apt-get
- yum
action:
Type: String
Label:
en: Action
zh-cn: Action
AllowedValues:
- install
- uninstall
targets:
Type: Json
Label:
en: Target Instance
zh-cn: Target Instance
AssociationProperty: Targets
AssociationPropertyMetadata:
ResourceType: 'ALIYUN::ECS::Instance'
RegionId: regionId
packageName:
Type: String
Label:
en: Package Name
zh-cn: Package Name
rateControl:
Label:
en: Rate Control
zh-cn: Rate Control
Type: Json
AssociationProperty: RateControl
Default:
Mode: Concurrency
MaxErrors: 0
Concurrency: 10
OOSAssumeRole:
Label:
en: OOSAssumeRole
zh-cn: OOSAssumeRole
Type: String
Default: ''
RamRole: '{{ OOSAssumeRole }}'
Tasks:
- Name: getInstance
Description:
en: Get ECS instances.
zh-cn: Get ECS instances.
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 installation failed. Check your command." >&2;
exit 1;
fi
exit 0;
elif [ "{{action}}" = "uninstall" ]; then
yum remove -y {{packageName}}
if [ $? -ne 0 ]; then
echo "Package uninstallation failed. Check your command." >&2;
exit 1;
fi
exit 0;
else
echo "The action 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 installation failed. Check your command." >&2;
exit 1;
fi
exit 0;
elif [ "{{action}}" = "uninstall" ]; then
apt-get -y remove {{packageName}}
if [ $? -ne 0 ]; then
echo "Package uninstallation failed. Check your command." >&2;
exit 1;
fi
exit 0;
else
echo "The action must be 'install' or 'uninstall'." >&2;
exit 1;
fi
else
echo "Unknown package installer. Only 'yum' and 'apt-get' are supported." >&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 }}'
Metadata:
ALIYUN::OOS::Interface:
ParameterGroups:
- Parameters:
- installer
- action
- packageName
Label:
default:
zh-cn: Configure Parameters
en: Configure Parameters
- Parameters:
- regionId
- targets
Label:
default:
zh-cn: Select Instances
en: Select Instances
- Parameters:
- rateControl
- OOSAssumeRole
Label:
default:
zh-cn: Advanced Options
en: Advanced Options