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

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

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

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

Q&A

1回答

245閲覧

ansible-playbook with_dictを使用して実行ホストを変えたい

zacky

総合スコア59

Ansible

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

0グッド

1クリップ

投稿2024/08/01 11:37

実現したいこと

ansible-playbookで、dictに入っているkeyごとにloopを実施し、valueに入っているホスト名でtaskを実行したい

現在下記のように、keyにrack id、valueにホストが定義されています。

- set_fact: rack_dict: "01": ["host01","host02"] "02": ["host03", "host04", "host05"]

playbook.yml

yaml

1- hosts: all 2 become: yes 3 tasks: 4 - name: set variable 5 set_fact: 6 rack_dict: 7 "01": ["host01","host02"] 8 "02": ["host03", "host04", "host05"] 9 10 - name: loop by rack_id 11 vars: 12 host_list: "{{ item.value }}" 13 include_tasks: tasks_rack.yml 14 run_once: True 15 with_dict: "{{ rack_dict }}" 16 loop_control: 17 label: "{{ item.key }}"

tasks_rack.yml

yaml

1- block: 2 - name: 3 shell: hostname 4 check_mode: no 5 delegate_to: host_list

下記を実現したいと思っています。

  • rack (key)ごとに実行
  • hostname (value)を実行ホスト

発生している問題・分からないこと

delegate_toが単一ホストを期待されているためか、これは動きません。
どのように実現したらいいでしょうか?

該当のソースコード

特になし

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

include_tasksにdelegate_to: "{{ item.value }}"
を記載してもだめでした。

補足

特になし

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

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

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

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

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

guest

回答1

0

こちらのサンプルコードのようにひとつずつLoopを試されましたか?
つまりhost_listをさらにLoopする

投稿2024/08/01 12:59

comefigo

総合スコア1051

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

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

zacky

2024/08/01 13:06

それは確かに可能ですね。 ただ、実行タスク、実行ホストが多いため、host_listの実行を並列で行いたいのです。 それを実現できないですかね・・・
comefigo

2024/08/01 13:11

なるほどです。 ansible.builtin.add_hostしてからplayを切り替えるのはいかがでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問