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後面爲客戶端的主機名,這裏面定義該客戶端要加載的模塊. 六