仅当定义了变量时,才设置附加ansible模块参数

仅当定义了变量时,才设置附加ansible模块参数,ansible,Ansible,我有一个自定义的ansible模块 10 def main(): 11 module = AnsibleModule(

我有一个自定义的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\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) }}"