操作手册模板

将自己创建的playbook公开。

将其标准化为项目单位

    • handler

 

    • プロジェクトのhandlerを /path/to/pj/handlers/main.yml に集約

 

    • roles

 

    プロジェクトのroles を /path/to/pj/roles/

规格

    • tasksを開始する前に,ターゲットのホストネームとインベントリに書いてある名前と照らし合わせて,一致しなければ,止まる

 

    .ansible_build_is_done ファイルが存在したら,止まる

由于playbook中存在不具备幂等性的任务,保证playbook不会再次执行。

    • playbook最後まで行けたら,.ansible_build_is_done ファイル作成する

 

    rolesを実行条件によって,グルーピングする
---
- hosts: hogehoge
  become: true

  handlers:
    - include: handlers/main.yml

  pre_tasks:
    - name: check target hostname
      local_action: command test {{ inventory_hostname }} = {{ ansible_hostname }}
      become: false
      tags: always

  tasks:
    - name: check - is ansible build done
      command: test ! -e .ansible_build_is_done
      become: false

    - block:
       - name: build foo1
         include_role:
           name: foo1
       - name: build foo2
         include_role:
           name: foo2
       - name: build foo3
         include_role:
           name: foo3
      when:
        - ansible_distribution == 'CentOS'
        - ansible_distribution_major_version == '7'

    - name: install foo4
      include_role:
        name: foo4
      when:
        - foo4_enabled == 'yes'
        - ansible_distribution == 'CentOS'
        - ansible_distribution_major_version == '7'
      tags: 1.2.0

    - name: flag - ansible build is done.
      file: path=.ansible_build_is_done mode=0600 state=touch
      become: false
广告
将在 10 秒后关闭
bannerAds