向大家问好,我最近开始搞乱 Ansible(特别是 Ansible Tower)。我在剧本中使用安全值时遇到了问题,更准确地说,我不明白如何正确使用它。
与 Chef-Infra 相比,您可以使用它data_bags来存储您的安全凭证。您创建一个数据包:
knife data bag create testDataBag
Run Code Online (Sandbox Code Playgroud)
您将为数据包项目创建一个 json 文件:
{
"id": "preproduction",
"user": "user1",
"password": "this-is-a-password"
}
Run Code Online (Sandbox Code Playgroud)
将其上传到 Chef 服务器,同时使用秘密文件(目标服务器存在)对其进行加密:
knife data bag from file testDataBag .\testDataBag\preproduction.json --secret-file .\secret-file
Run Code Online (Sandbox Code Playgroud)
然后你可以在你的食谱中使用它:
userinfo = data_bag_item('testDataBag', preproduction)
userinfo['user'] # "user1"
userinfo['password'] # "this-is-a-password"
Run Code Online (Sandbox Code Playgroud)
示例用例 - 为 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
Run Code Online (Sandbox Code Playgroud)
我知道这是很多信息,但我只是想展示我如何习惯使用安全凭证。回到 Ansible,我了解到有一个ansible-vault工具可以用来加密稍后可以在剧本中使用的变量文件。遗憾的是,我见过的唯一示例(或者也许我只是没有注意到)仅包括从命令行运行剧本,这不是我所做的事情。
我的 GIT 存储库中有一个剧本,它连接到我的 Ansible Tower …