ansible迭代循环

时间:2017-02-07 19:15:31

标签: ansible yaml ansible-2.x

在ansible中迭代集合时出了什么问题?

执行ansible-playbook -i "localhost," -c local main.yml时,错误是

- name: echo kerberos
        shell: echo "addprinc -pw {{ item.password }} {{ item.username }}"
             ^ here
We could be wrong, but this one looks like it might be an issue with
missing quotes.  Always quote template expression brackets when they
start a value. For instance:

    with_items:
      - {{ foo }}

Should be written as:

    with_items:
      - "{{ foo }}"

但对我而言,我似乎已经正确地遵循这些规则。

这是我的最小例子:

main.yml

---
- hosts: all
  tasks:
    - name: echo kerberos
        shell: echo "addprinc -pw {{ item.password }} {{ item.username }}"
        with_items: "{{ users }}"

users.yml里

---
users:
  - username: test_user
    password: test_user
    sn: User
    uid: 50001
    gid: 100
  - username: test_user1
    password: test_user
    cn: Test User1
    sn: User1
    uid: 50002
    gid: 100

user_groups:
  - cn: access1
    gid: 100001
    users:
      - test_user1

1 个答案:

答案 0 :(得分:1)

在YAML中你应该小心填充:

---
- hosts: all
  tasks:
    - name: echo kerberos
      shell: echo "addprinc -pw {{ item.password }} {{ item.username }}"
      with_items: "{{ users }}"

shellwith_itemsname一致。