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後面為用戶端的主機名,這裡面定義該用戶端要加載的子產品.
六