标准循环with_items:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| [iyunv@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
[iyunv@master circle]# ansible-playbook c1.yml
|
使用字典的形式:
1
2
3
4
5
6
7
8
9
10
11
12
| #练习循环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:
1
2
3
4
5
6
7
8
9
10
| #练习使用嵌套循环,例子是拷贝的,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可以以非递归的方式来模式匹配单个目录中的文件。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| #使用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/*
|
执行:
1
| [iyunv@master circle]# ansible-playbook c4.yml
|
在客户端查看一下结果:
1
2
3
4
5
6
| [iyunv@slave tmp]# ls
circle
[iyunv@slave tmp]# cd circle/
[iyunv@slave circle]# ls
c1.yml c2.yml c3.yml c4.yml
[iyunv@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}}"
|