Templat di dalam templat di Ansible?

Saya baru mengenal Ansible, dan saya kesulitan menemukan cara agar ekspresi berfungsi. Saya mencoba menjalankan tugas perintah yang mereferensikan variabel kamus di mana kunci yang saya perlukan untuk referensi juga dinamis. Kode yang relevan (bergaris banyak untuk pemformatan):

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

Jadi kvsecrets adalah kamus yang didaftarkan oleh tugas sebelumnya, dan resources_name adalah variabel yang dideklarasikan lebih jauh di buku pedoman. Sintaks di atas tidak berfungsi karena menghasilkan kvsecrets['connectionstring-{{resources_name}}-key2'] tanpa melakukan transformasi bagian dalam. Apa format yang tepat untuk mendapatkan nilai kunci kamus itu?

Terima kasih!


person Gonzalo    schedule 20.05.2020    source sumber
comment
perhatikan kutipannya! jika itu menyelesaikan masalah Anda, beri tahu saya bahwa saya akan mempostingnya sebagai jawaban   -  person garlicFrancium    schedule 20.05.2020
comment
Itu berhasil, terima kasih! Saya akan dengan senang hati menandainya sebagai jawaban jika Anda mengaturnya.   -  person Gonzalo    schedule 20.05.2020


Jawaban (1)


Ansible adalah pembungkus modul python dan menggunakan jinja2 untuk templating. Masalah ini bisa diselesaikan dengan penggabungan string:

Di bawah ini contohnya:

Catatan: Harap perhatikan tanda kutip ganda dan tunggal

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