省略可播放剧本中的参数的父项

问题描述 投票:0回答:1

任何人都知道如何也使用default(omit)filter删除父参数吗?提出了类似的问题here,但该回答并没有真正回答我所面临的问题的复杂性,我被突然拒绝通过提出后续问题(因此是新问题)来增强答案。

下面是示例剧本任务:

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

当未定义TemplateVariable时,将导致以下json传递到另一个API:

parameters { "Parameter1": {} }

但是我需要它才能通过此:

parameters { }

模块为定义的每个参数都需要一个“值”参数。我无法修复该模块,有人可以建议任何Ansible / Jinja2 / YAML解决方法吗?

谢谢您,亲爱的Stack *社区。

variables ansible yaml jinja2 playbook
1个回答
0
投票

这样的事情怎么样?

- 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({}) }}"

© www.soinside.com 2019 - 2024. All rights reserved.