実現したいこと
- 変数の中身が空の場合には0バイトファイルを生成したい。
前提
ansibleでjinja templateモジュールを用いたロールを開発中。
発生している問題・エラーメッセージ
1バイトの改行ファイルが生成される。
# cat -E /tmp/sample.txt $ #
該当のソースコード
tasks/main.yml
- name: サンプル template: src: sample.j2 dest: /tmp/sample.txt owner: "root" group: "root" mode: "0644"
templates/sample.j2
{% for item in rhel_sample['input'] %} {% for item is defined %} {{ item }} {% endif %} {% endfor %}
inventory.yml
rhel_sample: input: []
試したこと
デバッグ1
A {% for item in rhel_sample['input'] %} B {% for item is defined %} C {{ item }} D {% endif %} E {% endfor %} F
実行結果1
# cat -E /tmp/sample.txt A$ F$ #
デバッグ2
A {% for item in rhel_sample['input'] %} B {% for item is defined %} C {{ item }} D {% endif %} E {% endfor %}
実行結果2
# cat -E /tmp/sample.txt A$ #
デバッグ3 改行コードなし(0バイト)
# cat -E templates/sample.j2 #
実行結果3 改行コードなし(0バイト)
# cat -E /tmp/sample.txt #
デバッグ4 改行コードあり(1バイト)
# cat -E templates/sample.j2 $ #
実行結果4 改行コードあり(1バイト)
# cat -E /tmp/sample.txt $ #
補足情報(FW/ツールのバージョンなど)
- rhel: 8.1
- ansible: core 2.11.1
- python: 3.6.8
- jinja: 3.0.1
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。