【问题标题】:Custom credentials in Ansible Tower with Custom Python Script使用自定义 Python 脚本在 Ansible Tower 中自定义凭据
【发布时间】:2018-10-08 08:45:19
【问题描述】:

我正在尝试在 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
}],
}

然后,喷油器配置:

{
"env": {
    "SAT_USERNAME": "{{username}}",
    "SAT_PASSWORD": "{{password}}"
}
}

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

import os
username = os.environ.get("SAT_USERNAME")
password = os.environ.get("SAT_PASSWORD")

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

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

任何帮助将不胜感激。

【问题讨论】:

  • @techraf 没有检查这些是否在 Ansible 中可用,但是,我需要在 Python 脚本中使用它们来启动与 Windows DC 的会话。谷歌也没有帮助。

标签: python ansible ansible-inventory ansible-tower


【解决方案1】:

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

  1. 一旦定义了 INPUT CONFIGURATION 和 INJECTOR CONFIGURATION 如上所述,保存它。
  2. 从“设置”转到“凭据”。选择,+添加。给它起一个新名字 凭证。单击凭据类型中的查找。你应该 查看上一步中保存的凭据。
  3. 现在,有趣的一点。给出的用户名和密码 因为 INPUT CONFIGURATION 中的标签被激活并且现在可用 接受字段值。指定适当的值并保存。 这完成了凭证部分,并且是重要的部分 我错过的信息。
  4. 在库存、来源下,可以选择自定义脚本,然后 可以查询凭据。在这里,在步骤 3 中保存的凭据 将可用。

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

【讨论】:

  • 为我节省了大量时间。我试图与 extra_vars 一起工作,这是不可能的。凭证类型的环境变量是要走的路
猜你喜欢
  • 1970-01-01
  • 2018-03-05
  • 2020-11-10
  • 1970-01-01
  • 1970-01-01
  • 2014-06-30
  • 1970-01-01
  • 2019-03-04
  • 2020-02-20
相关资源
最近更新 更多