全部产品
Search
文档中心

系统运维管理:ACS-ECS-ScheduleToRunCommand

更新时间:Dec 17, 2024

模板名称

ACS-ECS-ScheduleToRunCommand 定时批量在ECS实例上运行命令

立即执行

模板描述

定时批量在多台ECS实例上运行云助手命令,适用于需要定期在多台ECS实例上执行命令的场景,例如系统维护和任务自动化。在配置过程中,用户需要提供以下必填参数信息:地域ID(regionId):用于指定需要运行命令的ECS实例所在的区域,Cron表达式(triggerCron):用于定义任务的定时触发规则,目标实例(targets):用于定义具体需要操作的ECS实例,以及命令类型(commandType)和命令内容(commandContent)。模板在执行后会返回运行命令的输出结果列表,方便用户验证命令的执行状态。

模板类型

自动化

所有者

Alibaba Cloud

输入参数

参数名称

描述

类型

是否必填

默认值

约束

triggerEndDate

时间触发器结束时间

String

targets

目标实例

Json

regionId

地域ID

String

{{ ACS::RegionId }}

triggerCron

cron表达式

String

0 0 12 ? * *

timeZone

时区

String

UTC

commandType

云助手命令类型

String

RunShellScript

commandContent

云助手命令

String

echo hello

最大长度 : 16384

workingDir

命令在ECS实例中的运行目录

String

“”

timeout

超时时间

Number

600

rateControl

任务执行的并发比率

Json

{‘Mode’: ‘Concurrency’, ‘MaxErrors’: 0, ‘Concurrency’: 10}

OOSAssumeRole

OOS扮演的RAM角色

String

OOSServiceRole

输出参数

参数名称

描述

类型

commandOutputs

List

执行此模板需要的权限策略

{
    "Version": "1",
    "Statement": [
        {
            "Action": [
                "ecs:DescribeInstances",
                "ecs:DescribeInvocationResults",
                "ecs:DescribeInvocations",
                "ecs:RunCommand"
            ],
            "Resource": "*",
            "Effect": "Allow"
        }
    ]
}

详情

ACS-ECS-ScheduleToRunCommand详情

模板内容

FormatVersion: OOS-2019-06-01
Description:
  en: 'Schedule to run command on ECS instances, applicable to scenarios that require periodically running commands on multiple ECS instances, such as system maintenance and task automation. During configuration, users need to provide the following required parameter information: Region ID (regionId), which specifies the region of the ECS instances where the commands will be run, Cron Expression (triggerCron), which defines the schedule for the task, Target Instances (targets), which defines the specific ECS instances to be operated on, and Command Type (commandType) and Command Content (commandContent). Upon execution, the template will return a list of the output results of the run command, enabling users to verify the status of the command executions.'
  zh-cn: 定时批量在多台ECS实例上运行云助手命令,适用于需要定期在多台ECS实例上执行命令的场景,例如系统维护和任务自动化。在配置过程中,用户需要提供以下必填参数信息:地域ID(regionId):用于指定需要运行命令的ECS实例所在的区域,Cron表达式(triggerCron):用于定义任务的定时触发规则,目标实例(targets):用于定义具体需要操作的ECS实例,以及命令类型(commandType)和命令内容(commandContent)。模板在执行后会返回运行命令的输出结果列表,方便用户验证命令的执行状态。
  name-en: ACS-ECS-ScheduleToRunCommand
  name-zh-cn: 定时批量在ECS实例上运行命令
  categories:
    - time_trigger
