使用 Chef 和多个用户预配流浪虚拟机 - 如何处理 *.pem 文件



我有一个项目存储库,我想为我们的软件团队与Vagrant一起设置。我有一个厨师服务器,我有点难以理解如何编写VagrantFile以便软件团队的多个成员可以使用它......

场景 1:每个用户在 chef-server 上设置了一个用户...

所以在VagrantFile.

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

使用测试厨房。 我知道它叫TEST-kitchen,但你不需要测试就可以使用它。 它会自动为您使用本地 knife.rb 文件,因此无需将机密放在存储库等任何地方。 额外的好处是,您可以使用任何厨房插件启动到云提供商、docker 等。 我知道Vagrant也支持其中的许多选择,但我觉得厨房使它更干净,更容易。

选项 2

将您的用户和key_path放入环境变量中,并在您的 Vagrantfile 中引用这些变量。

最新更新