include_tasks モジュール

2019/06/01

Ansible

 Ansible Documentation

include_tasks – Dynamically include a task list

 機能

現在の playbook の実行中に別ファイルのタスクを取り込む

 パラメータ

パラメータ選択肢/
Default
説明
file-タスクを取り込むファイル名
free-form-file: を指定しないでタスクを取り込むときのファイル名

 例

■ シンプルな例
メインスクリプト
---
- hosts: all

  tasks:
    - name: 前メッセージ
      debug:
        msg: "取り込み前"
    - name: タスクの取り込み
      include_tasks: sample.yml
      when: ansible_facts['distribution'] == "CentOS"
    - name: 後メッセージ
      debug:
        msg: "取り込み後"
sample.yml
- name: ディストリビューション名を表示
  debug:
    var: ansible_facts['distribution']
実行結果
ansibleman@ubuntu-pc:~/ansible/include_tasks$ ansible-playbook -i hosts.yml site.yml

PLAY [all] ***********************************************************************************************************************

TASK [Gathering Facts] ***********************************************************************************************************
ok: [node-c0706]

TASK [前メッセージ] ********************************************************************************************************************
ok: [node-c0706] => {
    "msg": "取り込み前"
}

TASK [タスクの取り込み] ******************************************************************************************************************
included: /home/ansibleman/ansible/include_tasks/sample.yml for node-c0706

TASK [ディストリビューション名を表示] ***********************************************************************************************************
ok: [node-c0706] => {
    "ansible_facts['distribution']": "CentOS"
}

TASK [後メッセージ] ********************************************************************************************************************
ok: [node-c0706] => {
    "msg": "取り込み後"
}

PLAY RECAP ***********************************************************************************************************************
node-c0706                 : ok=5    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

ansibleman@ubuntu-pc:~/ansible/include_tasks$
■ 取り込むファイル名に変数を使用した例
メインスクリプト
---
- hosts: all

  tasks:
    - name: タスクの取り込み
      include_tasks:
        file: "{{ ansible_facts['distribution'] }}.yml"
CentOS.yml
- name: ディストリビューション名を表示
  debug:
    var: ansible_facts['distribution']
実行結果 : 実行時に "{{ ansible_facts['distribution'] }}.yml → CenOS.yml に変換されたことが確認できる
ansibleman@ubuntu-pc:~/ansible/include_tasks$ ansible-playbook -i hosts.yml site.yml

PLAY [all] ***********************************************************************************************************************

TASK [Gathering Facts] ***********************************************************************************************************
ok: [node-c0706]

TASK [タスクの取り込み] ******************************************************************************************************************
included: /home/ansibleman/ansible/include_tasks/CentOS.yml for node-c0706

TASK [ディストリビューション名を表示] ***********************************************************************************************************
ok: [node-c0706] => {
    "ansible_facts['distribution']": "CentOS"
}

PLAY RECAP ***********************************************************************************************************************
node-c0706                 : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

ansibleman@ubuntu-pc:~/ansible/include_tasks$
■ loop ディレクティブを使用した例
メインスクリプト
---
- hosts: all

  tasks:
    - name: タスクの取り込み
      include_tasks: sample.yml
      loop:
        - 1
        - 2
        - 3
sample.yml
- name: ループの回数を表示
  debug:
    var: item
実行結果
ansibleman@ubuntu-pc:~/ansible/include_tasks$ ansible-playbook -i hosts.yml site.yml

PLAY [all] ***********************************************************************************************************************

TASK [Gathering Facts] ***********************************************************************************************************
ok: [node-c0706]

TASK [タスクの取り込み] ******************************************************************************************************************
included: /home/ansibleman/ansible/include_tasks/sample.yml for node-c0706
included: /home/ansibleman/ansible/include_tasks/sample.yml for node-c0706
included: /home/ansibleman/ansible/include_tasks/sample.yml for node-c0706

TASK [ループの回数を表示] *****************************************************************************************************************
ok: [node-c0706] => {
    "item": 1
}

TASK [ループの回数を表示] *****************************************************************************************************************
ok: [node-c0706] => {
    "item": 2
}

TASK [ループの回数を表示] *****************************************************************************************************************
ok: [node-c0706] => {
    "item": 3
}

PLAY RECAP ***********************************************************************************************************************
node-c0706                 : ok=7    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

ansibleman@ubuntu-pc:~/ansible/include_tasks$ 

カテゴリー

目次

QooQ