我有一个使用 Test-Kitchen v1.5.0、Vagrant v1.8.1 的环境设置。我有一个食谱,它使用 Chef vault 来解密我们在 data_bags_path/passwords/pilot.json 文件中的加密密码。
我在这里使用 daxgames 在页面末尾提供的解决方案https://github.com/chef/chef-vault/issues/58。
我的.kitchen.yml:
---
driver:
name: vagrant
provisioner:
name: chef_zero
require_chef_omnibus: 12.14.77
roles_path: ../../roles
environments_path: ../../environments
data_bags_path: ../../data_bags
client_rb:
environment: lgrid2-dev
node_name: "ltylapp400a"
client_key: "/etc/chef/ltylapp400a.pem"
platforms:
- name: centos-6.8
driver:
synced_folders:
- ["/Users/212466756/.chef", "/etc/chef", "disabled:false"]
suites:
- name: ltylapp400a
run_list:
- role[lgrid-db]
attributes:
chef_client:
我的食谱中涉及厨师保险库的片段:
case node["customer_conf"]["status"]
when 'pilot'
passwords = ChefVault::Item.load('passwords', 'pilot')
when 'production'
passwords = ChefVault::Item.load('passwords', node[:hostname][1..3])
end
我的相关data_bags目录结构:
data_bags
--passwords
--pilot.json
--pilot_keys.json
我得到的错误是我的 vagrant 在 /etc/chef/ltylapp400a.pem 生成的 client.pem 无法解密该数据包的内容。厨师建议我运行刀库刷新,我没有连接到我本地机器上的厨师服务器,所以如果我运行它,它会给出一个关于没有厨师服务器连接的错误。我的问题是如何将 vagrant 生成的新密钥添加到 Pilot_keys.json 中,以便它能够解密该 data_bag?
更详细的答案更好我对厨师,测试厨房等还是有点陌生......