Parameters:
  regionId:
    Type: String
    Label:
      en: RegionId
      zh-cn: 地域ID
    AssociationProperty: RegionId
    Default: '{{ ACS::RegionId }}'
  triggerCron:
    Description:
      en: 'refer them here: https://help.aliyun.com/document_detail/169784.html'
      zh-cn: '详情参考:https://help.aliyun.com/document_detail/169784.html'
    Label:
      en: Cronexpression
      zh-cn: cron表达式
    Type: String
    AssociationProperty: Cron
    Default: 0 0 12 ? * *
  triggerEndDate:
    Description:
      en: 'Format: yyyy-MM-ddTHH:mm:ssZ.'
      zh-cn: '格式:yyyy-MM-ddTHH:mm:ssZ'
    Label:
      en: triggerEndDate
      zh-cn: 时间触发器结束时间
    Type: String
    AssociationProperty: DateTime
    AssociationPropertyMetadata:
      Format: 'YYYY-MM-DDTHH:mm:ssZ'
  timeZone:
    Label:
      en: timeZone
      zh-cn: 时区
    Type: String
    AssociationProperty: TimeZone
    Default: UTC
  targets:
    Type: Json
    Label:
      en: TargetInstance
      zh-cn: 目标实例
    AssociationProperty: Targets
    AssociationPropertyMetadata:
      ResourceType: 'ALIYUN::ECS::Instance'
      RegionId: regionId
      Status: Running
  commandType:
    Label:
      en: CommandType
      zh-cn: 云助手命令类型
    Type: String
    AllowedValues:
      - RunBatScript
      - RunPowerShellScript
      - RunShellScript
    Default: RunShellScript
  commandContent:
    Label:
      en: CommandContent
      zh-cn: 云助手命令
    Type: String
    MaxLength: 16384
    AssociationProperty: Code
    Default: echo hello
  workingDir:
    Description:
      en: '<td class="entry colsep-1 rowsep-1">
            <p class="p">Default value:</p>
            <ul class="ul">
            <li class="li"> Linux instances: the home directory of the administrator (the root user), which is<code class="ph codeph">/root</code>.</li>
            <li class="li"> Windows instances: the directory where the Cloud Assistant client process resides,such as <code class="ph codeph">C:\Windows\System32</code>.</li>
            </ul>
          </td>'
      zh-cn: <td class="entry colsep-1 rowsep-1">
              <p class="p">默认值:</p>
              <ul class="ul">
                <li class="li">Linux系统实例默认在管理员(root用户)的home目录下,即<code class="ph codeph">/root</code>。</li>
                <li class="li">Windows系统实例默认在云助手客户端进程所在目录,例如<code class="ph codeph">C:\Windows\System32</code>。</li>
              </ul>
            </td>
    Label:
      en: WorkingDir
      zh-cn: 命令在ECS实例中的运行目录
    Type: String
    Default: ''
  timeout:
    Label:
      en: Timeout
      zh-cn: 超时时间
    Type: Number
    Default: 600
  rateControl:
    Label:
      en: RateControl
      zh-cn: 任务执行的并发比率
    Type: Json
    AssociationProperty: RateControl
    Default:
      Mode: Concurrency
      MaxErrors: 0
      Concurrency: 10
  OOSAssumeRole:
    Label:
      en: OOSAssumeRole
      zh-cn: OOS扮演的RAM角色
    Type: String
    Default: OOSServiceRole
RamRole: '{{ OOSAssumeRole }}'
Tasks:
  - Name: timerTrigger
    Action: ACS::TimerTrigger
    Description:
      en: Triggers a task as scheduled by specifying type and expression
      zh-cn: 通过指定触发类型和表达式按计划触发任务
    Properties:
      Type: cron
      Expression: '{{ triggerCron }}'
      EndDate: '{{ triggerEndDate }}'
      TimeZone: '{{ timeZone }}'
  - 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 }}'
    Loop:
      RateControl: '{{ rateControl }}'
      Items: '{{ getInstance.instanceIds }}'
      Outputs:
        commandOutputs:
          AggregateType: 'Fn::ListJoin'
          AggregateField: commandOutput
    Outputs:
      commandOutput:
        Type: String
        ValueSelector: invocationOutput
Outputs:
  commandOutputs:
    Type: List
    Value: '{{ runCommand.commandOutputs }}'
Metadata:
  ALIYUN::OOS::Interface:
    ParameterGroups:
      - Parameters:
          - timeZone
          - triggerCron
          - triggerEndDate
        Label:
          default:
            zh-cn: 定时设置
            en: Timer Trigger Configure
      - Parameters:
          - commandType
          - commandContent
          - workingDir
          - timeout
        Label:
          default:
            zh-cn: 执行命令选型
            en: run command options
      - Parameters:
          - regionId
          - targets
        Label:
          default:
            zh-cn: 选择实例
            en: Select Ecs Instances
      - Parameters:
          - rateControl
          - OOSAssumeRole
        Label:
          default:
            zh-cn: 高级选项
            en: Control Options