全部產品
Search
文件中心

CloudOps Orchestration Service:ACS-ECS-ApplyAnsiblePlayBooks

更新時間:Sep 06, 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

字串校正Regex : ^$

^\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