Chef - 在编译时创建测试数据包

时间:2015-06-29 21:32:19

标签: ruby encryption chef test-kitchen

在我的厨师食谱中,我基本上是在解密几个数据包:

1. test.json 2. sample.json

解密后获得的数据将用于在我的厨房节点上创建文件。基本上,test.jsonsample.json使用我拥有的密钥进行加密(test.json是从test.txt获得的,sample.json是从sample.txt获得的是一个明文文件),在一个名为gendatabags.rb的脚本中创建这些文件并将它们放在各自的位置。请注意,gendatabags.rbsecret key pathinput file path作为输入参数。现在我想集成测试这个流程,我期待使用我生成的测试密钥。我想提供包含一些虚拟字符串的test.txtsample.txt的测试版本。问题是,现在我想在我的食谱compile time期间自动运行此脚本。有人可以提供一些如何实现这一目标的信息吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

强烈建议不要这样做。从技术上讲,您可以使用执行资源执行此操作,但是您会遇到各种时序问题,并且无论如何都会破坏加密数据包的目的。

现在,如果你正在尝试测试一个简单的虚拟加密数据库。您可以像往常一样制作数据包但添加-z开关

knife data bag create <data bag name> -z
knife data bag from file <data bag name> <path to .json file> --secret-file <path to encryption key file> -z

这将创建一个带有数据包名称的本地目录,并将加密的数据包项放在其中,其名称为&#34; id&#34; json文件的值。

-z默认将数据包和项目放在/ users // data_bags

从那里你可以编辑你的.kitchen.yml以指向你的数据包和秘密密钥

Suites:
  - name: default
  run_list:
  data_bags_path: <path to data_bags dir>
  encrypted_data_bag_secret_key_path: <path to secret_file>

如果您有多个套件使用相同的data_bags路径,则可以将声明移至

provisioner:
  name: chef_zero
  data_bags_path: <path to data_bags dir>
  encrypted_data_bag_secret_key_path: <path to secret_file>

希望这有帮助。