まとめて実行したい処理をplaybookではない独立したタスクファイル(例:hoge_task.yml
)に分けます。
そのhoge_task.yml
をimport_tasks
またはinclude_tasks
で読み込む。
import_xxx
とinclude_xxx
の違いはこちらを参照してください。
yaml(playbook)
1# 5回ループする
2- name: 1 to 5
3 ansible.builtin.import_tasks: ./hoge_task.yml
4 loop: [1,2,3,4,5]
5
6# 親側でループしながら変数を呼び出し先に渡す場合はinclude_tasksを使ってください
7# https://docs.ansible.com/ansible/2.9_ja/user_guide/playbooks_loops.html#loop-var
yaml(hoge_task.yml)
1- name: 1 task
2 ansible.builtin.systemd:
3 name: "hoge.service"
4 register: chk_hoge
5- name: 2 task
6 ansible.builtin.debug:
7 var: chk_hoge
8- name: 3 task
9 ansible.builtin.service:
10 name: hoge
11 state: started
12- name: 4 task
13 ansible.builtin.pause:
14 seconds: 10
ちなみに同じ質問をChatGPTに聞いた結果はこちらです。
コードの再利用性は下がりますが、blockを使うのもありですね。
yaml
1- name: Repeat tasks 3 times
2 hosts: localhost
3 gather_facts: false
4 tasks:
5 - name: Repeat tasks
6 ansible.builtin.loop:
7 count: 3
8 ansible.builtin.block:
9 - name: 1 task
10 ansible.builtin.systemd:
11 name: "hoge.service"
12 register: chk_hoge
13 - name: 2 task
14 ansible.builtin.debug:
15 var: chk_hoge
16 - name: 3 task
17 ansible.builtin.service:
18 name: hoge
19 state: started
20 - name: 4 task
21 ansible.builtin.pause:
22 seconds: 10
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/05/14 06:07
2023/05/14 07:59