Как раскрыть составную переменную ansible в python плагине?

Пишу action плагин для ansible, замена jinja2 на DotLiquid. Генерирую json файл с значениями переменных для шаблонизатора. Не могу найти как добраться до значений составных переменных. Вместо значения переменой в шаблон рендерится содержимое строки.

То есть:

  - hosts: localhost
    vars:
      target:
        porta: 8080
    tasks:
    - name: DotLiquid template
      template_dotliquid:
        src: template.liquid
        dest: /tmp/template.txt
      vars:
        v_smth: "{{ target.porta }}"
TASK [DotLiquid template] ********************************************************************************************************************************************************
Monday 04 October 2021  10:11:44 +0300 (0:00:03.819)       0:00:04.051 ********
Monday 04 October 2021  10:11:44 +0300 (0:00:03.823)       0:00:04.054 ********
--- before: /tmp/template.txt
+++ after: /home/sheridan/.ansible/tmp/ansible-local-31413T5LRa8/tmpUT3WJo/result.output
@@ -1,6 +1,6 @@
+{{ target.porta }}

В целом - надо взять ansible факты относящиеся к таску и сохранить из в json файл. Но при этом переменные вида var2: '{{ var1 }}' не раскрываются.

Делаю так:

class ActionModule(ActionBase):
    def run(self, tmp=None, task_vars=None):
        ''' handler for template_dotliquid operations '''

        self.variables = dict()
        if task_vars is not None:
            self.variables = task_vars.copy()
...
    def prepare_data(self):
        self.variables.update(generate_ansible_template_vars(self.source, self.dest))
        self.variables.update(self._templar.available_variables)
        with open(self.data_file, "w") as outfile:
          json.dump(self.variables, outfile, indent=4, cls=AnsibleJSONEncoder)

Несколько раз пробовал разобраться в исходниках обработки шаблонов сквозь jinja но постоянно залезаю в какие-то дебри (такое впечатление, что существует решение специально для jinja), хотя есть ощущение что должно быть всё просто.


Ответы (0 шт):