python - 使用自定义 Python 脚本在 Ansible Tower 中自定义凭据
问题描述
我正在尝试在 Ansible Tower 中实现自定义脚本以动态导入库存。自定义脚本基本上是使用 Python 编写的,并与充当域控制器 (DC) 的 Windows 2012 Server 交互。当脚本从 Ansible Tower 执行时,它会从 DC 中提取所有工作站并添加到 Ansible 清单中。这样做时,我必须在 Python 脚本中将 DC 的登录凭据作为纯文本传递,这是不希望的。因此正在寻找是否有办法在 Ansible Tower 中存储凭据并将其作为 Python 脚本中的变量传递。
在研究这个主题时,基本上在一个 Custom Inventory Script 中找到了 Custom Credential,它在 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_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 游戏。
任何帮助将不胜感激。
解决方案
最后,获得自定义凭据以使用自定义脚本。简短指南如何实现这一目标。
- 一旦 INPUT CONFIGURATION 和 INJECTOR CONFIGURATION 定义如上,保存。
- 从设置中,转到凭据。选择,+添加。为 CREDENTIALS 指定一个新名称。单击凭据类型中的查找。您应该会看到在上一步中保存的凭据。
- 现在,有趣的一点。在 INPUT CONFIGURATION 中作为标签给出的用户名和密码被激活,现在可用于接受字段值。指定适当的值并保存。这完成了凭证部分,是我错过的重要信息。
- 在库存、来源下,可以选择自定义脚本并可以查找凭据。在这里,步骤 3 中保存的凭据将可用。
同步自定义脚本后,Python 脚本应该能够毫无问题地获取环境变量。
推荐阅读
- java - 如何先构建 .jar 文件,然后再构建我的 Android 应用程序?
- html - 为什么我的 Div 和 Style 没有在电子邮件模板中工作?
- reactjs - 如何访问从命令行传入的 cypress 环境变量
- javascript - Fabric JS 将 Textbox 对象文本限制为仅包含一行文本
- rust - 从未装箱的切片创建 NDArray 的无复制方式?
- asp.net - Asp.Net Identity TwoFactorRememberBrowser Cookie 覆盖第二个用户登录
- formal-verification - 如果属性不满足,UPPAAL 不会显示跟踪
- ios - 为什么 Diffable Datasources 以不同的方式对待类和结构类型?
- leaflet - 将长坐标和纬度坐标划分为子坐标(较小的正方形)?
- r - 合并数据框并按组划分行