puppet是一种Linux、Unix平台的集中配置管理系统,使用自有的puppet描述语言,可管理配置文件、用户、cron任务、软件包、系统服务等。Puppet master定义了所有的结点(node)类型,每台机器或虚拟机是一个结点,当结点上的puppet client与puppet master通信时,就会获取自己所属的结点类型应该进行的操作,并在本机执行。
Puppet master必须安装在*nix机器上,本文使用Ubuntu搭建master,而client端搭在windows7上。
1.安装ruby:因为puppet的底层是用ruby实现的,所以master和client都要安装ruby。
sudo apt-get -y install irb libopenssl-ruby libreadline-ruby rdoc ri ruby ruby-dev git-core
从http://rubygems.org/pages/download下载最新的tgz包,
tar -xzf rubygems-2.2.4.tgz
cd rubygems-2.2.4
ruby setup.rb
2.安装puppet server:
wget https://apt.puppetlabs.com/puppetlabs-release-precise.deb
sudo dpkg -i puppetlabs-release-precise.deb
sudo apt-get update
sudo apt-get install puppetmaster
3.更新到最新版本
sudo apt-get update
sudo puppet resource package puppet ensure=latest
sudo /etc/init.d/puppetmaster restart重启puppet service
在windows7上安装puppet client比较简单,只要先后安装ruby和puppet就可以了,需要注意的是,安装puppet时会有个安装界面要求填写puppet master的机器名,缺省值是puppet,请将这个name换成puppet master的真实DNS名称。
下面是client和master建立通信:client会寻找指定的master,在第一次访问时向其发送证书,master签署接受证书,两端就建立了互信的通信通道,以后就不必再做证书认证了。这一步通常不会非常顺利,所以client和master最好都使用no-daemon模式,让应用程序在前台运行,这样可以清楚地看到问题和出错点在哪里。
client: stop widows service--puppet, run command "puppet agent -t"
master: sudo /etc/init.d/puppetmaster stop
sudo puppet master --verbose --no-daemonize
如果运行时出现错误:Error: Could not run: Address already in use - bind(2),运行“netstat -anpl | grep 8140”找到是哪个进程占用了8140端口,然后kill -9 pid终止该进程。
master启动后,启动client,这时在master上运行命令行:sudo puppet cert --list可以看到client端的请求证书,运行命令:sudo puppet cert --sign --all来签署并接受证书。
如果配置不成功,最常用的解决方法就是为client和master重新生成证书,这就需要先停止puppet service并将已有的证书删除。查找证书所在目录的命令行为:
sudo puppet master --configprint ssldir
puppet agent --configprint ssldir
至此,搭建工作就完成了