【问题标题】:How to provision a VM using Vagrant, Chef and/or Puppet with machine specific SSL certificate?如何使用带有机器特定 SSL 证书的 Vagrant、Chef 和/或 Puppet 配置 VM?
【发布时间】:2019-09-14 21:11:05
【问题描述】:

我有一个要求,我想为多个虚拟机提供 Java 应用程序所需的机器特定 SSL 证书(使用机器的 IP/主机名生成)。

我可以提前创建这些带有一些名称的证书,例如 QA-Machine01Prod-Machine01 等,并且可以将它们保存在某个文件夹中。

如何让 Vagrant 动态选择这些证书,取其名称 (QA-Machine01, Prod-Machine01) 并将证书名称设置为机器名称的 VM?

【问题讨论】:

  • @RyPeck 您能否详细说明实际答案中缺少的内容?
  • 主要是希望提问者选择正确的答案。

标签: vagrant ssl-certificate chef-infra puppet


【解决方案1】:

Vagrant 文件是 ruby​​ 代码,因此如果您在一个目录中拥有所有证书,您可以从 Dir.glob 在您的 vagrant 文件中编写一个循环来生成 multimachine vagrantfile

例子:

mnames = Dir.glob("/my/cert/store/*.crt")

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  mname.each do |filename|
    hostname = File.basename(filename).gsub(File.extname(filename),'')

    config.vm.define hostname do |box|
      box.vm.hostname = "#{hostname}.my.domain"
      [.. any configuration you wish ...]
      box.vm.provision :chef_client do |chef|
        chef.add_recipe "my_recipe"
        [..chef conf for your case ...]
      end
    end
  end
end

然后您可以vagrant up 来创建和配置所有机器或调用vagrant up QA-Machine01 只为QA 机器。

【讨论】:

    【解决方案2】:

    你可以mount the certificates进入vagrant机器,使用hostname选择合适的。

    【讨论】:

    • 除非我错了,否则 OP 希望从证书创建 VM。
    • 我不这么认为@Tensibai,因为 OP 声明/我可以提前使用 QA-Machine01、Prod-Machine01 等名称创建这些证书,并可以将它们保存在某个文件夹中。/
    • 好吧,Op 现在有了我们的理解的两个方面;)(我更多的是在这句话上:“and provision VM with certificate name as Machine Name”)
    【解决方案3】:

    当您说您希望“Vagrant 动态选择这些证书”时,我不清楚您的意思。通常是厨师将使用这些证书(因为它将是安装 Web 服务器、ssl 代理或任何将使用证书的技术)。也不清楚操作环境是什么,但假设如果你要部署到 QA 和 prod,你有一个可用的 chef-server,我建议使用 chef-vault。

    在这种情况下,我们使用 data_bags,特别是 chef-vault data_bags 用于此目的。我们有一个名为 ssl-certificates 的保管库,其中的项目以每个包含的 SSL 证书的 CN 命名。项目的搜索查询仅用于限定对托管该 CN 的计算机的访问范围。

    因为 chef-vault 具有使用未加密的常规数据包的回退机制,所以它非常适合在维护安全凭证的开发/质量保证环境中使用,以及在维护您的保管的生产环境中使用SSL 私钥至关重要。

    【讨论】:

      猜你喜欢
      • 2014-01-30
      • 1970-01-01
      • 1970-01-01
      • 2012-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多