Отсутствие родителя параметра в ansible playbook - PullRequest
1 голос
/ 30 мая 2020

Кто-нибудь знает, как использовать фильтр по умолчанию (опустить) , чтобы удалить родительский параметр? Подобный вопрос задан здесь , но ответ на самом деле не отвечает на сложность проблемы, с которой я столкнулся, и мне было резко запрещено уточнять ответ, задав следующий вопрос, отсюда и новый вопрос.

Вот пример задачи ansible playbook:

- name: Testing omit
  module:
    parameters:
      Parameter1:
        value: "{{ TemplateVariable | default(omit) }}"

Если TemplateVariable не определен, это приводит к передаче следующего json другому API:

parameters { "Parameter1": {} }

Однако мне нужно это, чтобы передать это:

parameters { }

Модулю требуется параметр «значение» для каждого определенного параметра. Я не могу исправить модуль, кто-нибудь может предложить обходной путь с использованием Ansible / Jinja2 / YAML, пожалуйста?

1 Ответ

1 голос
/ 30 мая 2020

Как насчет этого?

- name: define module params for param1
  set_fact:
    module_params: "{{ module_params | default({}) | combine({ 'parameter1': { 'value': TemplateParam } }) }}"
  when: TemplateParam is defined

- name: eventually do this for next param2
  set_fact:
    module_params: "{{ module_params | default({}) | combine({ 'parameter2': { 'value': OtherParam } }) }}"
  when: OtherParam is defined

# Note you can organize the above in a loop if you have a lot of params.
# You will have to adapt the data structure and tests but it is quite straightforward.

 - name: Call module with calculated params
   module:
     parameters: "{{ module_params | default({}) }}"

...