一、Puppet簡介
Puppet基於ruby語言開發的自動化系統配置工具,可以C/S模式或獨立運行,支持對所有UNIX及類UNIX系統的配置管理,最新版本也開始支持對Windows操作系統有限的一些管理。Puppet適用於服務器管的整個過程 ,比如初始安裝、配置更新以及系統下線
Puppet 是一個客戶端/服務器(C/S)架構的配置管理工具,在中央服務器上安裝 puppet-server 服務器(puppet master),在需要被管理的目標服務器上安裝 puppet 客戶端軟件(puppet client)。當客戶端連接上服務器後,定義在服務器上的配置文件會被編譯,然後在客戶端上運行。客戶端每隔半小時主動會和服務器通信一次,確認配置信息的更新情況,如果有新的配置信息(或者配置有變化),配置文件將會被重新編譯並分發到客戶端執行。當然,也可以在服務器上主動觸發更新指令來強制各客戶端進行配置更新。
二、Puppet的安裝
Puppet的安裝方式支持源碼安裝、yum安裝以及ruby的gem安裝。官網推薦使用yum來安裝puppet,方面以後的升級、管理、維護。Centos可以採用yum來安裝,但是Centos的默認源中沒有puppet包,因此需要先安裝epel包。
Epel是企業版Linux附加軟件包(Extra Packages for Enterprise Linux)的縮寫,是一個由特別興趣小組創建、維護並管理的,針對紅帽企業版Linux(RHEL)及其衍生髮行版(比如CentOS、Scientific Linux)的一個高質量附加軟件包項目。
使用EPEL源(http://fedoraproject.org/wiki/EPEL/zh-cn)或者PuppetLabs源(http://yum.puppetlabs.com/)直接安裝。注意選擇自己系統版本的Yum源。
Yum(全稱爲 Yellow dog Updater, Modified)是一個在Fedora、RedHat、SUSE及CentOS中的Shell前端軟件包管理器。基於RPM包管理,能夠從指定的服務器自動下載RPM包並進行安裝,可以自動處理依賴性關係,並且一次安裝所有依賴的軟件包,無須繁瑣地多次下載和安裝。
安裝環境:
uname -a Linux master.puppet.com 2.6.32-358.el6.x86_64 #1 SMP Fri Feb 22 00:31:26 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
1、Master的安裝
(1)、修改hosts(Puppet 要求所有機器有完整的域名(FQDN),如果沒有 DNS 服務器提供域名的話,可以在兩臺機器上設置主機名
(注意要先設置主機名再安裝 Puppet,因爲安裝 Puppet 時會把主機名寫入證書,客戶端和服務端通信需要這個證書):)
cat /etc/hosts 192.168.0.110 master.puppet.com master 192.168.0.111 client.puppet.com client
(2)安裝ntp,保持時間同步
yum install ntp -y ntpdate asia.pool.ntp.org service ntpd start
(3)安裝ruby
yum install -y ruby ruby-libs ruby-shadow
(4)安裝puppet(3種方法)
1.由於Puppet不在CentOS的基本源中,需要加入PuppetLabs提供的官方源,然後直接安裝就可以了
wget http://yum.puppetlabs.com/el/6/products/x86_64/puppetlabs-release-6-11.noarch.rpm
yum install puppetlabs-release-6-11.noarch.rpm
yum update
yum install -y puppet-server # install會自動安裝puppet所依賴的包,包括facter
2.根據操作系統版本配置Yum源,當前系統爲Centos6x64,因此選擇puppetlabs-release-6-11.noarch.rpm軟件包。配置方法如下
rpm -Uvh http://yum.puppetlabs.com/el/6Server/products/x86_64/puppetlabs-release-6-11.noarch.rpm yum clean all yum install puppet-server # install會自動安裝puppet所依賴的包(包括facter)
3.直接升級Yum源
rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm yum install puppet-server
puppet --version # 檢查版本 facter --version
第一次啓動建議採用puppet master --verbose --no-daemonize方式啓動,有助於測試和調試錯誤,如果採用後面這種方式,你可以看到啓動的整個過程,啓動過程會做一些初始化的工作,爲master創建本地證書認證中心,證書和key。並打開socket等待client的連接。你可以在/etc/puppet/ssl目錄看到相關的文件和目錄
puppet master --verbose --no-daemonize # 第一次測試啓動puppetmaster服務
server puppetmaster start # 啓動服務
2、Client的安裝
(1)、修改hosts(Puppet 要求所有機器有完整的域名(FQDN),如果沒有 DNS 服務器提供域名的話,可以在兩臺機器上設置主機名
(注意要先設置主機名再安裝 Puppet,因爲安裝 Puppet 時會把主機名寫入證書,客戶端和服務端通信需要這個證書):)
cat /etc/hosts 192.168.0.110 master.puppet.com master 192.168.0.111 client.puppet.com client
(2)安裝ntp,保持時間同步
yum install ntp -y ntpdate asia.pool.ntp.org service ntpd start
(3)安裝ruby
#yum install -y ruby ruby-libs ruby-shadow #ruby --version
(4)安裝puppet(3種方法)
1.由於Puppet不在CentOS的基本源中,需要加入PuppetLabs提供的官方源,然後直接安裝就可以了
wget http://yum.puppetlabs.com/el/6/products/x86_64/puppetlabs-release-6-11.noarch.rpm yum install puppetlabs-release-6-11.noarch.rpm yum update yum install -y puppet facter
2.根據操作系統版本配置Yum源,當前系統爲Centos6x64,因此選擇puppetlabs-release-6-11.noarch.rpm軟件包。配置方法如下
rpm -Uvh http://yum.puppetlabs.com/el/6Server/products/x86_64/puppetlabs-release-6-11.noarch.rpm yum clean all yum install puppet facter
3.直接升級Yum源
rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm yum install puppet facter
puppet --version # 檢查版本 facter --version server puppet start # 啓動服務
三、puppet的簡單配置
(1)Client配置:
在 /etc/puppet/puppet.conf 的 [agent] 下面添加如下配置
server = master.puppet.com # master服務的地址 runinterval = 3600 # 每隔多久的時間進行自動更新,時間單位是秒(s) listen = true # 客戶端作爲一個服務進行監聽,允許其它的及其觸發puppet運行,允許遠程觸發puppet的節點配置
(2)Client生成證書:
Puppet 客戶端使用 HTTPS 和服務端(master)通信,爲了和服務器端通信必須有合法的 SSL 認證,第一次運行 puppet 客戶端的時候會生成一個 SSL 證書並指定發給 Puppet 服務端。
puppet agent --no-daemonize --onetime --verbose --debug --server=master.puppet.com
(3)Master簽字:
Puppet 服務端接受到客戶端的證書後必須簽字(sign)才能允許客戶端接入,簽字完後在服務端用“puppet cert list --all”查看會發現master.puppet.com前面多了一個 + ,這就表示“加入”成功,雙方就可以正常通信了。
puppet cert list --all "client.puppet.com" (SHA256) 27:D6:B6:2A:A7:F7:97:D7:1A:CD:C2:C5:33:6F:40:80:54:44:7D:F0:BA:08:07:A6:BA:C3:14:12:3C:3D:8B:1A + "master.puppet.com" (SHA256) 46:0B:A6:93:8B:ED:0C:47:97:E8:A4:1C:9C:10:76:C8:91:3E:0F:A9:0A:F6:4C:24:00:9E:BD:4C:D7:22:1F:78 (alt names: "DNS:master.puppet.com", "DNS:puppet", "DNS:puppet.puppet.com")