标准循环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]# ls
circle
[root@slave tmp]# cd circle/
[root@slave circle]# ls
c1.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`"
转载于:https://blog.51cto.com/zidingyi/1877018