标准循环with_items:

[root@master circle]# vim c1.yml #练习循环with_items--- - name: create file   hosts: web   gather_facts: false   tasks:    - name: running      file: path=/tmp/{
{ item }} state=touch mode=0644 owner=wang group=wang      with_items:        - test        - lianxi        - hello[root@master circle]# ansible-playbook c1.yml

使用字典的形式:

#练习循环with_items,删除c1创建的文件--- - name: create file   hosts: web   gather_facts: false   tasks:    - name: running      file: path=/tmp/{
{ item.key }} state=absent      with_items:        - {key: test}        - {key: lianxi}        - {key: hello}

嵌套循环with_nested:

#练习使用嵌套循环,例子是拷贝的,with_nested.--- - name: test   hosts: web   tasks:    - name: create user which are used in mysql      mysql_user: name={
{ item[0] }} priv={
{ item[1] }}      with_nested:        - [ 'wang1', 'wang2' ]        - [ 'clientdb', 'employed', 'providerdb' ]

在这个嵌套循环的例子中,我们创建了两个mysql用户,给每一个用户赋予三种权限。

对文件列表使用循环with_fileglob:

with_fileglob可以以非递归的方式来模式匹配单个目录中的文件。

#使用with_fileglob,把circle中的文件拷贝到客户端的/tmp/circle目录中--- - name: test   hosts: web   gather_facts: false   tasks:    - name: create directory      file: path=/tmp/circle state=directory owner=wang group=wang   tasks:    - name: cp file      copy: src={
{ item }} dest=/tmp/circle/            with_fileglob:        - /root/circle/*

执行:

[root@master circle]# ansible-playbook c4.yml

在客户端查看一下结果:

[root@slave tmp]# lscircle[root@slave tmp]# cd circle/[root@slave circle]# lsc1.yml  c2.yml  c3.yml  c4.yml[root@slave circle]#

对哈希表使用循环:

假如你有以下变量:

---users:  alice:    name: Alice Appleworth    telephone: 123-456-7890  bob:    name: Bob Bananarama    telephone: 987-654-3210

你想打印出每个用户的名称和电话号码.你可以使用 with_dict 来循环哈希表中的元素:

tasks:  - name: Print phone records    debug: msg="User {
{ item.key }} is {
{ item.value.name }} ({
{ item.value.telephone }})"    with_dict: "`users`"