はじめに
promptにvarsの内容をfor文で書きたかったのですが、
どうやら改行は勝手に消されてしまうようです。
prompt_test.yml
---
- name: prompt TEST
hosts: junos
gather_facts: no
vars:
ansible_python_interpreter: /usr/bin/python3
output_lists:
- router1
- router2
- router3
vars_prompt:
- name: "usr_input"
prompt: "
here are output lists! \n
{%- for i in output_lists -%}
{{ i }} \n
{%- endfor -%}
"
private: no
tasks:
- name: 'debug'
debug:
msg: '{{ usr_input }}'
実行結果(失敗)
for文で記入されていますが、改行が消されてしまいました。
[ec2-user@ip-<ip addr> ansible]$ ansible-playbook -i hosts prompt_test.yml
here are output lists!router1router2router3: test-test
PLAY [prompt TEST] **************************************************************************************************************************************************************************
TASK [debug] ********************************************************************************************************************************************************************************
ok: [junos_router_1] => {
"msg": "test-test"
}
PLAY RECAP **********************************************************************************************************************************************************************************
junos_router_1 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
解決策
|(パイプ)を使い、かつ-(ハイフン)を消して改行を入れることで上手くいきました。
prompt_test2.yml
---
- name: prompt TEST
hosts: junos
gather_facts: no
vars:
ansible_python_interpreter: /usr/bin/python3
output_lists:
- router1
- router2
- router3
vars_prompt:
- name: "usr_input"
prompt: |
here are output lists!
{% for i in output_lists %}
{{ i }}
{% endfor -%}
private: no
tasks:
- name: 'debug'
debug:
msg: '{{ usr_input }}'
実行結果(成功)
想定通りpromptをfor文で記入することが出来ました。
[ec2-user@ip-<ip addr> ansible]$ ansible-playbook -i hosts prompt_test2.yml
here are output lists!
router1
router2
router3
: test-test
PLAY [prompt TEST] **************************************************************************************************************************************************************************
TASK [debug] ********************************************************************************************************************************************************************************
ok: [junos_router_1] => {
"msg": "test-test"
}
PLAY RECAP **********************************************************************************************************************************************************************************
junos_router_1 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0