Vagrant 用salt处理仆从钥匙+;流浪汉

Vagrant 用salt处理仆从钥匙+;流浪汉,vagrant,salt-stack,Vagrant,Salt Stack,我目前正在考虑使用salt为我们的一些项目存储库提供开发虚拟箱。我一直在假设我们将在某个阶段设置一个salt主服务器,因为我们可能也希望使用salt来配置部署箱 然而,我正在努力弄清楚如何处理仆从密钥——比方说,我有一个项目repoMyRepo,这是一个简单的Web服务,我希望能够vagrant up,并在本地快速运行 现在,我在网上找到的大多数资源都说,我应该进入我的salt主服务器,运行salt key--gen keys=my repo生成密钥,然后将它们与minion.conf一起复制到

我目前正在考虑使用salt为我们的一些项目存储库提供开发虚拟箱。我一直在假设我们将在某个阶段设置一个salt主服务器,因为我们可能也希望使用salt来配置部署箱

然而,我正在努力弄清楚如何处理仆从密钥——比方说,我有一个项目repo
MyRepo
,这是一个简单的Web服务,我希望能够
vagrant up
,并在本地快速运行

现在,我在网上找到的大多数资源都说,我应该进入我的salt主服务器,运行
salt key--gen keys=my repo
生成密钥,然后将它们与
minion.conf
一起复制到我的项目repo中,因此结构类似于:-

|--MyRepo/
   |-- salt/
      |-- minion.conf
      |-- keys/
         |-- my-repo-pem
         |-- my-repo.pub
好吧,不过现在我的存储库包含了密钥,我们的一些东西可能是开源的,所以在这个系统中,我们要么维护两个repo(愚蠢的),要么将密钥提交给repo(愚蠢的?)

接下来我想到的想法是,不要为每个项目制作仆从密钥,而是让每个开发人员在自己的名字下创建自己的仆从密钥,例如
pInkler
,然后
scp
将它们放在
.salt/
文件夹或类似文件夹下的本地
主页目录下,在此过程中,可能会将它们重命名为
minion.pem
minion.pub
,以便在
vagrant文件中引用它们-

home_dir = ENV['HOME']

config.vm.provision :salt do |salt|
  salt.verbose = true
  salt.minion_config = "#{home_dir}/.salt/minion.conf"
  salt.minion_key = "#{home_dir}/.salt/keys/minion.pem"
  salt.minion_pub = "#{home_dir}/.salt/keys/minion.pub"
  salt.run_highstate = true
end
好吧,不过有点草率,我不喜欢给它们重新命名

下一个想法是拥有一个包含所有项目密钥的私有git repo,开发人员只需下拉该repo,然后在需要时将正确的文件夹符号链接到项目repo中。这似乎也有点奇怪。这也意味着,在任何开源项目上,如果想使用Vagrant快速运行回购协议,那么撤销回购协议的人无论如何都不能使用salt来提供资金


我基本上处于一个十字路口,我是否停止尝试使用salt master,只是将我们的回购协议设置为无主(我不知道这将如何影响使用salt部署回购协议的难度?)或者是否有办法将其配置为让每个人都满意。

如果您的使用案例是使用SaltStack为本地流浪客提供服务,我建议您在无主人模式下运行Salt进行供应。否则,第三方将如何使用您的存储库而不访问您的salt master?如果主程序不是机器本地的,开发人员如何测试不同版本的salt状态

你可以有一个多机器的流浪环境,并运行一个专用的盐主机。但是,您的目标应该是尽可能地包含您的开发环境—这与

获取主/仆从部署所使用的salt状态并将其调整为在无主流浪设置中使用应该不会太困难。我建议你走那条路。在这条道路上有两个可靠的资源可以帮助您起步-

  • 从SaltStack文档中