【问题标题】:Limit hosts using Workflow Template使用工作流模板限制主机
【发布时间】:2018-09-06 14:23:40
【问题描述】:

我正在使用 Ansible AWX (Tower) 并且有一个模板工作流,它会根据之前的执行是否成功,一个接一个地执行多个模板。

我注意到在运行单个模板时我可以限制到特定主机,我想将此应用到工作流中,我猜我必须使用调查选项来实现这一点,但我不是确定如何。

我试图查看是否可以覆盖“主机”值,但它失败了,就像我预期的那样。 我怎样才能让它在工作流开始时询问我主机名/IP 而不是工作流中的每个模板?

【问题讨论】:

    标签: ansible-tower ansible-awx


    【解决方案1】:

    您有set_stats 选项。

    假设您有以下库存:

    • 10.100.1.1
    • 10.100.1.3
    • 10.100.1.6

    您的库存称为MyOfficeInventory。第一条规则是,您需要所有模板中的此库存才能与第一个主机一起玩。

    我只想 ping 我的 10.100.1.6 机器,所以在模板中我选择 MyOfficeInventory 并限制为 10.100.1.6

    如果我们这样做:

    ---
    - name: Ping
      hosts: all
      gather_facts: False
      connection: local
    
      tasks:
    
      - name: Ping
        ping:
    

    我们得到:

    TASK [Ping] ********************************************************************
    ok: [10.100.10.6]
    

    酷!因此,从 MyOfficeInventory 我选择了我唯一的主机 ping。所以现在,在我的工作流程中,我选择了下一个带有 *MyOfficeInventory** 的模板(这就是所说的规则)。如果我 ping,除非你再次限制,否则我会 ping 所有这些,所以让我们来做魔术吧:

    在你的第一个模板中做:

      - name:  add devices with connectivity to the "working_hosts" group
        group_by:
          key: working_hosts
    
      - name: "Artifact URL of test results to Tower Workflows"
        set_stats:
          data:
            myinventory:  "{{ groups['working_hosts'] }}"
        run_once: True
    

    要小心,因为对于你的剧本,

    groups['all']
    

    意思是:

    "groups['all']": [
        "10.100.10.1",
        "10.100.10.3", 
        "10.100.10.6"
    ]
    

    使用新的 working_hosts 组,您只能获得当前主机:

    "groups['working_hosts']": [
        "10.100.10.6"
    ]
    

    所以现在您有了全新的 myinventory 库存。

    在分配给模板的其余剧本中像这样使用它:


    - name: Ping
      hosts: "{{ myinventory }}"
      gather_facts: False
    
      tasks:
    
      - name: Ping
        ping:
    

    您的库存变量将被转移,您将获得:

    ok: [10.100.10.6]
    

    更进一步。您想从调查中选择您的房东吗?

    使用您的主机名输入创建一个并添加将您的第一个 Playbook 保留为:

    - name: Ping
      hosts: "{{ mysurveyhost }}"
      gather_facts: False
    

    【讨论】:

    • 谢谢,我不知道我可以使用变量来定义主机。我通常在进行实时运行之前运行语法检查,它抱怨它是一个无效值,但实际上在调查中定义该变量时它确实运行没有错误。
    • 是的,确实如此,但请记住在您的模板中使用相同的清单,并且只更改它添加您要使用的所有主机。欢迎你!!!
    猜你喜欢
    • 2022-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-22
    • 1970-01-01
    • 1970-01-01
    • 2022-07-07
    相关资源
    最近更新 更多