Kemungkinan Jinja2 untuk cetakan menghasilkan hasil duplikat

Kemungkinan versi 2.2, Mac OS X El Capitan

Saya mencoba membuat daftar pemetaan port.

Ketika saya menjalankan kode seperti itu

---
- hosts: [localhost]
  sudo: True 
  pre_tasks:
    - debug: 
        var: "{% for id in range(100,102) %}  
                '{{ id }}'
            {% endfor %}"

Saya berharap mendapatkan hasil seperti itu:

"'100' '101'"

Namun saya malah mendapatkan hasil:

" '100' '101' ": "100101"

Tidak terlalu jelas mengapa saya mendapatkan hasil seperti itu. Sepertinya itu membuat semacam peta dari hasilnya, tapi saya tidak mengerti mengapa.


person AlexS    schedule 22.01.2017    source sumber


Jawaban (1)


Anda mendapatkan hasil yang diharapkan, Anda hanya melihat keluaran yang tidak konsisten karena Anda menggunakan parameter var alih-alih msg di modul debug.

Mencoba:

- hosts: localhost
  tasks:
    - debug: 
        msg: "{% for id in range(100,102) %}  
                '{{ id }}'
              {% endfor %}"

Dalam kasus yang lebih kompleks, Anda mungkin mempertimbangkan cara debugging yang lebih andal, dengan menyimpan konten ke file dan memeriksa konten. Ini akan menghilangkan pengaruh plugin panggilan balik yang menampilkan log Ansible.

- hosts: localhost
  tasks:
    - copy: 
        dest: ./result.txt
        content: "{% for id in range(100,102) %}  
                    '{{ id }}'
                  {% endfor %}"

Kemudian:

cat ./result.txt
person techraf    schedule 22.01.2017