1. 程式人生 > >Puppet的安裝和初配置

Puppet的安裝和初配置

puppet

一、前言:

Puppet是Puppet Labs基於ruby語言開發的自動化系統配置工具,可以以C/S模式或獨立模式運行,支持對所有UNIX及類UNIX系統的批量配置和管理,最新版本也開始支持對Windows操作系統有限的一些管理。

Puppet適用於服務器管理的整個過程,比如初始安裝、配置、更新以及系統下線。

Puppet原理:

Puppet的工作細節分成如下幾個步驟:

1、客戶端puppetd調用facter,facter會探測出這臺主機的一些變量如主機名、內存大小、IP地址等。然後puppetd把這些信息發送到服務端。

2、服務器端的puppetmaster檢測到客戶端的主機名,然後會到manifest裏面對應的node配置,然後對這段內容進行解析,facter送過來的信息可以作為變量進行處理的,node牽涉到的代碼才解析,其它的代碼不解析,解析分幾個過程:語法檢查、然後會生成一個中間的偽代碼,然後再把偽代碼發給客戶機。

3、客戶端接收到偽代碼之後就會執行,客戶端再把執行結果發送給服務器。

4、服務器再把客戶端的執行結果寫入日誌。

二、安裝:

安裝 puppet-Server:yum install puppet,puppet-server

首先在服務器端和客戶端配置好hostname,因為puppet是基於hostname來檢測的,同時都要修改hosts文件:

修改主機名的命令:

cat /etc/sysconfig/network

NETWORKING=yes

HOSTNAME=master

vim /etc/hosts

192.168.159.151 master.com

192.168.159.120 slave.com

Puppet 需要 Ruby 的支持,如果要查看命令行幫助的話需要額外 ruby-rdoc 這個軟件包:

yum install puppet-server -y 【這一步為默認安裝ruby ruby-libs ruby-rdoc等軟件包】

/etc/init.d/puppetmaster start

關閉 iptables,關閉selinux

iptables -F

sed -i ‘/SELINUX/S/enforce/disabled/’ /etc/selinux/config

需在puppet.conf中添加一個條目,certname,配置項certname指定了puppet master的名字,如下


[master]
certname=master.com
添加certname配置的目錄有兩個:它會使證書相關的問題解決起來更容易,解決了在目前許多linux主機上都存在的Ruby SSL代碼錯誤,這個錯誤導致了我們需要手動指定puppet master的SSL證書使用的名字。同時為我們的puppet創建一個DNS別名,添加到hosts和DNS配置中。
接下來我們需要添加site.pp,它包含了我們想要管理的配置的基本信息。
site.pp文件告訴puppet去哪裏尋找並載入指定的客戶端配置,這個文件放在/etc/puppet/manifests中,首先創建site.pp,是因為沒有它,puppet將拒絕啟動。
啟動我們的puppetmaster
#systemctl start puppetmaster

添加字段
[main]
server=master.com
之後啟動服務
#systemctl start puppet

三、證書申請:

Puppet客戶端與服務器端是通過SSL隧道通信的,客戶端安裝完成後,需要向服務器端申請證書:

1. 首次連接服務器端會發起證書申請,在客戶端執行命令如下:

puppet agent --server master.com --no-daemonize -v -d --noop --test

執行上面的命令,客戶端將生成證書,並且把證書簽名請求發到服務器端。

2. 在服務器端可以用puppet cert –list命令查看到申請證書的客戶端主機名。

3. puppet cert -s命令可以為特定的主機頒發證書,puppet cert –s and –a 表示給所有的主機頒發證書

例如:puppet cert –s slave.com 為客戶端頒發證書。

四、 驗證puppet配置:

在服務端寫個例子測試一下。這個例子作用很簡單,用來在客戶端的/tmp目錄下新建一個 test.txt 文件,內容為:hello,test!在服務端編寫代碼:【服務器端不需要新建這個文件】

vim /etc/puppet/manifests/site.pp

node default {

file {

"/tmp/test.txt": content => "helo,test!";

}

}

master針對於slave.puppet.com的配置完成了,然後去agent上執行。

五、客戶端測試:
#puppet agent --test --server master.com
此時,客戶端將會從服務器下載並執行,在/tmp目錄下生成叫做1.txt的文件。

最後查看cat /tmp/test.txt

helo,test!

此時puppet服務器端和客戶端安裝完畢。

Puppet的安裝和初配置