我很难弄清楚如何在我的剧本中使用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是错误的还是误解了它的目的?我对ansible还比较陌生,我使用的版本是1.5.3。同样,我也可以通过一种不同的方式进行验证来解决这个问题,但是我想知道如何正确地使用group_by。提前感谢您的帮助!
发布于 2014-05-04 02:59:29
您已经接近了,但是您需要引用下面的关键字:
tasks:
- group_by: key="{{ ansible_distribution }}-{{ ansible_distribution_version | truncate(1, True, '') }}"这是由于group_by模块中的一个错误造成的。PR在这里:https://github.com/ansible/ansible/pull/7273
https://stackoverflow.com/questions/22938306
复制相似问题