任何人都知道如何也使用default(omit)filter删除父参数吗?提出了类似的问题here,但该回答并没有真正回答我所面临的问题的复杂性,我被突然拒绝通过提出后续问题(因此是新问题)来增强答案。
下面是示例剧本任务:
- name: Testing omit
module:
parameters:
Parameter1:
value: "{{ TemplateVariable | default(omit) }}"
当未定义TemplateVariable时,将导致以下json传递到另一个API:
parameters { "Parameter1": {} }
但是我需要它才能通过此:
parameters { }
模块为定义的每个参数都需要一个“值”参数。我无法修复该模块,有人可以建议任何Ansible / Jinja2 / YAML解决方法吗?
谢谢您,亲爱的Stack *社区。
这样的事情怎么样?
- 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({}) }}"