Ansible Tower 中运行模块的来源

166次阅读
没有评论

问题描述

继承了一个 Ansible Tower 安装,但对其中的一些细节不太了解。用户在使用 Ansible Tower 时,通过一个模板启动作业,并且在一个虚拟环境 /opt/virtualenv/venv-20220722/ 下执行。在启动作业时,用户遇到了一些日志信息,这里我们只展示了部分内容:

Enter passphrase for /tmp/awx_61482_iinjmose/artifacts/61482/ssh_key_data: Identity added: /tmp/awx_61482_iinjmose/artifacts/61482/ssh_key_data (ansible@tower.company.tld)
[DEPRECATION WARNING]: Ansible will require Python 3.8 or newer on the controller starting with Ansible 2.12. ...
/opt/virtualenv/venv-20220722/lib/python3.6/site-packages/ansible/parsing/vault/__init__.py:44: CryptographyDeprecationWarning: Python 3.6 ...
ansible-playbook [core 2.11.12]   config file = /tmp/awx_61482_iinjmose/project/ansible.cfg  configured module search path = ...
...

用户注意到在启动作业时会涉及到一些模块,但不太清楚这些模块的来源。

用户尝试编辑模块的文件以适应自己的需求,但 Ansible Tower 似乎总是使用旧的模块文件。因此,用户的疑问是:这个文件夹的内容是从哪里来的?

解决方案

请注意以下操作可能因版本差异而有所不同,确保你的操作前做好备份。

在 Ansible Tower 中,模块的来源可以从虚拟环境、配置的模块搜索路径,以及 Tower 自身的一些路径中获取。

虚拟环境中的模块

首先,Ansible Tower 在执行作业时会使用虚拟环境,该虚拟环境包含了 Ansible 的依赖以及模块。用户在日志中提到的 /opt/virtualenv/venv-20220722/ 就是虚拟环境的路径。在这个虚拟环境中,Ansible Tower 使用特定版本的 Python 和 Ansible,以及相关的模块。模块可以被存储在虚拟环境的对应位置,例如 /opt/virtualenv/venv-20220722/lib/python3.6/site-packages/ansible。Tower 会根据作业需要,在虚拟环境中寻找合适的模块来执行任务。

配置的模块搜索路径

另一个模块的来源是配置文件中指定的模块搜索路径。在日志中可以看到如下的信息:

configured module search path = ['/var/lib/awx/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']

Tower 会根据这些配置的路径,在指定的目录中查找模块文件。这些路径可以是系统级的模块路径,也可以是用户自定义的路径。如果你希望修改 Tower 使用的模块,可以检查并调整配置中的这些路径。

Tower 内部路径

在 Tower 的安装目录下,还会有一些 Tower 自身的路径,其中可能包含一些用于执行作业的模块。这些路径通常是根据 Tower 的安装结构而定的。在你的日志中,有一个路径是 /var/lib/awx/.ansible/collections,这可能是 Tower 内部存储模块和集合的位置之一。

总之,Ansible Tower 在执行作业时,会从虚拟环境、配置的模块搜索路径,以及 Tower 自身的一些路径中获取模块。如果你需要更改 Tower 使用的模块,可以考虑检查这些不同的来源,然后采取适当的措施。

这些是一些常见的模块来源,但可能还有其他因素影响模块的获取。根据你的具体情况,可能需要进一步调查来确认模块的来源。

以上是关于 Ansible Tower 中模块来源的解释。希望这能够帮助你理解模块是如何被获取和使用的。如有更多问题,请随时提问。

正文完