我目前正在考虑使用salt为我们的一些项目存储库配置开发虚拟盒。我假设我们将在某个阶段设置一个salt-master服务器,因为我们可能也想使用salt来配置部署盒。
但是我很难理解如何处理minion键 - 假设我有一个项目仓库MyRepo
这是一个简单的Web服务,我希望能够vagrant up
并拥有在当地快速运行。
现在,我在网上发现的大多数资源都说我应该进入我的salt-master服务器,运行salt-key --gen-keys=my-repo
来生成密钥,然后将它们与minion.conf
一起复制到我的项目仓库中,所以结构类似于: -
|--MyRepo/
|-- salt/
|-- minion.conf
|-- keys/
|-- my-repo-pem
|-- my-repo.pub
很好,除了现在我的存储库包含密钥,我们的一些东西可能是开源的,所以使用这个系统要么我们维护两个repos(愚蠢),要么将密钥提交到repo(愚蠢?)。
我接下来提出的想法不是为每个项目制作minion键,而是让每个开发者在他们的名字下创建他们自己的minion键,例如ptinkler
,然后scp
将他们发送到home_dir
文件夹或类似文件夹下的本地.salt/
,可能会将其重命名为minion.pem
和minion.pub
进程,以便可以在VagrantFile
中引用它们 -
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仓库,开发人员只需将该仓库拉下来,然后在需要时将正确的文件夹符号链接到项目仓库中。这似乎有点奇怪。这也意味着在任何开源项目中,如果他们想要使用Vagrant来快速运行,那么撤销回购的人无论如何都不能使用salt进行配置。
我基本上处于一个十字路口,我是否会停止尝试使用salt-master而只是将我们的回购设置为无主(我不知道这将如何影响部署的难度)他们用盐?)或是否有办法配置它以让每个人都开心。
答案 0 :(得分:0)
如果您的用例是使用SaltStack来配置本地Vagrant客户,我建议您在无主模式下运行Salt以进行配置。如果没有访问您的盐主人,第三方如何使用您的存储库?如果主人不在他的机器本地,开发人员将如何测试不同版本的盐状态?
您可以拥有一个多机器流浪者环境并运行专用的盐主机。但是你应该瞄准的是让你的开发环境尽可能地包含在内 - 这与"The Tao of Vagrant."
一致使用用于master / minion部署的salt状态并使其适应无主的Vagrant设置应该不会太困难。我建议你走那条路。开始沿着这条道路前进的两个坚实资源 -