我的目标是拥有一个或两个节点,以及一个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端口?错误说“连接被拒绝”,所以我认为这是一个防火墙问题 . 但是没有防火墙......
那么,我搞砸了哪里?
Here's my 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
My node bootstrap bash script:
#!/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
My master bootstrap bash script:
#!/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
请注意,我在主引导脚本中运行 puppet apply
命令 .
Edit 我可以获得两个vm 's communicating if I use :public_network and let my workplaces dhcp server assign the ip addresses. '课程,这不太理想,因为这意味着我不能只在私有的本地虚拟网络上使用192.x.x.x地址 . 我必须在运行任何木偶之前手动配置主机文件 . 但至少我知道这个问题与使用:private_network有关 .
Edit 2 我刚刚尝试使用puppetlabs /防火墙模块在puppetmaster vm的防火墙上强行打开8140,以防万一我以前检查过防火墙时遗漏了一些东西 . 那让我在那个vm上运行木偶代理 . 但是,当我尝试使用alpha vm时,它具有相同的连接拒绝错误 . 所以,我怀疑防火墙与它有什么关系 .
Edit 3 专用网络选项在VM上设置第二个NIC . 第一个NIC是NAT'd,第二个是获得我分配的静态IP .
Puppet正在监听两个NIC . (至少据我所知 . )
192.x.x.x ip地址对于这些VM是唯一的 . 该范围不会在其他任何地方使用 .
3 回答
在您的主机中查找
ifconfig
. 可能是ip 192.168.77.1是主机的地址,用于与VM进行专用联网 . 更改puppetmaster VM的ip,销毁它并将其删除 .我自己就是傀儡新手 . 几个小时前我刚碰过这个 .
连接被拒绝部分意味着代理无法找到您的木偶主人 . 这意味着以下几点之一:
它连接的服务器不正确 . 如果您认为这是问题,可以使用--server whatever.your.server.is强制它 .
Puppet master未在服务器上运行 . 如果您认为这是问题,可以尝试运行netstat -an | grep "LISTEN"在服务器上,看看你是否看到端口8140运行的东西 .
盒子之间存在一些连接问题,就像防火墙一样 . 尝试ping该框,或尝试使用"telnet whatever.your.server.is 8140"远程登录该端口 . 如果连接那不是问题 .
其中一个可能是它 .
直到我意识到我分配给主服务器的IP实际上已经被占用并且我一直试图连接到错误的机器时,我遇到了同样的问题 . 但你probalby检查过,对吧?