2017-08-18 86 views
1

所以在我的食谱我有测试厨师配方如下:如何使用加密的数据包

secret = Chef::EncryptedDataBagItem.load_secret("/root/.chef/encrypted_data_bag_secret") 

# Decrypt the data bag 
creds = Chef::EncryptedDataBagItem.load("passwords", "mysql-root", secret) 

我如何可以覆盖这些线,我的测试数据?该配方安装一个MySQL数据库,因此,我想测试数据库的存在。

回答

0

我已创建单独的数据包进行测试与所需的秘密,并加载它们,如果它的测试厨房跑

+0

我第一次进入测试厨房和厨师...你实际上使用的价值,你会在刺激?例如,我在数据包中为MySQL安装设置了一个root密码。这会在配方中设置,但在测试期间厨房我的测试失败,如果我没有正确的密码。因此,我需要从加密的数据包中引用密码。 – luckytaxi

+0

为什么不设置一个不同的测试密码/ acc为测试env ...我建立当地的厨房vm ...所以我有不同的秘密wrt prod – OK999

+0

好吧,配方引用了一个root密码,使用加密的数据包。不会测试厨房运行并需要密码?但我认为你所暗示的是我可以从一个不同的数据包中读取所有配方? – luckytaxi

0

最好的办法是不使用加密的包在所有的测试,改变你的代码以使用data_bag_item()帮手,而不是基础类,它将与两者一起工作。然后只需在test/integration/data_bags/(或在您的配置中设置data_bags_path从其他地方加载)放置一些正常的数据包夹具。

+0

第一次我看到对'data_bag_item()'的引用......在我的正常配方或我的测试规格文件中使用它? – luckytaxi

+0

食谱,https://docs.chef.io/data_bags.html#with-recipes涵盖DSL。 – coderanger

相关问题