Nom du modèle
Le modèle ACS-ECS-ConfigurePackage installe ou désinstalle des packages par lots.
Description du modèle
Installe ou désinstalle un package YUM ou APT sur plusieurs instances ECS simultanément.
Type de modèle
Automatisé
Propriétaire
Alibaba Cloud
Paramètres d'entrée
|
Parameter |
Description |
Type |
Required |
Default value |
Limit |
|
action |
Type d'opération. Valeurs valides : install, uninstall. |
String |
Yes |
||
|
targets |
Instances ECS cibles |
Json |
Yes |
||
|
packageName |
Nom du package à installer ou à désinstaller. |
String |
Yes |
||
|
regionId |
ID de la région. |
String |
No |
{{ ACS::RegionId }} |
|
|
installer |
Gestionnaire de packages. Valeurs valides : apt-get, yum. |
String |
No |
apt-get |
|
|
rateControl |
Contrôle du débit pour l'exécution des tâches. |
Json |
No |
{'Mode': 'Concurrency', 'MaxErrors': 0, 'Concurrency': 10} |
|
|
OOSAssumeRole |
Rôle RAM endossé par OOS pour exécuter le modèle. |
String |
No |
"" |
Paramètres de sortie
|
Parameter |
Description |
Type |
|
commandOutput |
String |
Politique d'autorisation requise pour exécuter le modèle
{
"Version": "1",
"Statement": [
{
"Action": [
"ecs:DescribeInstances",
"ecs:DescribeInvocationResults",
"ecs:DescribeInvocations",
"ecs:RunCommand"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"oos:GetApplicationGroup"
],
"Resource": "*",
"Effect": "Allow"
}
]
}
Détails
Consultez le code source du modèle : ACS-ECS-ConfigurePackage.yml sur GitHub.
Contenu du modèle
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