2017-08-18 133 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

相關問題