如何在Molecule中传入额外的清单文件(动态清单脚本)
具体配置方法
1. 配置文件修改位置
所有配置都在对应场景的molecule/<场景名>/molecule.yml文件中调整,找到provisioner(默认值为ansible)配置块,新增inventory.hosts配置项即可。
2. 静态清单文件传入示例
如果使用本地静态清单文件,直接填写相对路径(相对于molecule.yml所在目录)或者绝对路径即可:
provisioner: name: ansible inventory: # 传入自定义静态清单文件 hosts: ../path/to/your/custom_inventory.ini
3. 动态清单脚本传入示例
如果使用你提到的自定义动态清单脚本,首先要确保脚本有可执行权限(可执行chmod +x your_dynamic_inventory.py添加权限),之后直接填写脚本路径即可,Molecule会自动识别可执行文件为动态清单:
provisioner: name: ansible inventory: # 传入自定义动态清单脚本 hosts: ../path/to/your/dynamic_inventory.py
注意:动态脚本需要符合Ansible动态清单规范,支持--list和--host <主机名>参数调用,返回格式满足Ansible要求
4. 多清单合并传入
如果需要同时传入多个清单(比如同时使用静态清单+动态清单),可以将hosts设置为数组格式:
provisioner: name: ansible inventory: hosts: - ../static_inventory.ini - ../dynamic_inventory.py
Ansible会按顺序把所有自定义清单和Molecule自动生成的实例清单合并,你playbook中用到的group[inventory_group]变量可以直接从合并后的清单中读取。
5. 验证配置是否生效
执行molecule <场景名> converge操作前,可以先执行以下命令查看合并后的完整清单内容,确认自定义清单是否已经被正确加载:
molecule inventory
内容的提问来源于stack exchange,提问作者Андрей Шибанов
相关产品推荐
相关产品推荐

