厨师 - 如何在Git中存储加密数据包?

时间:2017-07-10 20:17:57

标签: chef

我们使用Github将所有内容保存在源代码管理中,因此我们的本手册,环境和角色在本地工作,然后在适当的时候使用{ "Date":"2017-07-10", "AnotherProperty":"A string" } const knex = require('knex')({ client: 'pg' }) const builder = knex .count('t.* as count') // You actually can use string|function with this = knex builder|another knex builder .from(function () { // Your actual query goes here this .select('*') .from('users') .whereNull('some_condition', 'some_value') .as('t') // Alias for your DB (For example Postgres requires that inner query must have an alias) }) .first() console.log(builder.toString()) // Prints your query // => select count("t".*) from (select * from "users" where "removed_at" is null) as "t" limit 1 进行上传。我知道加密数据包是在服务器上加密的,但我们怎样才能在Git中加密它们?

2 个答案:

答案 0 :(得分:0)

你没有。加密数据包不适用于版本控制存储。

答案 1 :(得分:0)

我们也将加密的数据包保存在我们的存储库中,并使用from file将它们上传到Chef Server。为了在本地处理数据包,我们编写了一些rake任务。他们加密和解密数据包json文件。

namespace 'databag' do
  def decrypt_data_bag_item( json_file, secret_file, write=false )
    secret = Chef::EncryptedDataBagItem.load_secret secret_file
    raw_hash = Chef::JSONCompat.from_json IO.read json_file
    result = Chef::EncryptedDataBagItem.new( raw_hash, secret ).to_hash
    IO.write( json_file, Chef::JSONCompat.to_json_pretty( result ) ) if write
    result
  end

  def encrypt_data_bag_item( json_file, secret_file )
    secret = Chef::EncryptedDataBagItem.load_secret secret_file
    raw_hash = Chef::JSONCompat.from_json IO.read json_file
    databag_item = Chef::EncryptedDataBagItem.encrypt_data_bag_item raw_hash, secret
    IO.write json_file, Chef::JSONCompat.to_json_pretty( databag_item )
  end

  desc 'Decrypt encrypted data bag item inplace.'
  task :decrypt, [:item_file, :secret_file] do |t, args|
    args.with_defaults :secret_file => ".chef/encrypted_data_bag_secret"
    decrypt_data_bag_item( args.item_file, args.secret_file, true )
  end

  desc 'Encrypt databag item inplace.'
    task :encrypt, [:item_file, :secret_file] do |t, args|
    args.with_defaults :secret_file => ".chef/encrypted_data_bag_secret"
    encrypt_data_bag_item( args.item_file, args.secret_file )
  end
end

工作流程如下:

  • 解密数据包
  • 编辑
  • 加密
  • 提交并推送
  • 文件中的刀数据包......

您也可以在此问题中找到一些想法:Data bag encryption encrypts on Chef server, but how to encrypt local copy?