Шаблон в шаблоне в 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 — это оболочка модулей 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