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

时间:2018-10-08 08:45:19

标签: python ansible ansible-inventory ansible-tower

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

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

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

{
"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剧本。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

最后,获得了用于自定义脚本的自定义凭据。简短说明如何实现此目标。

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

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