Group_by未按预期匹配ansible playbook组 - 如何使用?

时间:2014-04-08 13:18:12

标签: ansible ansible-playbook

我无法弄清楚如何在我的剧本中使用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。提前感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

你已经关闭,但你需要按如下方式引用密钥:

tasks:
 - group_by: key="{{ ansible_distribution }}-{{ ansible_distribution_version | truncate(1, True, '') }}"

这是由于group_by模块中的错误造成的。 PR在这里:https://github.com/ansible/ansible/pull/7273