Ansible Jinja2 สำหรับการพิมพ์จะสร้างผลลัพธ์ที่ซ้ำกัน

Ansible เวอร์ชัน 2.2, Mac OS X El Capitan

ฉันกำลังพยายามสร้างรายการการแมปพอร์ต

เมื่อฉันรันโค้ดแบบนั้น

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

ฉันคาดหวังว่าจะได้ผลลัพธ์เช่นนั้น:

"'100' '101'"

แต่ฉันได้รับผลลัพธ์แทน:

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

ไม่ชัดเจนนักว่าทำไมฉันถึงได้รับผลลัพธ์เช่นนี้ ดูเหมือนว่าจะสร้างแผนที่บางอย่างจากผลลัพธ์ แต่ฉันไม่เข้าใจว่าทำไม


person AlexS    schedule 22.01.2017    source แหล่งที่มา


คำตอบ (1)


คุณได้รับผลลัพธ์ที่คาดหวัง คุณเพียงเห็นผลลัพธ์ที่ไม่สอดคล้องกันเนื่องจากคุณใช้พารามิเตอร์ var แทน msg ในโมดูล debug

พยายาม:

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

ในกรณีที่ซับซ้อนมากขึ้น คุณอาจพิจารณาวิธีการดีบักที่เชื่อถือได้มากยิ่งขึ้น โดยการบันทึกเนื้อหาลงในไฟล์และตรวจสอบเนื้อหา วิธีนี้จะกำจัดอิทธิพลของปลั๊กอินโทรกลับที่แสดงบันทึก Ansible

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

แล้ว:

cat ./result.txt
person techraf    schedule 22.01.2017