LoginSignup
0
0

More than 3 years have passed since last update.

【Ansible】promptをfor文で記入する

Last updated at Posted at 2019-12-21

はじめに

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
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0