(推薦)通過指定特殊退出碼停止或重啟執行個體
通過雲助手執行命令來停止或重啟執行個體時,建議您在命令末尾指定退出碼,以保證命令執行狀態的準確性與即時性。如果您直接通過命令停止或重啟執行個體,即使停止或重啟操作是命令的最後一步,由於雲助手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
,然後單擊完成建立。
執行模板。
找到剛建立的模板,在操作列單擊建立執行。
完成執行配置。
按提示逐步完成配置,在設定參數頁面選擇多台執行個體,其他設定保持預設即可。
在確定頁面,單擊建立。
建立執行後自動開始執行模板,並跳轉至執行的基本資料頁面,等待執行狀態變為成功後即執行完成。
查看任務執行過程和各任務節點執行詳情。
在執行步驟和結果地區,單擊查看執行流程圖查看執行過程。
單擊執行雲助手命令,在迴圈工作清單頁簽下,查看各任務節點執行詳情。如下圖所示,可以看出預定動作均已成功完成。