Puppet - 包括另一个文件

Puppet - including another file

有没有办法将一个 Puppet 文件插入到其他 Puppet 文件中?

我们确实有很多服务器具有由 Puppet 管理的 SSH 密钥定义,我希望为所有 SSH 密钥定义创建一个单独的文件。主要目标是只更新少数地方的键定义,而不是我们所有的服务器定义。

非常感谢

使用 class - 它是一个资源容器(例如您的 SSH 密钥资源),您可以使用一行将其添加到节点或从其他 classes。当你添加它时,该节点将获取其中的所有资源。

class sshkeys {
  ssh_authorized_key { 'foo@example.com':
    ensure => present,
    user   => 'foo',
    type   => 'ssh-rsa',
    key    => 'AAAAB3Nza[...]qXfdaQ==',
  }

  ssh_authorized_key { 'bar@example.com':
    # more...
  }
}

然后在您的 node 块中,使用 include:

node foo.example.com {
  include sshkeys
}

class 定义可以在 manifests 目录中的同一个文件或另一个文件中,或者最好您可以开始将它们放入 a module layout,即 /etc/puppetlabs/puppet/environments/production/sshkeys/manifests/init.pp,Puppet 将自动在其中加载它。模块帮助您封装功能,因为您可以将文件、模板和更具体的清单和 classes 存储在一起。