我是傀儡的新人。首先我安装并配置了木偶。 如果我在我的主人身上检查我的证书:
+ "puppet" (SHA256) FB:57:B2:B7:18:99:0F:15:DB:F0:E1:E8:12:31:99:75:BF:05:46:8D:78:A9:C4:DD:68:9E:A4:xxx (alt names: "DNS:puppet", "DNS:puppetmaster.example.com")
+ "puppetclient.example.com" (SHA256) 64:4F:0C:B2:EA:53:6B:2D:E3:5B:11:DB:80:E3:DF:AD:A6:AF:B5:B9:DB:05:6F:79:5D:E5:8Exxx
我尝试应用一些site.pp. 这是我的init.pp
class apache2 {
package { 'apache2':
ensure => installed,
}
service { 'apache2':
ensure => true,
enable => true,
require => Package['apache2'],
}
}
这是我的site.pp
node 'puppetclient.example.com' {
include apache2
}
我尝试:
sudo puppet apply site.pp
我收到以下错误
Error: Could not find default node or by name with 'puppet, puppet.example.com, puppet.example' on node puppet
Error: Could not find default node or by name with 'puppet, puppet.example.com, puppet.example' on node puppet
它似乎试图在不存在的主机上执行我的.pp(可能是默认的主机名)。我究竟做错了什么。我希望它能在puppetclient.example.com
上执行。
由于
答案 0 :(得分:1)
您的评论中的错误和主机名意味着您在错误的主机上使用apply命令,即主服务器而不是远程客户端。
如果要在不同主机上执行命令,那么需要在远程客户端上安装puppet agent并在客户端上运行命令puppet-master(服务器)。即sudo puppet agent -t
这将需要配置代理。
Puppet使用来自facter的数据来确定节点名称。并且从实际主机名,/ etc / hosts以及/ etc / sysconfig / network以及其他信息填充facter数据。您可以在Puppets facter page上了解更多相关信息。
检查主机名的简便方法是运行hostname
命令或facter hostname
或facter fqdn
Bellow是Puppet如何检查official website:
中的节点名称给定节点仅获取一个节点定义的内容,即使两个节点语句可以匹配节点的名称。在决定使用哪个定义时,Puppet将按顺序执行以下检查:
如果存在具有节点确切名称的节点定义,Puppet将使用它。
如果存在与节点名称匹配的正则表达式节点语句,Puppet将使用它。 (如果多个正则表达式节点匹配,Puppet将使用其中一个,但不保证哪个。) 如果节点的名称看起来像一个完全限定的域名(即多个以句点分隔的字母,数字,下划线和破折号组),Puppet将切断最后一组并在步骤1重新开始。(即,如果定义为找不到www01.example.com,Puppet将寻找与www01.example匹配的定义。) Puppet将使用默认节点。
因此,对于节点www01.example.com,Puppet将按顺序尝试以下操作:
- www01.example.com - 与www01.example.com匹配的正则表达式
- www01.example - 与www01.example匹配的正则表达式
- www01 - 与www01
匹配的正则表达式- 默认
P.S。 如果您打算降级,请务必提供理由。
答案 1 :(得分:0)
命令puppet apply
用于从本地清单文件和数据构建目录并将其应用于本地计算机。您正在主服务器上运行它,并且您的站点清单未提供可与该计算机匹配的节点块,因此Puppet会出错。如果您要使用puppet apply
,则必须安排所需的清单和数据出现在您要配置的计算机上,并且必须在那里运行puppet apply
。< / p>
如果要使用主/代理配置,则必须在某个指定的计算机上运行主服务或puppetserver服务,并且所有清单和数据必须驻留在那里。其他计算机不需要具有清单或数据,它们通过运行puppet agent
(本地)而不是puppet apply
来配置自己。代理程序通常作为守护程序运行,但它也可以在一次性模式下运行,许多人使用该模式在单独的调度程序(例如cron
)的控制下运行它。
显然,如果没有远程机器的某种形式的合作,你不能仅仅通过在主机上运行命令来配置远程机器 - 既不是Puppet也不是你可能想象的任何其他系统。你也不希望你的机器容易受到这种不受限制的遥控器的影响。
如果您正在寻找真正的遥控器,那么您可以考虑使用Puppet的“MCollective”产品。它需要来自要控制的机器的协作,就像Puppet一样,但它提供了 ad hoc 和按需控制,Puppet不这样做。在许多其他方面,您可以使用它来按需远程运行puppet agent
。