てくなべ (tekunabe)

ansible / network / automation

[Ansible] ansible-plyabook コマンドに複数の Playbook を指定すると連続で実行される

はじめに

たまたま気がついたのですが、ansible-plyabook コマンドに複数のPlaybook を指定すると連続で実行されます。

公式ドキュメントの ansible-playbook コマンド説明ページや、ヘルプには以下のような記載があります。

usage: ansible-playbook [-h] [--version] [-v] [-k]
...(略)...
                     playbook [playbook ...]

この記事では、簡単なサンプルで動作例を紹介します。

  • 環境
    • Ansible 2.8.4 / 2.9.0

サンプル Playbook

3つ Playbook を準備します。

 - hosts: localhost
  connection: local
  gather_facts: no

  tasks:
    - name: debug
      debug:
        msg: "Playbook 1"   # ここで区別
 - hosts: localhost
  connection: local
  gather_facts: no

  tasks:
    - name: debug
      debug:
        msg: "Playbook 2"   # ここで区別
 - hosts: localhost
  connection: local
  gather_facts: no

  tasks:
    - name: debug
      debug:
        msg: "Playbook 3"   # ここで区別

実行

ansible-playbook コマンドの引数に、先ほど作成した Playbook 3つを指定して実行します。

$ ansible-playbook -i localhost, p1.yml p2.yml p3.yml 

PLAY [localhost] ******************************************************************************

TASK [debug] **********************************************************************************
ok: [localhost] => {
    "msg": "Playbook 1"
}

PLAY RECAP ************************************************************************************
localhost                  : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   


PLAY [localhost] ******************************************************************************

TASK [debug] **********************************************************************************
ok: [localhost] => {
    "msg": "Playbook 2"
}

PLAY RECAP ************************************************************************************
localhost                  : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   


PLAY [localhost] ******************************************************************************

TASK [debug] **********************************************************************************
ok: [localhost] => {
    "msg": "Playbook 3"
}

PLAY RECAP ************************************************************************************
localhost                  : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

3つの Playbook が、指定した順番に連続で実行されました。

なお、試した限り、タスクの実行に失敗すると以降の Playbook は実行せずに中断しました。