例子: -name: add serveral users
user: name={{item}} state=present group=wheel
with_items:
-testuser1
-testuser2
使用with_items 用于迭代的数据类型不仅支持字符串列表还支持哈希列表({key:value})
例子: -name: add serveral users
user: name={{item.name}} state=present groups={{item.groups}}
with_items:
-{name:'testuser1',group:'wheel1'}
-{name:'testuser2',group:'wheel2'}
2.嵌套循环: [with_nested]
例子: -name: give users access to multiple
-mysql-user:name={{item[0]}} priv={{item[1]}}.*:all oppend_privs:yes,password=foo
-with-nested:
-['alice',';bob']
-['clientdb','employeedb','providerdb']
3.对哈希列表循环:[with_dict]
4.对文件使用循环列表:[with_fileglob]
用with_fileglob可以以非递归的方式来模式匹配单个目录中的文件
5.对并行数据集使用循环:[with_together]
例如对于 alpha:['a','b','c'], number:[1,2,3] 想要获得('a',1),('b',2)('c',3) 即
tasks:
-debug: msg="{{item.0}} and {{item.1}}"
with_together:
- "{{alpha}}"
- "{{number}}"
6.对整数序列使用循环 [with_sequence]
可以以升序数字顺序生成一组序列,可以指定起始值,终止值,以及可选的步长
指定参数时也可以用key=value 这种键值对的方式,若采用这种方式,‘format’是一个可打印的字符串
数字值可以被指定为10进制,16进制,或8进制。但是负数不受支持
7.随机选择[with_random_choice]
它是用来随机获取一些值,它并不是负载均衡,它有时也可以用作一个简化版的负载均衡器。(对于数组中的值会被随机选择一个)。这个功能可以用在一个可预测的自动化环境中添加混乱和兴奋点。
8.本地playbooks, 可以直接设置hosts:,然后使用命令行:ansible-playbook playbook.yml -connection=local 或者 单独存放于playbook中:
-hosts:127.0.0.1
connection:local
9,配置环境变量:使用environment
10.Playbook中的错误处理:
忽略错误的命令: 通常情况下,出现失败时ansible会停止在宿主机上执行,有时,想要继续执行下去,可以添加:ignore_errors:yes
控制对失败的定义:有时候一条命令的错误码毫无意义,只有最后的输出结果能告诉我们出了什么问题,比如只需要知道最后的‘FAILED’就可以添加:failed_when:"",
覆写更改结果
11.标签:方便于在一个大型的playbook中值运行其中特定的配置而无需运行整个playbook将会很有用
12.vault:用来加密数据文件:
创建打开YAML文件:vim test.yml , ansible-playbook test.yml(路径要写对)
创建加密文件:ansible-vault creat test.yml
编辑加密文件:ansibkle-vault edit test.yml
给加密文件修改密码:ansible-vault rekey test.yml
加密普通文件: ansible-vault encrypt test.yml
解除已加密文件: ansible-vault decrypt test.yml
查阅已加密文件: ansible-vault view test.yml
13.从指定任务开始运行playbook文件以及分步运行playbook
start-at-task : 是从指定的任务开始执行playbook 使用 start-at
分步运行playbook:用-step
14.Python API :可通过扩展ansible来响应大量的Python事件,用Python写来插件调用外部的数据源。