工具:puppet,saltstack,ansible

puppet 老牌
saltstack 效率高 适用大基数平台
ansible  轻量 功能全

puppet安装配置

两台机器:

192.168.1.100(服务端)
192.168.1.101 (客户端)

两台机器关闭selinux,清空iptables规则,并保存,设置hostname

hostname设置的名字与hosts里的名字一样。

服务端和客户端:

/etc/sysconfig/network 修改hostname

编辑hosts文件
100和101全部为
192.168.1.100  master.puppet.com
192.168.1.101   client.puppet.com

然后可以在机器上ping一下看能不能通;

两个时间同步,yum install -y ntp

 ntpdate pool.ntp.org >/dev/null 2>&1


在客户端和服务端:

安装puppet 源
rpm -ivh "http://yum.puppetlabs.com/el/6/products/x86_64/puppetlabs-release-6-7.noarch.rpm"

安装好了之后在ls /etc/yum.repos.d/下面有一个puppet的源;

yum list 
安装服务端程序
yum install -y puppet-server  服务端

启动服务
service  puppetmaster start

开机启动
chkconfig  puppetmaster on

客户端安装程序

yum install -y puppet            客户端

/etc/init.d/puppet start

chkconfig puppet on

客户端修改配置文件
vim /etc/puppet/puppet.conf   [agent]最后添加
listen = true
server = master.puppet.com
ruminterval = 30 //主动更新间隔
service puppet start
//etc/init.d/puppet restart 这是重启
这个时候可能还是会查询不到端口 客户端在连接时端口才会启动。


puppet配置认证

master client 相互认证才能沟通
puppet cert list --all  //列出所有的客户端 (签名与未签名都列出来)
puppet cert sign master 签名注册
puppet cert sign master.puppet.com 
列表时前面带+号则认证成功
puppet cert clean web10 host删除签名 
puppet cert --clean all 清空证书
rm -rf /var/lib/puppet/ssl/*

/etc/init.d/puppet restart

puppet配置自动签发证书:

puppet cert --clean all host清空证书 
rm -rf /var/lib/puppet/ssl/* client清除ssl相关文件
在host端创建自动签发配置文件
vim /etc/puppet/autosign.conf
*.puppet.com         加入一个域
vim /etc/puppet/puppet.conf 
[main] 后加入一行
autosign = true   //支持自动签名 
//etc/init.d/puppetmaster restart host重启
//etc/init.d/puppet restart

在client上
vim /etc/puppet/puppet.conf
[agent] 后加入一行
server = master.puppet.com
runinterval = 10
rm -rf /var/lib/puppet/ssl/*
/etc/init.d/puppe restart client重启
重启后即可得到签名
如果client不启动puppet服务,可通过命令签发
puppet agent --test --server master.puppet.com


测试:

服务端上

vi /etc/puppet/manifests/site.pp
加入如下内容:
node default {
file {
"/tmp/123.txt": content => "test,test";
}
}
客户端上如果没启动puppet
puppet agent --test --server  master.puppet.com
这样会在客户端上生成一个 /tmp/123.txt的文件,并且内容为 testtest。

要想服务端没有客户端的证书rm -rf /var/lib/puppet/ssl/*。