在 master 上执行 Puppet 运行命令

在 master 上执行 Puppet 运行命令

我正在尝试在 Puppet 中创建一个 letsencrypt 模块。基本上,我想实现以下目标:

  1. 添加新节点并导入我的模块:class { "letsencrypt": url => "example.com" }
  2. 然后,傀儡主机将检查他的文件夹中是否已经有给定 URL 的私钥和 CSR,然后执行以下操作之一:
    • 将私钥和 CSR 复制到节点,或者
    • 运行openssl openssl genrsa 4096 > example.com.key(以及 letsencrypt 帐户和证书签名请求的一个密钥),将其保存到 puppet 文件夹并再次运行步骤 2。
  3. 在节点上设置一个 cron 任务来运行乙酰辅酶每三个月一次。
  4. 在节点上运行一次 acme-tiny 并获取第一个证书并重新加载/启动 Web 服务器。

基本上,我的问题是如何在 Puppet Master 上运行命令。我想在 Puppet Master 上运行密钥生成,并在那里拥有私钥,并且只在节点上运行证书请求。

使用 Puppet 是否可行?或者我应该将整个过程完全传递给节点,而根本不在 Puppet 中跟踪任何内容(仅设置 cronjob 等)?

谢谢!

答案1

Puppet 提供了一个名为 的函数generate,它将使用任意本地命令的输出填充本地清单变量。它可用于调用执行密钥生成的自定义本地脚本,在本地安装公钥,并返回私钥内容,然后可以将其作为文件资源安装在 Puppet 代理上。例如:

file { "/path/to/private/key": ensure => present, content => generate("/path/to/my/custom/script"), ... }

相关内容