如何将.py文件导入Ansible模块?

dav*_*vid 10 python ansible

我的Ansible目录结构看起来像这样.

Ansible-Repo

 |
 +-- playbooks
 |  |  
 |  +-- run_custom_module1
 |      
 +-- library
 |  |  
 |  +-- custom_module1
 |  +-- custom_module2
 |    
 +-- bin
 |  |  
 |  +-- usefulpythonfunctions.py
Run Code Online (Sandbox Code Playgroud)

我希望能够从我的Ansible模块中的bin导入有用的pythonfunctions.py.我在我的模块顶部有一个import usefulpythonfunctions.py,但是当我运行playbook时收到以下错误.

\r\nImportError: No module named usefulpythonfunctions\r\n", "msg": "MODULE FAILURE", "parsed": false}
Run Code Online (Sandbox Code Playgroud)

Tar*_*syk 13

幸运的是2.3发布了这个功能.

现在,您可以将共享代码放在module_utilsPlaybook所在的文件夹中,并通过ansible自动导出.您也可能有兴趣检查目录结构文档

您可以module_utils像访问标准工具一样访问模块

from ansible.module_utils.my_shared_code import MySharedCodeClient
Run Code Online (Sandbox Code Playgroud)

更新 现在,您可以使用ANSIBLE_MODULE_UTILSenv变量配置模块实用程序所在的路径.有关详细信息,请查看文档

  • 谢谢塔拉斯。我已将其添加到https://docs.ansible.com/ansible/devel/dev_guide/developing_module_utilities.html的Ansible文档中 (2认同)
  • 如何让`PyCharm`理解目录结构?没有错误并且具有自动完成功能。 (2认同)

djs*_*dog 0

尝试创建一个名为 的文件夹usefulpythonfunctions,创建一个__init__.py并将所需的函数放入其中。

此外,您应该能够创建bin/foo/bar.py并使用from foo import barbar 之外的函数或类进行调用。

  • 为什么那会起作用?我不明白 Ansible 如何识别 bin 目录中添加的目录,因为它一开始似乎无法识别 bin 文件夹。 (2认同)