Ansible Tower(AWX)- 如何在playbook中使用安全变量?

8

大家好, 我最近开始尝试使用Ansible(特别是Ansible Tower)。 在我的playbook中,我遇到了使用安全值的问题,更准确地说,我不知道如何正确使用它。

与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工具,可以用来加密变量文件,然后在playbook中使用。 不幸的是,我看到的例子(或者可能是我没有注意到)只包括从命令行运行playbook,这不是我要做的事情。
我有一个playbook在我的GIT存储库中,它连接到我的Ansible Tower项目。 为了达到可以使用包含密码的变量的目的,我需要做什么?
  • 加密方式一样吗?使用ansible-vault
  • 我应该把加密文件存储在哪里?(特别是在Ansible Tower中)
  • 如何存储vault密码(用于解密vault-id的密码)?
  • 如何在我的playbook中访问它们?
我查看了那些链接,但我没有找到任何有趣的东西:

https://docs.ansible.com/ansible/latest/user_guide/vault.html

https://docs.ansible.com/ansible/latest/user_guide/playbooks_vault.html

https://docs.ansible.com/ansible/latest/user_guide/playbooks_best_practices.html#variables-and-vaults

在Ansible Tower文档中没有说明如何存储和存储vault-id。
如果需要更多信息,请告诉我,我会更新我的帖子。
谢谢大家!

2
基本上:您可以使用ansible-vault加密数据,包括整个yaml文件、文件或模板,或者yaml文件中的单个值。您可以像以前一样使用这些资源,但必须提供保险库密码才能解密它们。对于命令行,密码可以作为命令选项、环境变量、密码文件或动态可执行脚本提供。对于AWX/Tower,您可以将密码存储为凭据并将其传递给作业。除了AWX部分相当琐碎外,您链接的文档中详细说明了所有内容。 - Zeitounator
1个回答

15
据我所知,在AWX/Tower中,您有两个选项来实现此目标,具体取决于您想要存储这些机密的位置。
1. 在项目/GIT repo中创建一个保险库
- 使用 "ansible-vault create" 命令并选择密码 - 以yaml格式将凭据保存在保险库中,并提交/推送更改到git - 在playbook中添加一个 include_vars 到您的保险库文件,并提交/推送到git - 在Tower中创建凭据,选择类型=Vault并添加您的保险库密码 - 在您的Tower模板中添加您之前创建的凭据
2. 使用自定义凭据类型(这不会将凭据保存在git中,它们只会存在于Tower/AWX中)
- 创建一个新的自定义凭据类型,注入器配置类型为 "extra_vars",并包含您想要作为变量包含在playbook中的凭据。 - 然后基于您在上一步中创建的新凭据类型创建一个凭据。 - 现在将该凭据分配给您的模板,那些变量将只在您的playbook运行中可用。
以下是如何创建自定义凭据类型的详细信息。

https://docs.ansible.com/ansible-tower/latest/html/userguide/credential_types.html


3
非常简明扼要的答案,在Ansible/Tower文档中有些难以找到。 - ws6079

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接