ansible迭代/迭代嵌套/同步異步/特殊topic說明

tasks直接舉例說明:docker

---
- host: docker
  remote_user: root
  gather_facts: yes
  serial: 3     #表示同一時間控制主機數量(值能夠是數值/也能夠是百分比)shell

  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
      - file3app

  - 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  # 註冊一個查詢任務async

  - 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次this

  - name: take out off banlance pool
    command: /opt/application/upgrade_db.py
    run_once: yes          # 只執行一次
    delegate_to: 192.168.10.100   # 只在委任指定的ip主機執行spa

    ignore_errors: yes    #忽略失敗代理


  - apt: name=cobbler state=installed
    environment:      #指定環境代理信息,代理信息也能夠存放在變量中
        http_proxy: http://proxy.example.com:8080ip

 

  - 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)

相關文章
相關標籤/搜索