为什么我的流浪者vm上的木偶代理不能连接到我的vm上的puppetmaster服务?

时间:2013-05-28 20:38:40

标签: virtualbox vagrant puppet

我的目标是拥有一个或两个节点,以及一个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端口?错误说“连接被拒绝”,所以我认为这是一个防火墙问题。但是没有防火墙......

那么,我在哪里搞砸了?

这是我的Vagrantfile:

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

我的节点bootstrap 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 / puppetmaster。这就是我在主引导脚本中运行puppet apply命令的原因。

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

编辑2 我只是尝试使用puppetlabs /防火墙模块在puppetmaster vm的防火墙上强行打开8140,以防万一我之前检查过防火墙时有些东西丢失了。那让我在那个vm上运行木偶代理。但是,当我尝试使用alpha vm时,它具有相同的连接拒绝错误。所以,我怀疑防火墙与它有什么关系。

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

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

192.x.x.x ip地址对于这些VM是唯一的。该范围不会在其他任何地方使用。

3 个答案:

答案 0 :(得分:2)

在您的主机中查找ifconfig。可能是ip 192.168.77.1是主机的地址,用于与VM进行专用联网。更改puppetmaster VM的ip,销毁它并将其删除。

答案 1 :(得分:1)

我自己是傀儡的新手。几个小时前我刚碰过这个。

连接拒绝部分表示代理无法找到您的木偶主人。这意味着以下几点之一:

  1. 它连接的服务器不正确。如果您认为这是问题,可以使用--server whatever.your.server.is强制它。
  2. Puppet master未在服务器上运行。如果您认为这是问题,可以尝试运行netstat -an | grep“LISTEN”在服务器上,看看你是否看到8140端口正在运行。
  3. 盒子之间存在一些连接问题,就像防火墙一样。尝试ping该框,或尝试使用“telnet whatever.your.server.is 8140”远程登录到该端口。如果连接不是问题。
  4. 这三个中的一个可能是它。

答案 2 :(得分:0)

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