全部产品
Search
文档中心

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

更新时间:Sep 05, 2024

模板名称

ACS-ECS-ApplyAnsiblePlayBooks 在实例中执行Ansible PlayBook

立即执行

模板描述

使用这个模板执行ECS实例中的Ansible PlayBook,仅支持CentOS,Alibaba Cloud Linux和Ubuntu

模板类型

自动化

所有者

Alibaba Cloud

输入参数

参数名称

描述

类型

是否必填

默认值

约束

targets

目标实例

Json

sourceType

playbook存储的类型

String

sourcePath

用于存储playbook的URL

String

playbookFile

执行的playbook名称

String

regionId

地域ID

String

{{ ACS::RegionId }}

tokenInfo

指定令牌以下载playbook

String

“”

hosts

用于执行palybook的hosts

String

/etc/ansible/hosts

installDependencies

OOS从PyPI存储库中是否安装Ansible及其依赖项

Boolean

True

workingDir

执行playbook的目录

String

/root/ansible-workspace

check

使用check参数运行Ansible执行检查

Boolean

True

extraVariables

其他变量在运行时传递给Ansible

String

color=red

字符串校验正则表达式 : ^$

^\w+=\S+(\s\w+=\S+)*$

verbose

设置用于记录Playbook执行情况的详细程度

String

-v

rateControl

任务执行的并发比率

Json

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

OOSAssumeRole

OOS扮演的RAM角色

String

“”

输出参数

参数名称

描述

类型

commandOutput

String

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

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

详情

ACS-ECS-ApplyAnsiblePlayBooks详情

模板内容

FormatVersion: OOS-2019-06-01
Description:
  en: 'Use this template to run Ansible playbook on ECS Instance.Only supports CentOS, Alibaba Cloud Linux and Ubuntu.'
  zh-cn: 使用这个模板执行ECS实例中的Ansible PlayBook,仅支持CentOS,Alibaba Cloud Linux和Ubuntu
  name-en: ACS-ECS-ApplyAnsiblePlayBooks
  name-zh-cn: 在实例中执行Ansible PlayBook
  categories:
    - run_command
Parameters:
  regionId:
    Type: String
    Label:
      en: RegionId
      zh-cn: 地域ID
    AssociationProperty: RegionId
    Default: '{{ ACS::RegionId }}'
  targets:
    Label:
      en: TargetInstance
      zh-cn: 目标实例
    Type: Json
    AssociationProperty: Targets
    AssociationPropertyMetadata:
      ResourceType: 'ALIYUN::ECS::Instance'
      RegionId: regionId
  sourceType:
    Type: String
    Label:
      en: SourceType
      zh-cn: playbook存储的类型
    AllowedValues:
      - oss
      - https
      - github
  sourcePath:
    Type: String
    Label:
      en: SourcePath
      zh-cn: 用于存储playbook的URL
    Description:
      en: 'You can specify the URL in the following formats: https://example.com/playbook.yml'
      zh-cn: '可以按以下格式指定URL:https://example.com/playbook.yml'
  playbookFile:
    Label:
      en: PlaybookFile
      zh-cn: 执行的playbook名称
    Description:
      en: ' For example: example.yml'
      zh-cn: '例如: example.yml'
    Type: String
  tokenInfo:
    Type: String
    Label:
      en: TokenInfo
      zh-cn: 指定令牌以下载playbook
    Description:
      en: 'It is only required when downloading palybook from GitHub'
      zh-cn: '只有从GitHub上下载palybook时需要填'
    Default: ""
  hosts:
    Type: String
    Label:
      en: Hosts
      zh-cn: 用于执行palybook的hosts
    Default: /etc/ansible/hosts
  installDependencies:
    Label:
      en: InstallDependencies
      zh-cn: OOS从PyPI存储库中是否安装Ansible及其依赖项
    Description:
      en: 'If set to True,  OOS installs Ansible and its dependencies, including Python, from the PyPI repo.  If set to False, then verify that Ansible and its dependencies are installed on the target instances.'
      zh-cn: 如果设置为True,则OOS从PyPI存储库中安装Ansible及其依赖项,包括Python。如果设置为False,则需要验证目标实例上是否安装了Ansible及其依赖项。
    Type: Boolean
    Default: true
  workingDir:
    Label:
      en: WorkingDir
      zh-cn: 执行playbook的目录
    Type: String
    Default: /root/ansible-workspace
  check:
    Label:
      en: Check
      zh-cn: 使用check参数运行Ansible执行检查
    Type: Boolean
    Default: true
  extraVariables:
    Type: String
    Label:
      en: ExtraVariables
      zh-cn: 其他变量在运行时传递给Ansible
    Description:
      en: 'Enter a space separated list of key/value pairs. For example: color=red flavor=lime'
      zh-cn: 输入以空格分隔的键/值对列表。 例如:color=red flavour=lime
    Default: color=red
    AllowedPattern: ^$|^\w+\=\S+(\s\w+\=\S+)*$
  verbose:
    Type: String
    Label:
      en: Verbose
      zh-cn: 设置用于记录Playbook执行情况的详细程度
    Description:
      en: 'Specify -v for low verbosity, -vv or –vvv for medium verbosity, and -vvvv for debug level.'
      zh-cn: 指定-v表示低级别,-vv或–vvv表示中等级别,-vvvv表示调试级别
    AllowedValues:
      - '-v'
      - '-vv'
      - '-vvv'
      - '-vvvv'
    Default: '-v'
  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: ''
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: applyPlaybook
    Action: 'ACS::ECS::ApplyAnsiblePlayBook'
    Description:
      en: Apply the specified playbook
      zh-cn: 运行指定的playbook
    Properties:
      regionId: '{{ regionId }}'
      instanceId: '{{ ACS::TaskLoopItem }}'
      sourceType: '{{ sourceType }}'
      sourcePath: '{{ sourcePath }}'
      playbookFile: '{{ playbookFile }}'
      tokenInfo: '{{ tokenInfo }}'
      hosts: '{{ hosts }}'
      installDependencies: '{{ installDependencies }}'
      workingDir: '{{ workingDir }}'
      check: '{{ check }}'
      extraVariables: '{{ extraVariables }}'
      verbose: '{{ verbose }}'
    Loop:
      Items: '{{ getInstance.instanceIds }}'
      RateControl: '{{ rateControl }}'
      Outputs:
        commandOutputs:
          AggregateType: 'Fn::ListJoin'
          AggregateField: commandOutput
    Outputs:
      commandOutput:
        Type: String
        ValueSelector: commandOutput
Outputs:
  commandOutput:
    Type: String
    Value: '{{ applyPlaybook.commandOutputs }}'
Metadata:
  ALIYUN::OOS::Interface:
    ParameterGroups:
      - Parameters:
          - sourceType
          - sourcePath
          - playbookFile
          - tokenInfo
          - hosts
          - installDependencies
          - workingDir
          - check
          - extraVariables
          - verbose
        Label:
          default:
            zh-cn: 配置参数
            en: Configure Parameters
      - Parameters:
          - regionId
          - targets
        Label:
          default:
            zh-cn: 选择实例
            en: Select Instances
      - Parameters:
          - rateControl
          - OOSAssumeRole
        Label:
          default:
            zh-cn: 高级选项
            en: Control Options