我有一个自定义的ansible模块。
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_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
但不幸的是。
答案 0 :(得分:11)
您可以使用default(omit)
(请参阅文档here),例如:
- name: GROUP::TEST
ntptest:
server: "{{ hostvars[item][eth]['ipv4']['address'] }}"
max_offset: "{{ ntp.max_offset | default(omit) }}"
这导致在未定义变量时不将值发送到模块。