仅当定义了变量时,才设置附加ansible模块参数
我有一个自定义的ansible模块仅当定义了变量时,才设置附加ansible模块参数,ansible,Ansible,我有一个自定义的ansible模块 10 def main(): 11 module = AnsibleModule(
10 def main():
11 module = AnsibleModule(
12 argument_spec = dict(
13 server = dict(required=True, type='str'),
14 max_offset = dict(required=False, default=0.100, type='float')
15 ),
16 supports_check_mode = False
17 )
18
19 # Write params into normal variables
20 max_offset = module.params['max_offset']
21 server = module.params.get('server')
仅当定义了变量ntp.max\u offset
时,我想用附加参数调用它。
我不知道怎么做。
所以我尝试了以下代码:
- name: GROUP::TEST
ntptest: server="{{ hostvars[item][eth]['ipv4']['address'] }}"
parameter:
name: "max_offset"
value: ntp.max_offset
when: ntp.max_offset is defined
register: modules_output
with_items: "{{groups['ntp_servers']}}"
when: server is not defined
但不幸的是。您可以使用默认值(省略)
(参见文档)例如:
这会导致在变量未定义时不将值发送到模块。如果必须引用变量,如
“{{ntp.max_offset | default(omit)| quote}”
,这仍然有效吗。报价必须在默认值之后,否则会出现错误。
- name: GROUP::TEST
ntptest:
server: "{{ hostvars[item][eth]['ipv4']['address'] }}"
max_offset: "{{ ntp.max_offset | default(omit) }}"