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)

 

posted @ 2019-04-09 11:07  阿拉米苏  阅读(583)  评论(0编辑  收藏  举报