2017-02-07 222 views
-1

在ansible中迭代集合时出现什么问题?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

你应该小心与填充在YAML:

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

shellwith_itemsname对齐。