使用工作流模板限制主机
Limit hosts using Workflow Template
我正在使用 Ansible AWX (Tower),并且有一个模板工作流程,可以根据上一次执行是否成功,一个接一个地执行多个模板。
我注意到当 运行 单个模板时我可以限制到特定主机,我想将其应用于工作流程,我猜我必须使用调查选项来实现此目的,但是我不确定如何。
我曾尝试查看是否可以覆盖 "hosts" 值,但失败了,正如我预期的那样。
我怎样才能让它在工作流程开始时询问我 hostname/ip 而不是工作流程中的每个模板?
您有 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 我的唯一主机 selected 被 ping 了。所以现在,在我的工作流程中,我有下一个带有 *MyOfficeInventory** selected 的模板(这是所说的规则)。如果我 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 库存。
在分配给模板的其余 Playbook 中像这样使用它:
- name: Ping
hosts: "{{ myinventory }}"
gather_facts: False
tasks:
- name: Ping
ping:
您的库存变量将被转移,您将获得:
ok: [10.100.10.6]
更进一步。你想select你的主持人参加调查吗?
使用您输入的主机名创建一个并添加将您的第一个 Playbook 保留为:
- name: Ping
hosts: "{{ mysurveyhost }}"
gather_facts: False
我正在使用 Ansible AWX (Tower),并且有一个模板工作流程,可以根据上一次执行是否成功,一个接一个地执行多个模板。
我注意到当 运行 单个模板时我可以限制到特定主机,我想将其应用于工作流程,我猜我必须使用调查选项来实现此目的,但是我不确定如何。
我曾尝试查看是否可以覆盖 "hosts" 值,但失败了,正如我预期的那样。 我怎样才能让它在工作流程开始时询问我 hostname/ip 而不是工作流程中的每个模板?
您有 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 我的唯一主机 selected 被 ping 了。所以现在,在我的工作流程中,我有下一个带有 *MyOfficeInventory** selected 的模板(这是所说的规则)。如果我 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 库存。
在分配给模板的其余 Playbook 中像这样使用它:
- name: Ping
hosts: "{{ myinventory }}"
gather_facts: False
tasks:
- name: Ping
ping:
您的库存变量将被转移,您将获得:
ok: [10.100.10.6]
更进一步。你想select你的主持人参加调查吗?
使用您输入的主机名创建一个并添加将您的第一个 Playbook 保留为:
- name: Ping
hosts: "{{ mysurveyhost }}"
gather_facts: False