差異のまとめ
ansible.builtin.import_tasks
モジュールと ansible.builtin.include_tasks
モジュールを使用したタスクの差異のまとめ ( 比較 ) です。
ansible.builtin.import_tasks | ansible.builtin.include_tasks | |
---|---|---|
取り込むファイルをチェックするタイミング | プレイブックを実行する前 | タスクを実行するとき |
指定したディレクティブの適用箇所 | 取り込むファイル内の各タスクに継承 ( 適用 ) される | ansible.builtin.include_tasks モジュールを使用したタスク自体に適用される |
become ディレクティブ |
設定できる | 設定できない |
loop ディレクティブ |
設定できない | 設定できる |
- 「指定したディレクティブの適用箇所」の「ディレクティブ」は
become
ディレクティブとloop
ディレクティブを除く。
ディレクティブの適用の差異
ansible.builtin.import_tasks
モジュールと ansible.builtin.include_tasks
モジュールのどちらにも設定できる when
ディレクテティブを使用し、その適用の差異を確認します。
ansible.builtin.import_tasks モジュール
register-account3.yml
---
- name: Register a user account.
hosts: all
gather_facts: no
vars:
backup_path: /tmp/backup_files/
vars_files:
- accounts.yml
tasks:
- name: Back up your files.
ansible.builtin.import_tasks:
file: file-backup.yml
- name: Register an account.
ansible.builtin.import_tasks:
file: regist-account.yml
when: inventory_hostname == "imadegawa"
become: yes
regist-account.yml
---
- name: Create a groups.
ansible.builtin.group:
name: "{{ item['group'] }}"
state: present
loop: "{{ accounts }}"
- name: Register a user accounts.
ansible.builtin.user:
name: "{{ item['name'] }}"
group: "{{ item['group'] }}"
password: "{{ item['passwd'] | password_hash('sha512' , 65534 | random(seed=inventory_hostname) | string) }}"
state: present
loop: "{{ accounts }}"
- name: The manager group will be granted administrative privileges.
ansible.builtin.template:
src: sudo.j2
dest: "/etc/sudoers.d/{{ item['name'] }}"
mode: 0440
owner: root
group: root
loop: "{{ accounts }}"
when: item['group'] == "manager"
実行ログです。 ansible.builtin.import_tasks
に設定した when
ディレクティブは、取り込むファイル内の各タスクに適用されます。
y_mrok@ctrl:~/code/exam11$ ansible-playbook -i hosts.yml register-account3.yml
PLAY [Register a user account.] **********************************************************************************************************************
TASK [Create a backup directory.] ********************************************************************************************************************
changed: [marutamachi]
changed: [ebisugawa]
TASK [Back up the "/etc/passwd" file.] ***************************************************************************************************************
changed: [ebisugawa]
changed: [marutamachi]
TASK [Back up the "/etc/shadow" file.] ***************************************************************************************************************
changed: [ebisugawa]
changed: [marutamachi]
TASK [Create a groups.] ******************************************************************************************************************************
skipping: [marutamachi] => (item={'name': 'taro', 'passwd': 'taro-no-password', 'group': 'manager'})
skipping: [marutamachi] => (item={'name': 'jiro', 'passwd': 'jiro-no-password', 'group': 'employee'})
skipping: [marutamachi] => (item={'name': 'hanako', 'passwd': 'hanako-no-passwd', 'group': 'manager'})
skipping: [ebisugawa] => (item={'name': 'taro', 'passwd': 'taro-no-password', 'group': 'manager'})
skipping: [ebisugawa] => (item={'name': 'jiro', 'passwd': 'jiro-no-password', 'group': 'employee'})
skipping: [ebisugawa] => (item={'name': 'hanako', 'passwd': 'hanako-no-passwd', 'group': 'manager'})
TASK [Register a user accounts.] *********************************************************************************************************************
skipping: [marutamachi] => (item={'name': 'taro', 'passwd': 'taro-no-password', 'group': 'manager'})
skipping: [marutamachi] => (item={'name': 'jiro', 'passwd': 'jiro-no-password', 'group': 'employee'})
skipping: [marutamachi] => (item={'name': 'hanako', 'passwd': 'hanako-no-passwd', 'group': 'manager'})
skipping: [ebisugawa] => (item={'name': 'taro', 'passwd': 'taro-no-password', 'group': 'manager'})
skipping: [ebisugawa] => (item={'name': 'jiro', 'passwd': 'jiro-no-password', 'group': 'employee'})
skipping: [ebisugawa] => (item={'name': 'hanako', 'passwd': 'hanako-no-passwd', 'group': 'manager'})
TASK [The manager group will be granted administrative privileges.] **********************************************************************************
skipping: [marutamachi] => (item={'name': 'taro', 'passwd': 'taro-no-password', 'group': 'manager'})
skipping: [marutamachi] => (item={'name': 'jiro', 'passwd': 'jiro-no-password', 'group': 'employee'})
skipping: [marutamachi] => (item={'name': 'hanako', 'passwd': 'hanako-no-passwd', 'group': 'manager'})
skipping: [ebisugawa] => (item={'name': 'taro', 'passwd': 'taro-no-password', 'group': 'manager'})
skipping: [ebisugawa] => (item={'name': 'jiro', 'passwd': 'jiro-no-password', 'group': 'employee'})
skipping: [ebisugawa] => (item={'name': 'hanako', 'passwd': 'hanako-no-passwd', 'group': 'manager'})
PLAY RECAP *******************************************************************************************************************************************
ebisugawa : ok=3 changed=3 unreachable=0 failed=0 skipped=3 rescued=0 ignored=0
marutamachi : ok=3 changed=3 unreachable=0 failed=0 skipped=3 rescued=0 ignored=0
y_mrok@ctrl:~/code/exam11$
ansible.builtin.include_tasks モジュール
register-account4.yml
---
- name: Register a user account.
hosts: all
gather_facts: no
vars:
backup_path: /tmp/backup_files/
vars_files:
- accounts.yml
tasks:
- name: Back up your files.
ansible.builtin.include_tasks:
file: file-backup.yml
- name: Register an account.
ansible.builtin.include_tasks:
file: regist-account1.yml
loop: "{{ accounts }}"
when: inventory_hostname == "imadegawa"
regist-account1.yml
---
- name: Create a groups.
ansible.builtin.group:
name: "{{ item['group'] }}"
state: present
become: yes
- name: Register a user accounts.
ansible.builtin.user:
name: "{{ item['name'] }}"
group: "{{ item['group'] }}"
password: "{{ item['passwd'] | password_hash('sha512' , 65534 | random(seed=inventory_hostname) | string) }}"
state: present
become: yes
- name: The manager group will be granted administrative privileges.
ansible.builtin.template:
src: sudo.j2
dest: "/etc/sudoers.d/{{ item['name'] }}"
mode: 0440
owner: root
group: root
when: item['group'] == "manager"
become: yes
実行ログです。 when
ディレクティブは ansible.builtin.include_tasks
自体に適用されます。
y_mrok@ctrl:~/code/exam11$ ansible-playbook -i hosts.yml register-account4.yml
PLAY [Register a user account.] **********************************************************************************************************************
TASK [Back up your files.] ***************************************************************************************************************************
included: /home/y_mrok/code/exam11/file-backup.yml for marutamachi, ebisugawa
TASK [Create a backup directory.] ********************************************************************************************************************
changed: [marutamachi]
changed: [ebisugawa]
TASK [Back up the "/etc/passwd" file.] ***************************************************************************************************************
changed: [ebisugawa]
changed: [marutamachi]
TASK [Back up the "/etc/shadow" file.] ***************************************************************************************************************
changed: [marutamachi]
changed: [ebisugawa]
TASK [Register an account.] **************************************************************************************************************************
skipping: [marutamachi] => (item={'name': 'taro', 'passwd': 'taro-no-password', 'group': 'manager'})
skipping: [marutamachi] => (item={'name': 'jiro', 'passwd': 'jiro-no-password', 'group': 'employee'})
skipping: [ebisugawa] => (item={'name': 'taro', 'passwd': 'taro-no-password', 'group': 'manager'})
skipping: [marutamachi] => (item={'name': 'hanako', 'passwd': 'hanako-no-passwd', 'group': 'manager'})
skipping: [ebisugawa] => (item={'name': 'jiro', 'passwd': 'jiro-no-password', 'group': 'employee'})
skipping: [ebisugawa] => (item={'name': 'hanako', 'passwd': 'hanako-no-passwd', 'group': 'manager'})
PLAY RECAP *******************************************************************************************************************************************
ebisugawa : ok=4 changed=3 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0
marutamachi : ok=4 changed=3 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0
y_mrok@ctrl:~/code/exam11$