天天看點

自動化運維puppet工具的使用

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


六      

繼續閱讀