Virtualbox 为什么可以';我的傀儡代理在一个流浪的虚拟机上连接到我的傀儡主机服务在它的虚拟机上吗?

Virtualbox 为什么可以';我的傀儡代理在一个流浪的虚拟机上连接到我的傀儡主机服务在它的虚拟机上吗?,virtualbox,vagrant,puppet,Virtualbox,Vagrant,Puppet,我的目标是有一个或两个节点和一个木偶大师。我使用bash脚本为每个节点提供puppetlabs存储库,并安装最新版本的puppet和/或puppetmaster。但每次我尝试在节点上运行puppet代理--test,它都会返回以下错误: root@vm:~# puppet agent --test Error: Could not request certificate: Connection refused - connect(2) Exiting; failed to retrieve ce

我的目标是有一个或两个节点和一个木偶大师。我使用bash脚本为每个节点提供puppetlabs存储库,并安装最新版本的puppet和/或puppetmaster。但每次我尝试在节点上运行
puppet代理--test
,它都会返回以下错误:

root@vm:~# puppet agent --test
Error: Could not request certificate: Connection refused - connect(2)
Exiting; failed to retrieve certificate and waitforcert is disabled
  • 我已经确认木偶大师服务正在运行
  • 在主节点启动之前,我不会打开节点
  • 运行
    puppet cert list
    时,不会在puppetmaster上显示任何等待批准的证书
  • My/etc/hosts文件的ip地址和主机名配置正确
  • /etc/puppet/puppet.conf看起来不错
  • 我可以从主节点ping节点,反之亦然
  • iptables--list
    不显示防火墙规则
是不是流浪汉/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
#!/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
#!/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
我的节点引导bash脚本:

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
#!/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
#!/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
我的主引导bash脚本:

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
#!/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
#!/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_网络并让我的工作场所dhcp服务器分配ip地址,我可以让两个vm通信。”当然,这并不理想,因为这意味着我不能在私有的本地虚拟网络上使用192.x.x.x地址。在运行任何puppet之前,我必须手动配置主机文件。但至少我知道问题与使用:私有网络有关

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

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

木偶正在监听两个NIC的声音。(至少据我所知。)


192.x.x.x ip地址对于这些VM是唯一的。这个范围在其他任何地方都没有使用过。

我是个新玩偶。我几个小时前才碰到这个

连接被拒绝的部分意味着代理找不到你的傀儡主人。这意味着以下几件事之一:

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

  • 这三者之一可能就是它。

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

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

    我也有同样的问题,所以希望看到答案!目前正在使用puppet apply作为解决方案,直到我弄明白它…您最终解决了这个问题吗?我很想知道答案。请看下面的检查答案。我在发布此问题之前检查了这些内容。我没有特别提到netstat或telnet,但我提到了涵盖相同内容的测试。我检查过,ip范围没有在其他地方使用。直到米哈伊尔指出,我才意识到我的主人使用了木偶大师ip。。。