ansible迭代/迭代嵌套/同步异步/特殊topic说明
tasks直接举例说明:
---
- host: docker
remote_user: root
gather_facts: yes
serial: 3 #表示同一时间控制主机数量(值可以是数值/也可以是百分比)
max_fail_percentage: 30 #最大失败百分比 (举个例子,如果在10个服务器中失败数量多余3个,其它的play就会主动宕掉)
- tasks:
- name: create some file
file: name=/data/{{ item }} state=touch #这里的{{ item }}会循环with_items列表值来创建文件。 即迭代
with_items: # 参数为文件列表名
- file1
- file2
- file3
- name: create users
user: name={{ item.name }} group={{ item.group }} # 同理,这里创建对应的用户并加入到指定属组。 嵌套迭代
with_items:
- { name: "user1", group: "group1" }
- { name: "user2", group: "group2" }
- { name: "user3", group: "group3" }
- name: YUM - fire and forget task
yum: name=docker-io state=installed
async: 1000 #异步执行方式,如果不指定,默认为同步执行方式。 1000表示最大超时时间,单位秒. async的值太小可能会导致稍后检查任务执行失败
poll: 0 # 轮询查询时间为,如果未指定则默认为10S,指定时间为0,则表示不等待任务执行完毕
register: yum_sleeper # 注册一个查询任务
- name: YUM - check on fire and forget task #实现查询任务
async_status: jid={{ yum_sleeper.ansible_job_id }} #查询状态
register: job_result #查询结果
until: job_result.finished #直到查询到的结果为结束
retries: 30 #尝试查询30次
- name: take out off banlance pool
command: /opt/application/upgrade_db.py
run_once: yes # 只执行一次
delegate_to: 192.168.10.100 # 只在委任指定的ip主机执行
ignore_errors: yes #忽略失败
- apt: name=cobbler state=installed
environment: #指定环境代理信息,代理信息也可以存放在变量中
http_proxy: http://proxy.example.com:8080
- name: this command prints FAILED when it fails
command: /usr/bin/example-command -x -y -z
register: command_result
failed_when: "'FAILED' in command_result.stderr" #控制对失败的定义
- shell: /usr/bin/billybass --mode="take me to the river"
register: bass_result
changed_when: "bass_result.rc != 2" #覆写change结果(ansible任务执行后会显示task任务的状态是否有change)