我无法弄清楚如何在我的剧本中使用group_by
。我有一个受RHEL6约束的角色,我有兴趣了解如何使用group_by
将RHEL6机器与RHEL5机器分开。我已经制作了一个复合键,在我的调试任务中,我可以看到它正在被正确设置。但即使调试任务吐出的复合键是“RedHat-6”,该剧本也会跳过hosts: RedHat-6
- hosts: abc
user: myuser
sudo: yes
gather_facts: yes
tasks:
- group_by: key={{ ansible_distribution }}-{{ ansible_distribution_version | truncate(1, True, '') }}
- debug: "msg={{ ansible_distribution }}-{{ ansible_distribution_version | truncate(1, True, '') }}"
- hosts: RedHat-6
user: myuser
sudo: yes
gather_facts: yes
roles:
- somerhel6onlyrole
(我的剧本中还有一个RedHat-5部分,但它只是调用fail
)
我无法让group_by主机匹配,它总是会跳过。输出如下:
TASK: [debug msg={{ansible_distribution}}-{{ansible_distribution_version | truncate(1, True, '')}}] ***
ok: [abchost1] => {
"msg": "RedHat-6"
}
ok: [abchost2] => {
"msg": "RedHat-6"
}
PLAY [RedHat-6] ***************************************************************
skipping: no hosts matched
PLAY [RedHat-5] ***************************************************************
skipping: no hosts matched
我是否使用group_by错误或误解了它的目的?我对安西斯相对较新;我使用的版本是1.5.3。同样,我可以通过简单地以不同方式验证来解决问题,但我想知道如何正确使用group_by。提前感谢您的帮助!
答案 0 :(得分:3)
你已经关闭,但你需要按如下方式引用密钥:
tasks:
- group_by: key="{{ ansible_distribution }}-{{ ansible_distribution_version | truncate(1, True, '') }}"
这是由于group_by模块中的错误造成的。 PR在这里:https://github.com/ansible/ansible/pull/7273