puppet:master没有连接到节点

时间:2015-12-03 09:42:41

标签: puppet

我创建了两个新的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个端口 - 这是否适用于木偶?

1 个答案:

答案 0 :(得分:3)

这些错误消息......

Error: Could not request certificate: getaddrinfo: Name or service not known
Exiting; failed to retrieve certificate and waitforcert is disabled

...表示客户端无法解析主人的姓名。这可能是因为在puppet.conf中配置了错误的服务器名称,或者因为您的名称服务配置错误。主人如何已经接受了来自代理人的证书请求尚不清楚,但可能性包括:

  • 自颁发证书请求以来,代理的配置文件已被修改,或
  • 自发出证书请求以来,名称服务的某些内容已发生变化,或
  • 另一个客户端使用相同的名称发出了cert请求。
  

其他问题:我在虚拟网络中拥有主节点和节点(使用MS Azure),我只想为我的节点打开80/443端口,而我的主节点只打开22个端口 - 这是否适用于木偶?

主服务器不会尝试与标准Puppet服务建立与代理的连接,因此节点不需要为其侧面的传入流量打开任何特定端口。他们只需要允许与他们发起的连接相关的入站流量,这是一种非常正常的防火墙配置。

另一方面,代理需要建立与主服务器的连接,这需要主服务器上的开放端口; Puppet默认使用端口8140 / tcp。尽管Puppet端口是可配置的,但如果您希望该端口满足其标准用途(sshd),则无法使用端口22。然而,木偶港口不需要对整个世界开放;原则上,它只能被限制在那些被允许请求目录的机器上。