7

我的目标是拥有一两个节点和一个 puppetmaster。我使用 bash 脚本为每个节点配置 puppetlabs 存储库并安装最新版本的 puppet 和/或 puppetmaster。但是每次我尝试puppet agent --test在节点上运行时,它都会返回此错误:

root@vm:~# puppet agent --test
Error: Could not request certificate: Connection refused - connect(2)
Exiting; failed to retrieve certificate and waitforcert is disabled
  • 我已经确认 puppetmaster 服务正在运行。
  • 在主服务器启动之前,我不会打开节点。
  • 运行puppet cert list显示没有等待 puppetmaster 批准的证书。
  • 我的 /etc/hosts 文件的 IP 地址和主机名配置正确。
  • /etc/puppet/puppet.conf 看起来不错。
  • 我可以从主节点 ping 节点,反之亦然。
  • iptables --list显示没有防火墙规则。

是不是 Vagrant/Virtualbox 不知道如何处理 8140 端口?错误说“连接被拒绝”,所以我认为这是防火墙问题。但是没有防火墙...

那么,我到底哪里搞砸了?

这是我的流浪文件:

Vagrant.configure("2") do |config|

  config.vm.define :puppetmaster do |puppetmaster|
    puppetmaster.vm.box = "ubuntu-server-12042-x64-vbox4210-nocm"
    puppetmaster.vm.box_url = "http://puppet-vagrant-boxes.puppetlabs.com/ubuntu-server-12042-x64-vbox4210-nocm.box"
    puppetmaster.vm.network :private_network, ip: "192.168.77.1"
    #puppetmaster.vm.network :forwarded_port, guest: 80, host: 20001
    #puppetmaster.vm.network :forwarded_port, guest: 443, host: 24431
    #puppetmaster.vm.network :forwarded_port, guest: 22, host: 20022
    puppetmaster.vm.hostname = "vm.puppetmaster.lab"
    puppetmaster.vm.provision :shell, :path => "master-bootstrap.sh"
    puppetmaster.vm.synced_folder "modules/", "/etc/puppet/modules"
    puppetmaster.vm.synced_folder "manifests/", "/etc/puppet/manifests"
  end

  config.vm.define :alpha do |alpha|
    alpha.vm.box = "ubuntu-server-12042-x64-vbox4210-nocm"
    alpha.vm.box_url = "http://puppet-vagrant-boxes.puppetlabs.com/ubuntu-server-12042-x64-vbox4210-nocm.box"
    alpha.vm.network :private_network, ip: "192.168.77.2"
    #alpha.vm.network :forwarded_port, guest: 22, host: 20023
    alpha.vm.hostname = "vm.alpha.lab"
    alpha.vm.provision :shell, :path => "alpha-bootstrap.sh"
  end


  config.vm.define :beta do |beta|
    beta.vm.box = "ubuntu-server-12042-x64-vbox4210-nocm"
    beta.vm.box_url = "http://puppet-vagrant-boxes.puppetlabs.com/ubuntu-server-12042-x64-vbox4210-nocm.box"
    beta.vm.network :private_network, ip: "192.168.77.3"
    #beta.vm.network :forwarded_port, guest: 22, host: 20024
    beta.vm.hostname = "vm.beta.lab"
    beta.vm.provision :shell, :path => "beta-bootstrap.sh"
  end
end

我的节点引导 bash 脚本:

#!/usr/bin/env bash

wget http://apt.puppetlabs.com/puppetlabs-release-precise.deb
dpkg -i puppetlabs-release-precise.deb
apt-get update
#apt-get -y dist-upgrade
apt-get -y install puppet

echo '192.168.77.1 vm.puppetmaster.lab' >> /etc/hosts

echo '[agent]' >> /etc/puppet/puppet.conf
echo 'server=vm.puppetmaster.lab' >> /etc/puppet/puppet.conf
echo 'certname=vm.alpha.lab' >> /etc/puppet/puppet.conf

我的主引导 bash 脚本:

#!/usr/bin/env bash

wget http://apt.puppetlabs.com/puppetlabs-release-precise.deb
dpkg -i puppetlabs-release-precise.deb
apt-get update
#apt-get -y dist-upgrade
apt-get -y install puppet
puppet apply /etc/puppet/manifests/default.pp

请注意,我正在使用来自 Pro Puppet 的稍微修改的 puppet 模块来配置/安装 puppet/puppetmaster。这就是我puppet apply在主引导脚本中运行命令的原因。

编辑 如果我使用 :public_network 并让我的工作场所 dhcp 服务器分配 IP 地址,我可以让两个 vm 进行通信。'当然,这并不理想,因为这意味着我不能只在私有的本地虚拟网络上使用 192.xxx 地址。在运行任何 puppet 内容之前,我必须手动配置主机文件。但至少我知道这个问题与使用 :private_network 有关。

编辑 2 我刚刚尝试使用 puppetlabs/firewall 模块在 puppetmaster vm 的防火墙上强制打开 8140,以防我之前检查防火墙时遗漏了一些东西。这让我可以在那个 vm 上运行 puppet 代理。但是当我在 alpha vm 上尝试时,它有同样的连接被拒绝错误。所以,我怀疑防火墙与它有什么关系。

编辑 3 专用网络选项在 VM 上设置第二个 NIC。第一个 NIC 是经过 NAT 的,第二个是我分配的静态 IP。

Puppet 正在监听两个 NIC。(至少据我所知。)

192.xxx ip 地址对于这些虚拟机来说是唯一的。该范围不在其他任何地方使用。

4

3 回答 3

2

ifconfig在您的主机中查找。可能是 ip 192.168.77.1 是您的主机地址,用于与 VM 进行私有网络。更改 puppetmaster 虚拟机的 ip,将其销毁并升级。

于 2013-06-04T02:46:30.330 回答
1

我是全新的木偶自己。几个小时前我刚刚遇到了这个。

连接被拒绝部分意味着代理找不到您的 puppet master。这意味着以下几件事之一:

  1. 它连接的服务器不正确。如果您认为这是问题所在,您可以使用 --server whatever.your.server.is 强制它。
  2. Puppet Master 未在服务器上运行。如果您认为这是问题所在,可以尝试运行 netstat -an | 在服务器上 grep "LISTEN" 看看你是否看到端口 8140 正在运行某些东西。
  3. 盒子之间存在一些连接问题,比如防火墙。尝试 ping 盒子,或尝试使用“telnet 不管什么.your.server.is 8140”远程登录到该端口。如果它连接,那不是问题。

这三个可能是其中之一。

于 2013-05-29T15:22:28.740 回答
0

在我意识到我分配给主服务器的 IP 实际上已经被占用并且我一直试图连接到错误的机器之前,我遇到了同样的问题。但你可能已经检查过了,对吧?

于 2013-06-04T09:18:21.207 回答