问题
是否可以从另一个Ansible模块中以编程方式调用Ansible模块?
背景
我一直在使用Python (ucsmsdk)和Ansible与Cisco UCS一起工作,创建了自动化服务配置文件模板(SPTs)。我已经按照各自的Git存储库中设置的标准创建了API和模块。
虽然我能够使用Ansible播放书来创建这些SPT,但每个单独项目的创建需要大量重复的属性,并且要遵循它们的长链父/子关系。我想通过在一个步骤中提供所有必需的参数及其结构来消除所有这些重用并简化项目的创建。
下面的示例显示了当前系统与我想要的系统之间的区别。
当前
tasks:
- name: create ls server
ls_server_module:
name: ex
other_args:
creds:
- name: create VNIC Ether
vnic_ether_module:
name: ex_child
parent: ex
other_args:
creds:
- name: create VNIC Ether If (VLAN)
vnic_ether_if_module:
name: ex_child_child
parent: ex_child
creds:
- name: create VNIC Ether
vnic_ether_module:
name: ex_child_2
parent: ex
other_args:
creds:
期望的结果
tasks:
- name: create template
spt_module:
name: ex
other_args:
creds:
LAN:
VNIC:
- name: ex_child
other_args:
vlans:
- ex_child_child
- name: ex_child_2
other_args:
目前,我的唯一障碍是通过以动态和编程方式创建对象的模块来引入一些代码重用。