版权声明:本文为CSDN博主「KEL-1」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/kellyseeme/article/details/50619562
1、 前言
有可能在一个任务中,可能要做很多事情,例如创建多个用户,安装很多个包等,那么就有可能用到循环。
2、 标准循环
重复的任务可以用下面的方式:
- name: add several users
user: name={{ item }} state=present groups=wheel
with_items:
- testuser1
- testuser2
如果你定义了一个变量文件创建了一个YAML的列表,或者是在var节中,那么可以使用以下的方式:
with_items: "{{ somelist }}"
上面的和下面的表示为相同的含义,如下:
- name: add user testuser1
user: name=testuser1 state=present groups=wheel
- name: add user testuser2
user: name=testuser2 state=present groups=wheel
Yum和apt模块在使用with_items的时候,可以减少包管理事务。
在遍历的各项中,可以不是简单的列表,如果是hash列表的时候,你可以使用子健,如下:
- name: add several users
user: name={{ item.name }} state=present groups={{ item.groups }}
with_items:
- {name: 'testuser1',groups:'wheel'}
- {name: 'testuser2',groups:'root'}
3、 嵌套循环
嵌套循环如下所示:
name: give users access to multiple databases
mysql_user: name={{ item[0] }} priv={{ item[1] }}.*:ALL append_privs=yes password=foo
with_nested:
- ['alice','bob']
- ['clientdb','employeedb','providerdb']
在上面的with_items中,也可以使用以前定义的变量,如下所示:
- name:here, 'users' contains the above list of employees
mysql_user:name={{ item[0] }} priv={{ item[1] }}.*:ALL append_privs=yes password=foo
with_nested:
- "{{users}}"
- ['clientdb','employeedb','providerdb']
4、 遍历hash
假设存在以下变量:
---
users:
alice:
name:Alice Appleworth
telephone:123-456-7890
bob:
name:Bob Bananarama
telephone:987-654-3210
转自:
https://blog.csdn.net/kellyseeme/article/details/50619562