【问题标题】:Puppet apply:Could not find node statement with name 'default' or 'puppetserver.example.com木偶应用:找不到名称为“默认”或“puppetserver.example.com”的节点语句
【发布时间】:2018-10-30 14:00:52
【问题描述】:

/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


    【解决方案1】:

    当您应用目录或主清单时,需要与客户端证书匹配的节点定义。在这种情况下,您的 Puppet Master 的匹配节点定义将是:

    puppetserver.example.com、puppetserver.example、puppetserver、本地主机

    并且这些都没有在您的节点定义中列出。请注意,您还可以在节点定义的末尾放置 default 的节点定义,以“捕获”之前未定义的任何节点。可以在 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 独有。

    【讨论】:

      【解决方案2】:

      使用puppet config print manifest 来找出puppetserver 上加载了哪些文件。如果manifestpoints 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' {
      
      }
      
      
      
      

      【讨论】:

        猜你喜欢
        • 2018-12-14
        • 2016-10-17
        • 2015-04-16
        • 2015-03-31
        • 2023-04-08
        • 2020-07-11
        • 1970-01-01
        • 1970-01-01
        • 2013-07-02
        相关资源
        最近更新 更多