第一 介紹php
puppet是一種Linux、Unix、windows平臺的集中配置管理系統,使用自有的puppet描述語言,可管理配置文件、用戶、cron任務、軟件包、系統服務等。puppet把這些系統實體稱之爲資源,puppet的設計目標是簡化對這些資源的管理以及妥善處理資源間的依賴關係。html
puppet採用C/S星狀的結構,全部的客戶端和一個或幾個服務器交互。每一個客戶端週期的(默認半個小時)向服務器發送請求,得到其最新的配置信息,保證和該配置信息同步。每一個puppet客戶端每半小時(能夠設置)鏈接一次服務器端, 下載最新的配置文件,而且嚴格按照配置文件來配置服務器. 配置完成之後,puppet客戶端能夠反饋給服務器端一個消息. 若是出錯,也會給服務器端反饋一個消息.node
第二,工做原理:
puppet既能夠在單機上使用,也能夠以c/s結構使用.在大規模使用puppet的狀況下,一般使用c/s結構.在這種結構中puppet客戶端只是指運行puppet的服務器,puppet服務器端是隻運行puppetmaster的服務器.
puppet客戶端首先會鏈接到puppet服務器端,而且經過facter工具把客戶端的基本配置信息發送給服務器端. 服務器端經過分析客戶端的主機名,經過node 定義,找到該主機的配置代碼,而後編譯配置代碼,把編譯好的配置代碼發回客戶端,客戶端執行代碼完成配置.而且把代碼執行狀況反饋給puppet服務器端.
修改系統配置linux
puppet 經過管理資源的方式來管理系統, 例如管理某個軟件是否要安裝,是安裝最新的仍是安裝了就行. 管理某個服務是否開啓, 管理某個文件的屬性,內容等等. 全部的資源都有對應的幾個屬性能夠設置. 經過設置屬性的方式來管理資源. 有一種特殊的屬性能夠用在全部的資源上面,這種屬性叫作 metaparams ( 元參數或者元屬性).數據庫
1) 客戶端經過facter收集客戶端信息併發送至服務端
2) 鏈接服務端並請求catalog日誌
3) 請求節點(node)的信息
4) 從服務器端接收節點(node)的實例
5) 編譯代碼(包括語法檢查等工做)
6) 查詢是否有exported 虛擬資源
7) 若有,則從數據庫接收虛擬資源
8) 接收完整的catalog日誌
9) 存儲catalog日誌到數據庫windows
10) 客戶端接收完整的catalog日誌ruby
第三 安裝服務器
1.設置主機名架構
2.關閉selinux 併發
sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config
3.設置hosts文件
puppet通訊的前提是agent和master必須可以互相解析主機名。 固然,也能夠設置DNS,在第四部分搭建kermit架構的時候會搭建DNS服務,如今先暫時經過hosts文件進行解析,可先設置好puppetmaster後,統一copy到全部節點上
4.配置NTP服務器
設置ntp服務器和本地進行同步,固然若是聯網也能夠和外部服務器同步,這裏只須要保證全部服務器時間一致。 緣由是由於,puppetmaster和agent之間時間相差不得超過10分鐘(好像是),然後期配置的mcollecitve服務端和客戶端之間不能相差60秒
5. 安裝ruby:yum install ruby ruby-libs
安裝Puppet-server、puppet和facter
master 端的安裝以下
rpm -ivh http://yum.puppetlabs.com/puppetlabs-release-el-6.noarch.rpm
rpm --import http://yum.puppetlabs.com/RPM-GPG-KEY-puppetlabs
yum install puppet-server -y
配置puppet.conf
建立site.pp文件 site.pp文件是puppet讀取全部模塊pp文件的開始
啓動puppetmaster服務
/etc/init.d/puppetmaster start
[root@puppetmaster ~]# chkconfig puppetmaster on #設置開機啓動
查看監聽狀態 puppetmaster服務開啓後,默認監聽TCP 8140端口 ,防火牆准許
開放8140(server服務器端口),8139(client服務器端口)
/sbin/iptables -I INPUT -s * -p tcp --dport 8140 -j ACCEPT
/sbin/iptables -I INPUT -s * -p tcp --dport 8139 -j ACCEPT
agent端的安裝以下
rpm -ivh http://yum.puppetlabs.com/puppetlabs-release-el-6.noarch.rpm
rpm --import http://yum.puppetlabs.com/RPM-GPG-KEY-puppetlabs
yum install puppet -y
/etc/init.d/puppet start
客戶端發起驗證
puppet agent --server master.lichao.com --test
服務器端經過驗證
puppet cert --list
puppet cert sign agent.lichao.com