AnsibleでテンプレートエンジンのJinja2を使う

AnsibleではテンプレートエンジンのJinja2が使えます。

なので、for文やjoin、mapなど使えるので、結構柔軟な記述ができたります。

単に一部のプロパティを取り出して結合ならば、map + join で行けます。

  vars:
    items:
      - name: name1
        value: value1
      - name: name2
        value: value2
  tasks:
    - name: map join sample
      debug:
        msg: |
          {{ items | map(attribute='value') | join(',') }}

リストのプロパティの組み合わせで文字列を作り出し、改行で結合しようとした場合、mapとjoinの組み合わせでやるのは難しそうだったのでforで書いてみました。

  tasks:
    - name: for sample
      debug:
        msg: |
          {% for item in items %}
          {{ item.name }} {{item.value}}
          {% endfor %}

いろいろ出来そうですね。