当我尝试将自定义 python 模块导入另一个模块时,它不再适用于 Tower 3.5。这个确切的设置适用于 2.7.1,Ansible 的当前版本是 2.7.10。
我在剧本中使用的自定义模块位于库目录中,我导入的模块位于主目录中。例如:
| My Repo
|
| example.py
|
| library/
| main.py
我已经读过设置 ANSIBLE_LIBRARY 环境变量会告诉 ansible 在哪里可以找到模块。我尝试设置这个 ANSIBLE_LIBRARY:“./”,还有“{{ playbook_dir }}”,但这没有帮助。这个项目是从回购同步的,我没有自定义模块的固定路径......
在 main.py 中,如果我尝试导入示例,我曾经能够做到这一点:
#!/usr/bin/python
from ansible.module_utils.basic import *
import example
这是错误消息: ImportError: No module named example
附加信息,这是我想出的解决方法(MOD_PATH 是 '{{playbook_dir}}'):
sys.path.insert(0, yaml_data['MOD_PATH'])
import example