使用自定义 Python 脚本在 Ansible Tower 中自定义凭据

hyp*_*ics 5 python ansible ansible-tower ansible-inventory

我正在尝试在 Ansible Tower 中实现自定义脚本来动态导入库存。自定义脚本基本上是使用 Python 编写的,并与充当域控制器 (DC) 的 Windows 2012 Server 进行交互。当从 Ansible Tower 执行脚本时,它会从 DC 中提取所有工作站并添加到 Ansible 清单中。为此,我必须在 Python 脚本中以纯文本形式传递 DC 的登录凭据,这是不希望的。因此,我们正在寻找是否有一种方法可以在 Ansible Tower 中存储凭证并将其作为 Python 脚本中的变量传递。

在研究这个主题时,基本上发现了Custom Credential in a Custom Inventory Script,它在 Ansible Tower 中的定义如下:

在 Ansible tower 中的自定义凭据下,输入配置:

{
"fields": [{
    "id": "username",
    "label": "<Username>",
    "type": "string",
}, {
    "id": "password",
    "label": "<Password>",
    "type": "string",
    "secret": true
}],
}
Run Code Online (Sandbox Code Playgroud)

然后,喷油器配置:

{
"env": {
    "SAT_USERNAME": "{{username}}",
    "SAT_PASSWORD": "{{password}}"
}
}
Run Code Online (Sandbox Code Playgroud)

将上述内容保存在 Ansible Tower 中后,据我了解,SAT_USERNAME应该SAT_PASSWORD可以在 Ansible Tower 中使用。上述指南还表明,可以通过如下定义在 Python 脚本中访问这些自定义凭据:

import os
username = os.environ.get("SAT_USERNAME")
password = os.environ.get("SAT_PASSWORD")
Run Code Online (Sandbox Code Playgroud)

然而,当从 Ansible Tower 执行 Python 脚本时,它不会获取SAT_USERNAMESAT_PASSWORD因此无法成功登录 Windows DC。

我不确定自定义凭据是否适用于 Python,或者仅适用于 Ansible 游戏。

任何帮助将不胜感激。

hyp*_*ics 4

最后,获得了使用自定义脚本的自定义凭据。如何实现这一目标的简短指南。

  1. 一旦输入配置和注射器配置按照上面给出的定义,保存它。
  2. 从“设置”中,转到“凭据”。选择+添加。为凭据指定一个新名称。单击“凭证类型”中的查找。您应该会看到上一步中保存的凭据。
  3. 现在,有趣的是。在输入配置中作为标签给出的用户名和密码被激活,现在可用于接受字段值。指定适当的值并保存。这就完成了凭证部分,也是我错过的重要信息。
  4. 在库存、来源下,可以选择自定义脚本并可以查找凭据。此处,步骤 3 中保存的凭据将可用。

当自定义脚本同步时,Python 脚本应该能够毫无问题地获取环境变量。