使用Chef和多个用户配置vagrant vm-如何处理*.pem文件?

使用Chef和多个用户配置vagrant vm-如何处理*.pem文件?,vagrant,chef-infra,Vagrant,Chef Infra,我有一个项目回购,我想与Vagrant为我们的软件团队设置。我有一个chef服务器,我很难理解如何编写VagrantFile,以便让软件团队的多个成员都能使用它 场景1:每个用户都在chef服务器上设置了一个用户 所以在vagrant文件中 config.vm.provision "chef_client" do |chef| chef.chef_server_url = "https://my-chef-server/" # best way to set this? pass it

我有一个项目回购,我想与Vagrant为我们的软件团队设置。我有一个chef服务器,我很难理解如何编写
VagrantFile
,以便让软件团队的多个成员都能使用它

场景1:每个用户都在chef服务器上设置了一个用户

所以在
vagrant文件中

config.vm.provision "chef_client" do |chef|
  chef.chef_server_url = "https://my-chef-server/"

  # best way to set this? pass it in as a variable? set it as an ENV variable?
  chef.validation_client_name = "users-name"   
  # users can have their .pem files on their local machine...
  chef.validation_key_path = "~/.chef/users-name.pem
end
场景2:对每个项目使用相同的用户名

config.vm.provision "chef_client" do |chef|
  chef.chef_server_url = "https://my-chef-server/"
  chef.validation_client_name = "the-project-name"

  # would this need to be committed to the project repo then?
  chef.validation_key_path = ".chef/users-name.pem
end
我也读过关于knife.rb文件的文章,但听起来它们好像被投入了回购协议,这似乎是一种非常奇怪的方式。A) 这仍然不支持多个用户,B)在回购协议中使用这些验证密钥安全吗?事实上,我在谷歌上找不到太多关于这一点的信息,这也让我相信我可能遗漏了一些显而易见的东西,因此任何方向都将受到赞赏。

选项1 使用测试厨房。我知道它叫测试厨房,但你不需要测试就可以使用它。它将自动为您使用您的本地knife.rb文件,因此无需像回购协议那样将秘密放在任何地方。额外的好处是,你可以使用任何一个kitchen插件来启动云提供商、docker等。我知道Vagrant也支持许多这样的选项,但我觉得kitchen让它更干净、更简单

选择2
将您的用户和密钥路径放入环境变量中,并引用vagrant文件中的变量。

您可能会得到与vagrant和chef的用户一样多的答案。。。Personnaly我确实在这种情况下使用Vagrant文件中的env vars。默认情况下,本地
刀.rb
文件位于
~/.chef/knife.rb
中,对吗?我想测试厨房就是在那里找的吧?因此,也许我可以在
VagrantFile
的开头读入该文件,并使用其中的值。我想我误解了。。。客户机都在本地签出chef repo,配置的VM使用其本地chef repo,而不是直接在github或类似平台上指向它。现在这更有意义了!