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

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

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

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

Q&A

1回答

732閲覧

ansibleでwith_subelementsのループの制御について

tensaikumabouzu

総合スコア45

Ansible

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

0グッド

0クリップ

投稿2022/03/07 08:09

下記を実行した場合

tasks/main.yaml

1- name: write several information 2 include_tasks: test.yaml 3 with_subelements: 4 - "{{ list }}" 5 - info

tasks/test.yaml

1- name: write information 1 2 win_lineinfile: 3 path: C:\XXXXXXX 4 insertafter: EOF 5 line: |- 6 "{{ list.0.hoge }}" 7 8- name: write information 2 9 win_lineinfile: 10 path: C:\XXXXXXX 11 insertafter: EOF 12 line: |- 13 {{ list.1.name }} 14 {{ list.1.age }}

vars/main.yaml

1list : 2 - hoge: "test" 3 user: 4 - name: "tanaka" 5 age: "12" 6 - name: "suzuki" 7 age: "13" 8 - hoge: "test2" 9 user: 10 - name: "takahashi" 11 age: "12" 12

以下のような結果になると思います。

test
tanaka
12
test
suzuki
13
test2
takahashi
12

ではなく、
test
tanaka
12
suzuki
13
test2
takahashi
12

という結果を得たいです。いい感じにスキップさせたいのですが、アイデアが思いつかず、ご助力いただけないでしょうか?

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

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

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

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

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

guest

回答1

0

Windows環境はなかったので、Linux環境で同様に以下のコードで再現しました。適宜読み替えて頂ければ幸いです。
いくつか問題点があったので、合わせて修正しました。

  • with_subelementsの2つ目の引数がinfoになっているが、変数(list)にプロパティ名infoがないので、子ループしたいuserに修正しました。
  • test.yamlでループの要素を取得する際に list.xx.xxxで取得していますが、正しくはitem.xx.xxになります。

main.yaml

1--- 2- name: Test 3 hosts: localhost 4 connection: local 5 gather_facts: False 6 vars: 7 list: 8 - hoge: test 9 user: 10 - name: tanaka 11 age: 12 12 - name: suzuki 13 age: 13 14 - hoge: test2 15 user: 16 - name: takahashi 17 age: 12 18 tasks: 19 - name: write several information 20 include_tasks: test.yaml 21 with_subelements: 22 - "{{ list }}" 23 - user

test.yaml

1--- 2- name: write information 1 3 lineinfile: 4 path: /tmp/test.txt 5 insertafter: EOF 6 line: |- 7 {{ item.0.hoge }} 8 9- name: write information 2 10 lineinfile: 11 path: /tmp/test.txt 12 insertafter: EOF 13 line: |- 14 {{ item.1.name }} 15 {{ item.1.age }}

投稿2022/03/07 09:09

comefigo

総合スコア1045

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問