2017-09-14 108 views
0

我正在開發一個Ansible模塊。當一個參數具有特定值時,是否可以指定一組參數爲要求?例如,如果我的模塊有一個'state'參數可以是'present'或'absent',是否有可能需要額外的一組參數,如'type','path',僅當state =當下?Ansible模塊的嵌套參數

module_args = dict(
    name=dict(type='str', required=True), 
    type=dict(type='str', required=False), 
    path=dict(type='str', required=False), 
    state=dict(type='str', required=False, choices=["present","absent"] 
} 

module = AnsibleModule(
    argument_spec=module_args, 
    supports_check_mode=True 
) 

name = module.params["name"] 
script_type = module.param["type"] 
path = module.param["path"] 
state = module.state["state"] 

回答

1

據我所知在目前的Ansible 2.3中沒有這樣的能力。

只有required_together選項AnsibleModule類定義應一起提供的參數(但沒有條件上的值):

required_together = [['s3_key', 's3_bucket'], 
        ['vpc_subnet_ids', 'vpc_security_group_ids']] 

所以,你應該做的爲手動檢查。

0

雖然沒有這樣的概念作爲嵌套參數在Ansible(AFAIK),有可能完成同樣的目的的其他概念:

  • required_together
  • required_one_of
  • required_if

通過上面的聲明,可以在參數之間建立關聯 - 如果一個參數ter被指定,另一個可能被要求與它一起指定。

或者,如果爲參數指定了某個值(即狀態=存在),則可能會要求使用該參數指定附加參數(給定其值)。

Joe Seeder的blogpost涵蓋了更詳細的內容。