(推荐)通过指定特殊退出码停止或重启实例
通过云助手执行命令来停止或重启实例时,建议您在命令末尾指定退出码,以保证命令执行状态的准确性与实时性。如果您直接通过命令停止或重启实例,即使停止或重启操作是命令的最后一步,由于云助手Agent不保存停止或重启操作前的执行状态,导致无法上报执行结果,命令执行状态也可能无法正确更新。
重要 请确保目标实例所安装的云助手Agent不低于以下版本:
Linux:2.2.3.317
Windows:2.1.3.317
如果执行命令时报错,请将客户端更新至最新版本。具体操作,请参见升级或禁止升级云助手Agent。
登录ECS管理控制台。
在左侧导航栏,选择。
在页面左侧顶部,选择目标资源所在的资源组和地域。
在页面右上角,单击创建/执行命令。
进入命令信息区域,设置相关参数。更多信息,请参见创建并执行命令。
在命令内容末尾设置对应的退出码。
在选择实例或选择托管实例区域,选中需要执行命令的目标实例。
说明 托管实例是云助手托管的非阿里云服务器,更多信息,请参见阿里云托管实例。
单击执行并保存或执行,立即开始执行任务。
使用OOS批量执行云助手命令重启实例
系统运维管理OOS是阿里云提供的云上自动化运维服务,您可以通过模板定义运维动作,然后执行模板自动化运行运维任务。
进入模板配置页面。
登录OOS控制台。
在左侧导航栏,单击。
单击创建模板。
完成模板配置。
在创建模板页面,保持默认配置,然后单击下一步。
单击YAML页签,并输入以下代码。
单击查看示例代码
FormatVersion: OOS-2019-06-01
Description:
en: Bulky run command on ECS instances and reboot instance.
zh-cn: 批量在多台ECS实例上运行云助手命令并重启实例。
name-en: ACS-ECS-BulkyRunCommandRboot
name-zh-cn: 批量在ECS实例上运行命令并重启实例
categories:
- run_command
Parameters:
regionId:
Type: String
Description:
en: The id of region
zh-cn: 地域ID
Label:
en: Region
zh-cn: 地域
AssociationProperty: RegionId
Default: '{{ ACS::RegionId }}'
targets:
Type: Json
Label:
en: TargetInstance
zh-cn: 目标实例
AssociationProperty: Targets
AssociationPropertyMetadata:
ResourceType: ALIYUN::ECS::Instance
RegionId: regionId
commandType:
Description:
en: The type of command
zh-cn: 云助手命令类型
Label:
en: CommandType
zh-cn: 云助手命令类型
Type: String
AllowedValues:
- RunBatScript
- RunPowerShellScript
- RunShellScript
Default: RunShellScript
commandContent:
Description:
en: Command content to run in ECS instance
zh-cn: 在ECS实例中执行的云助手命令
Label:
en: CommandContent
zh-cn: 云助手命令
Type: String
MaxLength: 16384
AssociationProperty: Code
Default: echo hello
workingDir:
Description:
en: 'The directory where the created command runs on the ECS instances.Linux instances: under the home directory of the administrator (root user): /root.Windows instances: under the directory where the process of the Cloud Assistant client is located, such asC:\Windows\System32.'
zh-cn: 脚本在ECS实例中的运行目录。Linux系统实例默认在管理员(root用户)的home目录下,即/root。Windows系统实例默认在云助手Agent进程所在目录,例如C:\Windows\System32。
Label:
en: WorkingDir
zh-cn: 运行目录
Type: String
Default: ''
timeout:
Description:
en: The value of the invocation timeout period of a command on ECS instances
zh-cn: ECS实例中执行命令的超时时间
Label:
en: Timeout
zh-cn: 超时时间
Type: Number
Default: 600
enableParameter:
Description:
en: Whether to include secret parameters or custom parameters in the command
zh-cn: 命令中是否包含加密参数或自定义参数
Label:
en: EnableParameter
zh-cn: 命令中是否包含加密参数或自定义参数
Type: Boolean
Default: false
username:
Description:
en: The username that is used to run the command on the ECS instance
zh-cn: 在ECS实例中执行命令的用户名称
Label:
en: Username
zh-cn: 执行命令的用户名称
Type: String
Default: ''
windowsPasswordName:
Description:
en: The name of the password used to run the command on a Windows instance
zh-cn: 在Windows实例中执行命令的用户的密码名称
Label:
en: WindowsPasswordName
zh-cn: 在Windows实例中执行命令的用户的密码名称
Type: String
Default: ''
AssociationProperty: SecretParameterName
rateControl:
Description:
en: Concurrency ratio of task execution
zh-cn: 任务执行的并发比率
Label:
en: RateControl
zh-cn: 任务执行的并发比率
Type: Json
AssociationProperty: RateControl
Default:
Mode: Concurrency
MaxErrors: 0
Concurrency: 10
OOSAssumeRole:
Description:
en: The RAM role to be assumed by OOS
zh-cn: OOS扮演的RAM角色
Label:
en: OOSAssumeRole
zh-cn: OOS扮演的RAM角色
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
Description:
en: Execute cloud assistant command.
zh-cn: 执行云助手命令。
Properties:
regionId: '{{ regionId }}'
commandContent: '{{ commandContent }}'
instanceId: '{{ ACS::TaskLoopItem }}'
commandType: '{{ commandType }}'
workingDir: '{{ workingDir }}'
timeout: '{{ timeout }}'
enableParameter: '{{ enableParameter }}'
username: '{{ username }}'
windowsPasswordName: '{{ windowsPasswordName }}'
Loop:
RateControl: '{{ rateControl }}'
Items: '{{ getInstance.instanceIds }}'
Outputs:
commandOutputs:
AggregateType: Fn::ListJoin
AggregateField: commandOutput
Outputs:
commandOutput:
Type: String
ValueSelector: invocationOutput
- Name: rebootInstance
Action: ACS::ECS::RebootInstance
Description:
en: Restarts the ECS instances.
zh-cn: 重启实例。
Properties:
regionId: '{{ regionId }}'
instanceId: '{{ ACS::TaskLoopItem }}'
Loop:
RateControl: '{{ rateControl }}'
Items: '{{ getInstance.instanceIds }}'
Outputs:
instanceIds:
Type: List
Value: '{{ getInstance.instanceIds }}'
单击创建模板。
在弹出的对话框中,输入模板名称runcommand_reboot_instances
,然后单击完成创建。
执行模板。
找到刚创建的模板,在操作列单击创建执行。
完成执行配置。
按提示逐步完成配置,在设置参数页面选择多台实例,其他设置保持默认即可。
在确定页面,单击创建。
创建执行后自动开始执行模板,并跳转至执行的基本信息页面,等待执行状态变为成功后即执行完成。
查看任务执行过程和各任务节点执行详情。
在执行步骤和结果区域,单击查看执行流程图查看执行过程。
单击执行云助手命令,在循环任务列表页签下,查看各任务节点执行详情。如下图所示,可以看出预定动作均已成功完成。