傀儡在主上运行命令

我正在尝试在Puppet中创build一个letsencrypt模块。 基本上,我想实现的是以下几点:

  1. 添加一个新节点并导入我的模块: class { "letsencrypt": url => "example.com" }
  2. 然后,木偶大师将检查他的文件夹,如果已经有一个私人密钥和给定的URL的CSR,然后:
    • 将私钥和CSR复制到节点,或者
    • 运行openssl openssl genrsa 4096 > example.com.key (还有一个用于letsencrypt帐户和证书签名请求的密钥),将其保存到puppet文件夹并再次运行第2步。
  3. 在节点上设置一个cron作业,每三个月运行一次acme-tiny 。
  4. 在节点上运行一次acme-tiny并获取第一个证书并重新加载/启动Web服务器。

基本上我的问题是如何在木偶大师上运行命令。 我想在puppet master上运行密钥生成,并在那里有私钥,只有证书请求在节点上运行。

这是甚至可能与木偶? 或者我应该完整地将完整的过程传递给节点,而不是跟踪Puppet中的任何内容(只需设置cronjob等)?

谢谢!

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

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