我创建了两个新的VM:一个用于puppet-master(sbe-puppet),另一个用于我的节点(sbe1)。
在我的主人身上,我有一个文件testdefine.pp
,内容如下:
class testdefine {
define testdefine ($data) {
file {"$title":
ensure => file,
content => $data,
}
}
testdefine {'/var/tmp/puppetfile1':
data => "The name of the file is puppetfile1 and it is created by puppet\$
}
testdefine {'/var/tmp/puppetfile2':
data => "The name of the file is puppetfile2 and it is created by puppet\$
}
testdefine {'/var/tmp/puppetfile3':
data => "The name of the file is puppetfile3 and it is created by puppet\$
}
}
以及包含此内容的文件node.pp
:
import "testdefine"
node 'sbe-puppet.mydomain.net'{
include testdefine
}
node 'sbe1.mydomain.net' {
include testdefine
}
运行sudo puppet apply node.pp
(没有错误)后,这3个测试文件只存在于我的主人身上,但不会出现在我的节点上。
sudo puppet cert list -all
使用+
列出我的节点。
puppet agent --configprint server
(在我的节点上)显示我的主人的正确DNS名称。
但是当我在我的节点上运行$ puppet agent --test
时,我得到了:
Error: Could not request certificate: getaddrinfo: Name or service not known
Exiting; failed to retrieve certificate and waitforcert is disabled
我不知道这里有什么问题,因为我的主人已经接受了节点证书请求?!
任何人都可以帮助让这个简单的" hello world" -configuration工作吗?
其他问题: 我在虚拟网络中拥有主节点和节点(使用MS Azure),我只想为我的节点打开80/443端口,而我的主节点只打开22个端口 - 这是否适用于木偶?
答案 0 :(得分:3)
这些错误消息......
Error: Could not request certificate: getaddrinfo: Name or service not known Exiting; failed to retrieve certificate and waitforcert is disabled
...表示客户端无法解析主人的姓名。这可能是因为在puppet.conf
中配置了错误的服务器名称,或者因为您的名称服务配置错误。主人如何已经接受了来自代理人的证书请求尚不清楚,但可能性包括:
其他问题:我在虚拟网络中拥有主节点和节点(使用MS Azure),我只想为我的节点打开80/443端口,而我的主节点只打开22个端口 - 这是否适用于木偶?
主服务器不会尝试与标准Puppet服务建立与代理的连接,因此节点不需要为其侧面的传入流量打开任何特定端口。他们只需要允许与他们发起的连接相关的入站流量,这是一种非常正常的防火墙配置。
另一方面,代理做需要建立与主服务器的连接,这需要主服务器上的开放端口; Puppet默认使用端口8140 / tcp。尽管Puppet端口是可配置的,但如果您希望该端口满足其标准用途(sshd
),则无法使用端口22。然而,木偶港口不需要对整个世界开放;原则上,它只能被限制在那些被允许请求目录的机器上。