Ansible 是否公开其自动发现的 Python 解释器?

lxo*_*xop 5 python ansible

tl;dr:Ansible 是否有包含当前 Python 解释器的变量?

作为我的剧本的一部分,我正在控制器上创建一个 Python 脚本(由另一个命令运行),并且我希望该脚本由 Ansible 使用的 Python 解释器运行。为此,我试图在脚本的 shebang 中设置解释器。

如果我手动设置解释器,我可以使用该ansible_python_interpreter变量(我已经让它以这种方式工作)。如果我不手动设置解释器,那么 Ansible 将自动发现一个解释器,但我不能再使用该ansible_python_interpreter变量,因为它没有设置。

通过查看文档,我无法找到任何方法来查看 Ansible 自动检测到的解释器。有什么我错过了吗?

(Ansible 版本 2.9.10,Python 3.6)


完整情况:

我在 AWX(开源 Ansible Tower)上运行 Ansible,使用自定义虚拟环境作为运行器。我使用 Hashicorp Vault 作为秘密管理系统,而不是在 AWX 中保密。为了访问 Vault,我使用短期访问令牌,这与 AWX 对从 Vault 中提取机密的内置支持不兼容,所以我手动执行(以便我可以在作业启动时提供 Vault 令牌) . 一般来说,这对我来说效果很好。

在这种特殊情况下,我ansible-vault在控制器上运行(是的,有太多称为“保险库”的东西)来解密秘密。我正在使用该--vault-password-file参数通过脚本提供解密密码。由于我使用的虚拟环境已经hvac安装了软件包,我希望只使用一个简短的 Python 脚本从 Hashicorp Vault 中提取密码。一切正常,除了我不知道如何在这个脚本上设置 shebang 以指向 Ansible 正在使用的虚拟环境。

如果我无法得到一个可用的答案,我想我可以改为将密码直接拉入 Ansible,然后使用--ask-vault-pass标志以这种方式传递密码。在我看来,Ansible 确实应该在某个地方公开解释器,所以我首先尝试这样做。

Moo*_*oon 5

特殊变量中 所述,ansible_playbook_python变量保存 Ansible 在控制器上使用的 python 解释器的路径。