我需要为同一主机编写多个 site.pp 文件。它给出了以下错误
Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Node 'default' is already defined at line 2; cannot redefine at line 2 on node node-002.example.com
例如 :
我的第一次site.pp
vi hosts-site.pp
default{
}
node "node-002.example.com" {
## Rules here to update /etc/hosts
}
接下来Site.pp
使用相同的节点但不同的操作。
vi fstab-site.pp
default{
}
node "node-002.example.com" {
## Rules here to update /etc/fstab
}
如何实现相同的功能。我们需要为相同的节点编写多个操作,为此我们需要维护不同的 site.pp
答案1
Puppet 不应该有多个 site.pp
如果你的目标是手动应用你的某个配置,你可以使用 --tags 选项。顺便说一句,你应该将你的代理配置为无操作因此当您不需要时它就不会应用您的更改。
因此你可以拥有如下的 site.pp:
node "node-002.example.com" {
class {'hosts_configuration'}
class {'fstab_configuration'}
}
其中hosts_configuration
和fstab_configuration
是配置您想要的模块。
然后,当你想应用主机配置时,你可以在 node-002 上使用
puppet agent -t --tags=hosts_configuration
它将应用主机所需的配置。
如果您确实想要拥有多个 site.pp,您可以使用环境来执行此操作:
https://docs.puppet.com/puppet/4.10/environments.html#about-environments