Ansible Tower (AWX) - 在剧本中使用安全变量?
Ansible Tower (AWX) - using secure variables in a playbook?
大家好,
我最近开始弄乱 Ansible(尤其是 Ansible Tower)。
我 运行 遇到了在我的剧本中使用安全值的问题,更准确地说,我不明白如何正确使用它。
与 Chef-Infra 相比,您可以使用 data_bags
来存储您的安全凭据。
您创建一个数据包:
knife data bag create testDataBag
您将为数据包项目创建一个 json 文件:
{
"id": "preproduction",
"user": "user1",
"password": "this-is-a-password"
}
将其上传到 Chef 服务器,同时使用秘密文件(存在于目标服务器)对其进行加密:
knife data bag from file testDataBag .\testDataBag\preproduction.json --secret-file .\secret-file
然后你就可以在你的食谱中使用它了:
userinfo = data_bag_item('testDataBag', preproduction)
userinfo['user'] # "user1"
userinfo['password'] # "this-is-a-password"
示例用例 - 为 Linux 用户配置密码。
userinfo = data_bag_item('testDataBag', preproduction)
user "#{userinfo['user']}" do
comment 'A random user'
home "/home/#{userinfo['user']}"
shell '/bin/bash'
password "userinfo['password']"
end
我知道这是很多信息,但我只是想展示我是如何使用安全凭证的。
回到 Ansible,我知道有一个 ansible-vault
工具,我可以用它来加密稍后可以在剧本中使用的变量文件。
遗憾的是,我看到的唯一示例(或者我可能只是没有注意到)仅包括来自命令行的 运行 剧本,这不是我所做的。
我的 GIT 存储库中有一个剧本,它连接到我的 Ansible Tower 中的一个项目。
我需要做什么才能达到可以使用包含密码的变量的程度?
- 加密是一样的?通过使用
ansible-vault
?
- 我在哪里存储加密文件? (特别是在 Ansible Tower 中)
- 如何存储保管库密码(用于解密保管库 ID 的密码)?
- 如何在我的剧本中访问它们?
我查看了这些链接,但找不到任何有趣的内容:
https://docs.ansible.com/ansible/latest/user_guide/vault.html
https://docs.ansible.com/ansible/latest/user_guide/playbooks_vault.html
并且在 Ansible Tower 文档中没有说明如何以及在何处存储您的 vault-id。
如果需要更多信息,请告诉我,我会更新我的 post。
谢谢大家!
据我所知,您有两种选择可以在 AWX/Tower 中实现这一点,具体取决于您希望将这些机密存储在何处。
- 在您的 project/GIT 存储库中创建保管库
- 使用“ansible-vault 创建”命令和 select 密码
- 以 yaml 格式将凭据保存在保管库中,commit/push 对 git
的更改
- 在你的 playbook 上添加一个 include_vars 到你的库文件和 commit/push 到 git
- 在 Tower 中创建凭证,select type=Vault 并为您的保管库添加密码
- 在您的 Tower 模板上添加您之前创建的凭据
- 使用自定义凭据类型(这根本不会保存 git 中的凭据,它们只会存在于 Tower/AWX 中)
- 创建一个新的自定义凭据类型,注入器配置类型为“extra_vars”,以及您希望作为变量包含在剧本中的凭据。
- 然后根据您在上一步中创建的新凭据类型创建凭据。
- 现在将该凭据分配给您的模板,这些变量将仅在您的剧本中可用 运行。
以下是有关如何创建自定义凭据类型的详细信息
https://docs.ansible.com/ansible-tower/latest/html/userguide/credential_types.html
大家好, 我最近开始弄乱 Ansible(尤其是 Ansible Tower)。 我 运行 遇到了在我的剧本中使用安全值的问题,更准确地说,我不明白如何正确使用它。
与 Chef-Infra 相比,您可以使用 data_bags
来存储您的安全凭据。
您创建一个数据包:
knife data bag create testDataBag
您将为数据包项目创建一个 json 文件:
{
"id": "preproduction",
"user": "user1",
"password": "this-is-a-password"
}
将其上传到 Chef 服务器,同时使用秘密文件(存在于目标服务器)对其进行加密:
knife data bag from file testDataBag .\testDataBag\preproduction.json --secret-file .\secret-file
然后你就可以在你的食谱中使用它了:
userinfo = data_bag_item('testDataBag', preproduction)
userinfo['user'] # "user1"
userinfo['password'] # "this-is-a-password"
示例用例 - 为 Linux 用户配置密码。
userinfo = data_bag_item('testDataBag', preproduction)
user "#{userinfo['user']}" do
comment 'A random user'
home "/home/#{userinfo['user']}"
shell '/bin/bash'
password "userinfo['password']"
end
我知道这是很多信息,但我只是想展示我是如何使用安全凭证的。
回到 Ansible,我知道有一个 ansible-vault
工具,我可以用它来加密稍后可以在剧本中使用的变量文件。
遗憾的是,我看到的唯一示例(或者我可能只是没有注意到)仅包括来自命令行的 运行 剧本,这不是我所做的。
我的 GIT 存储库中有一个剧本,它连接到我的 Ansible Tower 中的一个项目。 我需要做什么才能达到可以使用包含密码的变量的程度?
- 加密是一样的?通过使用
ansible-vault
? - 我在哪里存储加密文件? (特别是在 Ansible Tower 中)
- 如何存储保管库密码(用于解密保管库 ID 的密码)?
- 如何在我的剧本中访问它们?
我查看了这些链接,但找不到任何有趣的内容:
https://docs.ansible.com/ansible/latest/user_guide/vault.html
https://docs.ansible.com/ansible/latest/user_guide/playbooks_vault.html
并且在 Ansible Tower 文档中没有说明如何以及在何处存储您的 vault-id。
如果需要更多信息,请告诉我,我会更新我的 post。
谢谢大家!
据我所知,您有两种选择可以在 AWX/Tower 中实现这一点,具体取决于您希望将这些机密存储在何处。
- 在您的 project/GIT 存储库中创建保管库
- 使用“ansible-vault 创建”命令和 select 密码
- 以 yaml 格式将凭据保存在保管库中,commit/push 对 git 的更改
- 在你的 playbook 上添加一个 include_vars 到你的库文件和 commit/push 到 git
- 在 Tower 中创建凭证,select type=Vault 并为您的保管库添加密码
- 在您的 Tower 模板上添加您之前创建的凭据
- 使用自定义凭据类型(这根本不会保存 git 中的凭据,它们只会存在于 Tower/AWX 中)
- 创建一个新的自定义凭据类型,注入器配置类型为“extra_vars”,以及您希望作为变量包含在剧本中的凭据。
- 然后根据您在上一步中创建的新凭据类型创建凭据。
- 现在将该凭据分配给您的模板,这些变量将仅在您的剧本中可用 运行。
以下是有关如何创建自定义凭据类型的详细信息
https://docs.ansible.com/ansible-tower/latest/html/userguide/credential_types.html