เทมเพลตภายในเทมเพลตใน Ansible?

ฉันยังใหม่กับ Ansible และฉันประสบปัญหาในการหาวิธีทำให้นิพจน์ทำงานได้อย่างไร ฉันกำลังพยายามรันงานคำสั่งที่อ้างอิงตัวแปรพจนานุกรมโดยที่คีย์ที่ฉันต้องการอ้างอิงนั้นเป็นไดนามิกเช่นกัน รหัสที่เกี่ยวข้อง (หลายบรรทัดสำหรับการจัดรูปแบบ):

   tasks:
      - name: set volume
        command: az webapp config storage-account add --share-name shareName2 
                --access-key {{ kvsecrets['connectionstring-{{resources_name}}-key2'] }}

ดังนั้น kvsecrets จึงเป็นพจนานุกรมที่ลงทะเบียนโดยงานก่อนหน้า และ resources_name เป็นตัวแปรที่ประกาศเพิ่มเติมใน Playbook ไวยากรณ์ด้านบนไม่ทำงานเนื่องจากเอาต์พุต kvsecrets['connectionstring-{{resources_name}}-key2'] โดยไม่ทำการแปลงภายใน รูปแบบที่เหมาะสมในการรับค่าของคีย์พจนานุกรมนั้นคืออะไร

ขอบคุณ!


person Gonzalo    schedule 20.05.2020    source แหล่งที่มา
comment
ระวังคำพูด! หากวิธีนี้ช่วยแก้ปัญหาของคุณได้โปรดแจ้งให้เราทราบฉันจะโพสต์มันเป็นคำตอบ   -  person garlicFrancium    schedule 20.05.2020
comment
นั่นได้ผล ขอบคุณ! ฉันยินดีที่จะตั้งค่าสถานะว่าเป็นคำตอบหากคุณตั้งค่า   -  person Gonzalo    schedule 20.05.2020


คำตอบ (1)


Ansible เป็น wrapper ของโมดูล python และใช้ jinja2 สำหรับการสร้างเทมเพลต ปัญหานี้สามารถแก้ไขได้โดยการต่อสตริง:

ด้านล่างนี้เป็นตัวอย่าง:

หมายเหตุ: โปรดคำนึงถึงเครื่องหมายคำพูดคู่และเดี่ยว

tasks:
  - name: set volume
    command: az webapp config storage-account add --share-name shareName2 
             --access-key   {{ kvsecrets["'connectionstring-'+resources_name+'-key2'"]}} }}
person garlicFrancium    schedule 20.05.2020