質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.39%
Ansible

Ansibleは、Python で書かれたサーバーの設定を管理するための 構成管理ツールです。

Q&A

解決済

1回答

1455閲覧

Ansible 任意のタスクをまとめて任意の回数だけ繰り返したい

khaii21

総合スコア66

Ansible

Ansibleは、Python で書かれたサーバーの設定を管理するための 構成管理ツールです。

0グッド

0クリップ

投稿2023/05/14 04:46

実現したいこと

複数のタスクをまとめて複数回繰り返したいです。

例えば下記のような1から4までのタスクをまとめて、3回繰り返すような
playbookの書き方がありましたらご教授頂けないでしょうか。
宜しくお願い致します。

該当のソースコード

playbook.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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

まとめて実行したい処理をplaybookではない独立したタスクファイル(例:hoge_task.yml)に分けます。
そのhoge_task.ymlimport_tasksまたはinclude_tasksで読み込む。
import_xxxinclude_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 05:54

編集2023/05/14 05:58
comefigo

総合スコア1051

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

khaii21

2023/05/14 06:07

ご確認ありがとうございます。 大変助かりました。 丁寧に解説して頂きとても勉強になりました。
comefigo

2023/05/14 07:59

解決されてよかったです!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.39%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問