Puppet apply:Could 找不到名称为 'default' 或 'puppetserver.example.com 的节点语句
Puppet apply:Could not find node statement with name 'default' or 'puppetserver.example.com
/etc/puppetlabs/puppet/puppet.conf:
[master]
vardir = /opt/puppetlabs/server/data/puppetserver
logdir = /var/log/puppetlabs/puppetserver
rundir = /var/run/puppetlabs/puppetserver
pidfile = /var/run/puppetlabs/puppetserver/puppetserver.pid
icodedir = /etc/puppetlabs/code
dns_alt_names=puppetserver.example.com,puppetmaster,puppet
#environmenpath = /etc/puppet/environments
#basemodulepath = /etc/puppet/environments/production/modules:/opt/puppetlabs/puppet/modules
[main]
certname = puppetserver.example.com
server = puppetserver.example.com
environment = production
runinterval = 5s
/etc/puppetlabs/code/environments/production/manifests/site.pp:
node 'windows.example.com' {
$iis_features = ['Web-WebServer','Web-Scripting-Tools']
iis_feature { $iis_features:
ensure => 'present',
}
}
我是 Puppet 的新手,遵循了这个指南:https://www.howtoforge.com/tutorial/centos-puppet-master-and-agent/
puppet agent --test 工作正常(已安装 IIS)
但是当尝试应用 site.pp(在 Puppet 服务器上)时,我得到
Error: Could not find node statement with name 'default' or 'puppetserver.example.com, puppetserver.example, puppetserver, localhost' on node puppetserver.example.com
谁能解释一下问题出在哪里?
应用目录或主清单时,需要与客户端证书匹配的节点定义。在这种情况下,您的 Puppet Master 的匹配节点定义为:
puppetserver.example.com, puppetserver.example, puppetserver, localhost
其中 和 none 列在您的节点定义中。请注意,您还可以将 default
的节点定义放在节点定义的末尾,以 "catch" 之前未定义的任何节点。可以在 here.
中找到主清单中节点定义的文档
要解决此问题,您只需为 Puppet 服务器添加节点定义即可。由于您是在服务器上执行 puppet apply
,清单正在本地应用。
node 'windows.example.com' {
$iis_features = ['Web-WebServer','Web-Scripting-Tools']
iis_feature { $iis_features:
ensure => 'present',
}
}
node 'puppetserver.example.com' {
notify { 'this is the puppet master': }
}
node default {
notify { 'this node did not match any of the listed definitions': }
}
请注意,如果您在 Puppet Master 上执行 puppet agent -t
,您也会观察到遇到的错误。此行为并非 puppet apply
.
独有
使用 puppet config print manifest
找出 puppetserver 上加载了哪些文件。如果manifest
points to directory目录下所有文件按字母顺序解析。
$ puppet config print manifest --section server --environment production
/etc/puppetlabs/code/environments/production/manifests
在你的情况下,puppetserver 可能会在 site.pp
中查找定义
/etc/puppetlabs/code/environments/production/manifests/site.pp
如果您不覆盖 puppet.conf
中的主机名,则应将其设置为
puppet config print --section agent certname
那么 certname
应该只匹配一个节点定义:
node /^www\d+$/ {
include common
}
node 'example.com', 'example.com', 'example.com' {
}
/etc/puppetlabs/puppet/puppet.conf:
[master]
vardir = /opt/puppetlabs/server/data/puppetserver
logdir = /var/log/puppetlabs/puppetserver
rundir = /var/run/puppetlabs/puppetserver
pidfile = /var/run/puppetlabs/puppetserver/puppetserver.pid
icodedir = /etc/puppetlabs/code
dns_alt_names=puppetserver.example.com,puppetmaster,puppet
#environmenpath = /etc/puppet/environments
#basemodulepath = /etc/puppet/environments/production/modules:/opt/puppetlabs/puppet/modules
[main]
certname = puppetserver.example.com
server = puppetserver.example.com
environment = production
runinterval = 5s
/etc/puppetlabs/code/environments/production/manifests/site.pp:
node 'windows.example.com' {
$iis_features = ['Web-WebServer','Web-Scripting-Tools']
iis_feature { $iis_features:
ensure => 'present',
}
}
我是 Puppet 的新手,遵循了这个指南:https://www.howtoforge.com/tutorial/centos-puppet-master-and-agent/
puppet agent --test 工作正常(已安装 IIS)
但是当尝试应用 site.pp(在 Puppet 服务器上)时,我得到
Error: Could not find node statement with name 'default' or 'puppetserver.example.com, puppetserver.example, puppetserver, localhost' on node puppetserver.example.com
谁能解释一下问题出在哪里?
应用目录或主清单时,需要与客户端证书匹配的节点定义。在这种情况下,您的 Puppet Master 的匹配节点定义为:
其中puppetserver.example.com, puppetserver.example, puppetserver, localhost
和 none 列在您的节点定义中。请注意,您还可以将 default
的节点定义放在节点定义的末尾,以 "catch" 之前未定义的任何节点。可以在 here.
要解决此问题,您只需为 Puppet 服务器添加节点定义即可。由于您是在服务器上执行 puppet apply
,清单正在本地应用。
node 'windows.example.com' {
$iis_features = ['Web-WebServer','Web-Scripting-Tools']
iis_feature { $iis_features:
ensure => 'present',
}
}
node 'puppetserver.example.com' {
notify { 'this is the puppet master': }
}
node default {
notify { 'this node did not match any of the listed definitions': }
}
请注意,如果您在 Puppet Master 上执行 puppet agent -t
,您也会观察到遇到的错误。此行为并非 puppet apply
.
使用 puppet config print manifest
找出 puppetserver 上加载了哪些文件。如果manifest
points to directory目录下所有文件按字母顺序解析。
$ puppet config print manifest --section server --environment production
/etc/puppetlabs/code/environments/production/manifests
在你的情况下,puppetserver 可能会在 site.pp
/etc/puppetlabs/code/environments/production/manifests/site.pp
如果您不覆盖 puppet.conf
中的主机名,则应将其设置为
puppet config print --section agent certname
那么 certname
应该只匹配一个节点定义:
node /^www\d+$/ {
include common
}
node 'example.com', 'example.com', 'example.com' {
}