【发布时间】: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_USERNAME 和 SAT_PASSWORD 应该在 Ansible Tower 中可用。上述指南还表明,这些自定义凭据可以通过如下定义在 Python 脚本中访问:
import os
username = os.environ.get("SAT_USERNAME")
password = os.environ.get("SAT_PASSWORD")
但是,当从 Ansible Tower 执行 Python 脚本时,它不会获取 SAT_USERNAME 或 SAT_PASSWORD,因此无法成功登录 Windows DC。
我不确定自定义凭据是否应该适用于 Python,或者仅适用于 Ansible 游戏。
任何帮助将不胜感激。
【问题讨论】:
-
@techraf 没有检查这些是否在 Ansible 中可用,但是,我需要在 Python 脚本中使用它们来启动与 Windows DC 的会话。谷歌也没有帮助。
标签: python ansible ansible-inventory ansible-tower