【问题标题】:Handling minion keys with salt + vagrant用 salt + vagrant 处理 minion 键
【发布时间】: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.pemminion.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


    【解决方案1】:

    如果您的用例是使用 SaltStack 来配置本地 Vagrant 访客,我建议您在无主模式下运行 Salt 来进行配置。如果第三方无法访问您的 salt master,如何使用您的存储库?如果 master 不在他的机器本地,开发人员将如何测试不同版本的 salt states?

    您可以拥有一个多机 vagrant 环境并运行专用的 salt-master 机器。但是您应该追求的目标是让您的开发环境尽可能包含在内 - 这与"The Tao of Vagrant."

    获取用于主/从部署的盐状态并调整它们以在无主的 Vagrant 设置中使用应该不会太难。我建议你走这条路。开始这条道路的两个可靠资源 -

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-09
      • 1970-01-01
      • 1970-01-01
      • 2017-11-13
      • 2023-01-26
      • 1970-01-01
      • 2016-11-14
      • 1970-01-01
      相关资源
      最近更新 更多