开发使用 3rd 方 python 库的自定义 ansible 模块时设置环境的正确方法

腰椎间盘突出

我开发了一个自定义 ansible 模块,该模块依赖于 3rd 方库 PyYAML。但是运行剧本会产生

ansible_module_my_module.py, line 5, in <module>
  import yaml
ImportError: No module named yaml

我在 ansible requirements.txt ( https://github.com/ansible/ansible/blob/stable-2.8/requirements.txt ) 中看到了 PyYAML,所以我知道它已安装/使用在主机上。我想知道是否有推荐的方法将它安装在远程机器上?

我可以使用 pip ansible 模块在剧本中添加一个步骤以将其安装在遥控器上。就像是

- hosts: all
  tasks:
  - name: Installing PyYAML python library using Ansible pip module
    pip:
      name: PyYAML

但这意味着剧本知道隐藏在堆栈深处的模块的实现细节,这似乎是错误的。我的期望是有一些方法可以告诉 ansible 在远程机器上安装 3rd 方库作为其设置的一部分。例如,在我的模块中添加一个 requirements.txt 并将其附加到它的设置中,但我似乎找不到一种优雅的方法来做到这一点。任何帮助表示赞赏。

腰椎间盘突出

首先 ansible 检测依赖项并自动安装它违背了他们在主机上尽可能少安装的理念。为了解决这个问题,我最终将自定义模块包装在一个角色中,并将变量传递给该角色,而不是直接传递给模块。因此,用户设定角色的变量,它使用呼叫include_role,并tasks_from包括在他们requirements.yml后。然后我使用 pip 模块(https://docs.ansible.com/ansible/latest/modules/pip_module.html)在调用我的自定义模块的任务之前将环境设置为角色中的任务。

我面临的第二个问题是,/usr/bin/python当通过 virtualenv 执行时,ansible 将默认为even。这显然是设计的行为。为了解决这个问题,我必须ansible_python_interpreter在本地运行时手动将其设置为 virtualenv。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

是否可以添加自定义输入并使用 ScriptTag 调用 3rd 方 API?

来自分类Dev

Angular 6 正确导入 Karma 测试中使用的 3rd 方 JS 文件的方法

来自分类Dev

是否可以在自己的解决方案中限制使用 3rd 方库?

来自分类Dev

PHP 使用由 3rd 方服务器/URL 设置的会话 cookie ID

来自分类Dev

导入python库时ansible自定义过滤器失败

来自分类Dev

如何从 3rd 方库运行活动?

来自分类Dev

如何通过 Xcode 构建插件包括 OpenCV 库(或其他 3rd 方库)以供 Unity 使用?

来自分类Dev

测试 3rd 方 Java SDK 的静态方法

来自分类Dev

使用Ansible Galaxy自动安装Ansible自定义模块

来自分类Dev

ansible:如何使用交互式python脚本(自定义模块)

来自分类Dev

如何使用自定义 Ansible 模块打印语句?

来自分类Dev

Xamarin.Forms - 使用来自 UWP 头项目的 3rd 方 dll 库引用 UWP 类库项目类型

来自分类Dev

无法使用多进程库导入自定义 python 模块

来自分类Dev

Webpack:如何将 3rd 方库捆绑到单独的文件中?

来自分类Dev

如何将 3rd 方 RESTapi 响应消耗到 Laravel 数据库中

来自分类Dev

如何在Android上使用3rd Party库?

来自分类Dev

使用 Aurelia CLI 绑定 3rd 方 Bootstrap 主题的 jQuery 控件的异常行为

来自分类Dev

无法使用 jquery 从 3rd 方脚本中删除 div

来自分类Dev

Angular 5:在 <div *ngIf="something"> 中使用 3rd 方脚本不起作用

来自分类Dev

我如何在 angular 中使用 3rd 方 jquery 插件?

来自分类Dev

使用 Apache Nifi 从 3rd 方 Rest API 收集文件 - 流程建议

来自分类Dev

使用 Axios 在页面加载时调用 3rd 方的 REST API

来自分类Dev

在 nativescript 项目中使用 3rd 方、本机 SDK - 框架似乎不是动态框架

来自分类Dev

3rd 方同步方法冻结 .NET 4.7.2 WPF 中的 UI

来自分类Dev

NodeJS Mock 3rd 方服务

来自分类Dev

如何模拟从自定义类的自定义方法中调用的boto3方法?

来自分类Dev

带有外部 Python 库的 Odoo 自定义模块

来自分类Dev

设置python包的自定义库路径

来自分类Dev

python中的自定义ansible模块-如何解析相对角色文件路径?

Related 相关文章

  1. 1

    是否可以添加自定义输入并使用 ScriptTag 调用 3rd 方 API?

  2. 2

    Angular 6 正确导入 Karma 测试中使用的 3rd 方 JS 文件的方法

  3. 3

    是否可以在自己的解决方案中限制使用 3rd 方库?

  4. 4

    PHP 使用由 3rd 方服务器/URL 设置的会话 cookie ID

  5. 5

    导入python库时ansible自定义过滤器失败

  6. 6

    如何从 3rd 方库运行活动?

  7. 7

    如何通过 Xcode 构建插件包括 OpenCV 库(或其他 3rd 方库)以供 Unity 使用?

  8. 8

    测试 3rd 方 Java SDK 的静态方法

  9. 9

    使用Ansible Galaxy自动安装Ansible自定义模块

  10. 10

    ansible:如何使用交互式python脚本(自定义模块)

  11. 11

    如何使用自定义 Ansible 模块打印语句?

  12. 12

    Xamarin.Forms - 使用来自 UWP 头项目的 3rd 方 dll 库引用 UWP 类库项目类型

  13. 13

    无法使用多进程库导入自定义 python 模块

  14. 14

    Webpack:如何将 3rd 方库捆绑到单独的文件中?

  15. 15

    如何将 3rd 方 RESTapi 响应消耗到 Laravel 数据库中

  16. 16

    如何在Android上使用3rd Party库?

  17. 17

    使用 Aurelia CLI 绑定 3rd 方 Bootstrap 主题的 jQuery 控件的异常行为

  18. 18

    无法使用 jquery 从 3rd 方脚本中删除 div

  19. 19

    Angular 5:在 <div *ngIf="something"> 中使用 3rd 方脚本不起作用

  20. 20

    我如何在 angular 中使用 3rd 方 jquery 插件?

  21. 21

    使用 Apache Nifi 从 3rd 方 Rest API 收集文件 - 流程建议

  22. 22

    使用 Axios 在页面加载时调用 3rd 方的 REST API

  23. 23

    在 nativescript 项目中使用 3rd 方、本机 SDK - 框架似乎不是动态框架

  24. 24

    3rd 方同步方法冻结 .NET 4.7.2 WPF 中的 UI

  25. 25

    NodeJS Mock 3rd 方服务

  26. 26

    如何模拟从自定义类的自定义方法中调用的boto3方法?

  27. 27

    带有外部 Python 库的 Odoo 自定义模块

  28. 28

    设置python包的自定义库路径

  29. 29

    python中的自定义ansible模块-如何解析相对角色文件路径?

热门标签

归档