Ansible TowerAW​​X-在剧本中使用安全变量吗?

问题描述

问候大家, 我最近开始对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塔中)
  • 如何存储保险库密码(用于解密保险库ID的密码)?
  • 如何在我的剧本中访问它们?

我已经查看了这些链接,但找不到任何有趣的东西:

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文档中,没有关于如何以及在何处存储库ID的解释。

如果需要更多信息,请告诉我,我会更新我的帖子。

谢谢大家!

解决方法

据我所知,根据您希望将这些机密存储在何处,您可以通过两种方式在AWX / Tower中实现这一目标。

  1. 在项目/ GIT存储库中创建文件库
  • 使用“ ansible-vault创建”命令并选择密码
  • 以yaml格式将凭据保存在Vault中,然后将更改提交/推送到git
  • 在您的剧本上,将一个include_vars添加到您的Vault文件中,并提交/推送到git
  • 在Tower中创建凭据,选择type = Vault,然后添加您的Vault的密码
  • 在Tower模板上,添加您之前创建的凭据
  1. 使用自定义凭据类型(这根本不会将凭据保存在git中,它们只会存在于Tower / AWX中)
  • 创建一个新的自定义凭据类型,其注入器配置类型为“ extra_vars”,以及要作为变量包含在剧本中的凭据。
  • 然后根据您在上一步中创建的新凭证类型创建凭证。
  • 现在将凭据分配给模板,并且这些变量将在您的剧本运行中可用。

以下是有关如何创建自定义凭据类型的详细信息

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