有没有办法将一个Puppet文件插入到其他Puppet文件中?
我们确实有很多服务器使用由Puppet管理的SSH密钥定义,我想为所有SSH密钥定义提供类似于单独文件的内容。主要目标是仅在几个地方更新密钥定义,而不是我们所有的服务器定义。
非常感谢
答案 0 :(得分:1)
使用class - 它是资源的容器(如SSH密钥资源),您可以将其添加到节点或使用单行添加到其他类中。当您添加它时,该节点将获取其中的所有资源。
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
}
类定义可以位于清单目录中的相同文件或另一个文件中,或者最好是可以开始将它们放入a module layout,即/etc/puppetlabs/puppet/environments/production/sshkeys/manifests/init.pp
,Puppet会自动加载它。模块可以帮助您封装功能,因为您可以将文件,模板和更具体的清单和类存储在一起。