gpt4 book ai didi

chef-infra - 数据包加密在 Chef 服务器上加密,但如何加密本地副本?

转载 作者:行者123 更新时间:2023-12-04 01:54:45 25 4
gpt4 key购买 nike

我在私有(private) git 存储库中有完整的 Chef 配置集角色、 Recipe 、数据包等。

我看到我可以使用 --secret-file 选项在数据包上传到 Chef 服务器时对其进行加密。

但我也想将那些加密的数据包存储在 git 存储库中。

唯一想到的是在本地制作一个纯文本 json 文件,通过加密将其上传到 Chef,然后从 Chef 网页获取加密的 JSON 并将其粘贴到我的存储库副本中。

有没有其他人解决过这个问题?

最佳答案

我的 Chef 工作目录中有以下 bash(称为 encrypted-databag.sh):

#!/bin/bash -e

knife data bag $1 $2 $3 --secret-file ~/.chef/encrypted_data_bag_secret
if [ "$1" == "edit" ] ; then
knife data bag show $2 $3 -Fj > "./data_bags/$2/$3.json"
fi

每次我向我展示加密的数据包时,它都可以节省我的打字时间。当我编辑它时,它会自动更新/保存到存储库中。

更新于 30.08.2013

上述脚本的缺点是您直接在 chef-server 上编辑数据包。但是,当您仍在编写一些 Recipe 并且尚未上传它时,就会出现问题,但数据包已经存在并且被旧版本的 Recipe 使用。这样,当 chef-client 在某个节点上运行时,可能会导致一些错误。

所以我正在考虑在本地编辑加密数据包,没有 Chef 服务器,然后将新版本的它与新版本的 Recipe 一起上传(测试通过后)。所以这是我现在用来编辑加密数据包的 rake 任务。

namespace 'databag' do
desc 'Edit encrypted databag item.'
task :edit, [:databag, :item, :secret_file] do |t, args|
args.with_defaults :secret_file => "#{ENV['HOME']}/.chef/encrypted_data_bag_secret"
secret = Chef::EncryptedDataBagItem.load_secret args.secret_file
item_file = "data_bags/#{args.databag}/#{args.item}.json"
tmp_item_file = "/tmp/#{args.databag}_#{args.item}.json"
begin
#decrypt data bag into tmp file
raw_hash = Chef::JSONCompat.from_json IO.read item_file
databag_item = Chef::EncryptedDataBagItem.new raw_hash, secret
IO.write tmp_item_file, Chef::JSONCompat.to_json_pretty( databag_item.to_hash )
#edit tmp file
sh "#{ENV['EDITOR']} #{tmp_item_file}"
#encrypt tmp file data bag into original file
raw_hash = Chef::JSONCompat.from_json IO.read tmp_item_file
databag_item = Chef::EncryptedDataBagItem.encrypt_data_bag_item raw_hash, secret
IO.write item_file, Chef::JSONCompat.to_json_pretty( databag_item )
ensure
::File.delete tmp_item_file #ensure tmp file deleted.
end
end
end

现在编辑我使用的加密数据包:
rake databag:edit[my_databag,item_in_databag]

关于chef-infra - 数据包加密在 Chef 服务器上加密,但如何加密本地副本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13849741/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com