【发布时间】:2015-02-13 19:15:32
【问题描述】:
我目前正在研究使用 salt 为我们的一些项目存储库提供开发虚拟机。我假设我们将在某个阶段设置一个 salt-master 服务器,因为我们可能也希望使用 salt 来配置部署盒。
但是,我正在努力弄清楚如何处理 minion 密钥-假设我有一个项目 repo MyRepo 这是一个简单的 Web 服务,我希望能够 vagrant up 并在本地非常快速地运行.
现在,我在网上找到的大多数资源都说我应该进入我的 salt-master 服务器,运行 salt-key --gen-keys=my-repo 以生成密钥,然后将它们与 minion.conf 一起复制到我的项目 repo 中,所以结构是类似于:-
|--MyRepo/
|-- salt/
|-- minion.conf
|-- keys/
|-- my-repo-pem
|-- my-repo.pub
很好,除了现在我的存储库包含密钥,而且我们的一些东西可能是开源的,所以在这个系统中,我们要么维护两个 repos(愚蠢),要么将密钥提交到 repo(愚蠢?)。
我接下来想出的想法不是为每个项目制作 minion 密钥,而是让每个开发人员以他们的名字创建自己的 minion 密钥,例如ptinkler,然后将 scp 它们放到 .salt/ 文件夹或类似文件夹下的本地 home_dir,可能在此过程中将它们重命名为 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 使其快速运行,拉下 repo 的人无论如何都不能使用 salt 来配置。
关于我是否停止尝试使用 salt-master 并将我们的 repo 设置为无主控,我基本上处于一个十字路口(我不知道这将如何影响部署时的难度他们加盐?)或者是否有办法配置它来让每个人都开心。
【问题讨论】:
标签: vagrant salt-stack