仅在定义变量时才设置其他ansible模块参数

时间:2016-04-27 09:28:06

标签: ansible

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

但不幸的是。

1 个答案:

答案 0 :(得分:11)

您可以使用default(omit)(请参阅文档here),例如:

- name: GROUP::TEST
  ntptest: 
    server: "{{ hostvars[item][eth]['ipv4']['address'] }}"
    max_offset: "{{ ntp.max_offset | default(omit) }}"

这导致在未定义变量时不将值发送到模块。