puppet是采用ruby开发的一个工具 用一个实例来怎么实现基本的自动化 两台机器master和slave 一 在master上定义hostname以及hosts hostname master.liuwenzhi.com vim /etc/sysconfig/network vim /etc/hosts 192.168.1.100 master.liuwenzhi.com 192.168.1.101 slave.liuwenzhi.com 在slave上定义hostname以及hosts hostname slave.liuwenzhi.com vim /etc/sysconfig/network vim /etc/hosts 192.168.1.100 master.liuwenzhi.com 192.168.1.101 slave.liuwenzhi.com 注:关掉iptabels iptables -F crotable -e */10 * * * * ntpdate time.windows.com >>/dev/null 2>&1 二 下载puppet扩展源包 rpm -ivh http://yum.puppetlabs.com/el/6/products/x86_64/puppetlabs-release-6-7.noarch.rpm 服务端: yum install -y puppet-server /etc/init.d/puppetmaster start 服务端开启8140端口 客户端: yum install -y puppet /etc/init.d/puppet start 注:客户端是不主动开启端口的 三 修改下客户端的/etc/puppet/puppet.conf 在最后面添加: listen = true server = master.liuwenzhi.com runinterval = 10 每隔10秒,检测服务端,并更新。 而后重动puppet服务 /etc/init.d/puppet restart 四 生成ssl的证书 手动: 客户端上 puppet agent --test --server=master.liuwenzhi.com 服务端上查看以及签收证书 puppet cert list --all (前面有+号的表示尚未签收) 签收命令 puppet cert --sign slave.liuwenzhi.con 当有大堆的机器,那怎么办,不可能一个一个的手动签收生成证书吧, 另外一种就是自动签收了。 自动: 首先,服务端删除证书 puppet cert clean slave.liuwenzhi.com 客户端须要删除 文件 rm -rf /var/lib/puppet/* 在服务端 1. vim /etc/puppet/puppet.conf 在[main]下面加一行 autosign = true 2. vim /etc/puppet/autosign.conf 加入以下内容: *.liuwenzhi.com 重启服务。 在检查puppet cert list --all 有自动签收slave的没 五 自动传输文件 首先定义一个模块 mkdir /etc/puppet/modules/testm //模块名字就是testm cd !$ mkdir {files,manifests,templates} //一个模块下须要有这三个目录,files存一些文件(能够为空),manifests存配置文件,templates存模板(能够留空) touch manifests/init.pp //这个是必须的 vi manifests/init.pp //内容以下 class testm{ file {"/tmp/2.txt": owner => "root", group => "root", mode => 0400, source => "puppet://$puppetserver/modules/testm/1.txt" } } 说 明:类名字也叫作testm, 类下面定义了一个资源file,文件名字叫作/tmp/2.txt ,owner,group,mode定义文件的属主、数组以及权限,source定义这个文件从哪里获取。 $puppetserver一会也要定义一下,这里指的是puppet server服务器上/etc/puppet/modules/testm/files/1.txt 尚未完, 下面要继续定义一个很关键的配置文件: vim /etc/puppet/manifests/site.pp //内容以下 $puppetserver = 'master.liuwenzhi.com' node 'slave.liuwenzhi.com'{ include testm } 说明:$puppetserver 定义服务端的主机名,node后面为客户端的主机名,这里面定义该客户端要加载的模块. 六