規劃:php
node1.9527du.com(192.168.60.22) 爲 puppet master 端node
node2.9527du.com(192.168.60.128) 爲 puppet agent 端mysql
node3.9527du.com(192.168.60.134) 爲 puppet agent 端sql
目的:數據庫
爲node2.9527du.com節點安裝LAMP平臺,安裝完成以後,使用kick機制升級該節點bash的程序包;vim
爲node3.9527du.com節點安裝MySQL數據庫服務。centos
該實驗的模塊以下圖:ruby
1、由於 puppet 工做在:master/agent 模型。各節點之間的通信是基於主機名稱的。因此,要使用到DNS地址解析服務器。bash
這裏爲了方便,使用hosts文件來解析主機名。服務器
一、在主節點配置好hosts文件。
[root@node1 ~]# cat /etc/hosts 192.168.60.22 node1.9527du.com node1 192.168.60.128 node2.9527du.com node2 192.168.60.134 node3.9527du.com node3
二、複製該hosts文件到另外兩個節點。
[root@node1 ~]# scp -p /etc/hosts 192.168.60.128:/etc/ [root@node1 ~]# scp -p /etc/hosts 192.168.60.134:/etc/
三、在分佈式系統應用中首先要保證各節點的時間同步。
[root@node1 ~]# hostname;date;ssh node2.9527du.com 'hostname;date'; ssh node3.9527du.com 'hostname;date' node1.9527du.com Sun Oct 12 23:12:20 CST 2014 node2.9527du.com Sun Oct 12 23:12:27 CST 2014 node3.9527du.com Sun Oct 12 23:12:02 CST 2014
2、puppet master 端的安裝配置
一、所須要安裝的程序包:
[root@node1 puppet]# rpm -qa | grep -e "puppet" -e "facter" facter-1.6.18-3.el6.x86_64 puppet-2.7.25-1.el6.noarch -----> puppet agent 端程序包 puppet-server-2.7.25-1.el6.noarch -----> puppet master 端程序包
說明:
當puppet agent端向puppet master 端請求 katalog 文件時,會發送sends:節點名稱node names和facts.
而facts就是puppet agent所在主機的一些信息。如:
[root@node1 puppet]# facter | grep -e 'lsbdistdescription' -e "osfamily" lsbdistdescription => CentOS release 6.5 (Final) osfamily => RedHat
說明:
puppet master 也就是根據agent發送過來的這些信息來。選擇安裝程序包使用的工具的。
facter-1.6.18-3.el6.x86_64 就是收集這些信息的。
二、讓 puppet master 端,運行在前臺,並詳細顯示初始化時候信息,觀察puppet master工做是否OK?
[root@node1 ~]# puppet master -v --no-daemonize info: Creating a new SSL key for ca info: Creating a new SSL certificate request for ca info: Certificate Request fingerprint (md5): E2:86:B9:E4:51:45:00:F9:89:0E:D3:80:AC:6D:47:A6 notice: Signed certificate request for ca notice: Rebuilding inventory file info: Creating a new certificate revocation list info: Creating a new SSL key for node1.9527du.com info: Creating a new SSL certificate request for node1.9527du.com info: Certificate Request fingerprint (md5): 10:41:62:36:4F:6D:D0:6B:66:6D:F6:87:68:E1:43:FF notice: node1.9527du.com has a waiting certificate request notice: Signed certificate request for node1.9527du.com notice: Removing file Puppet::SSL::CertificateRequest node1.9527du.com at '/var/lib/puppet/ssl/ca/requests/node1.9527du.com.pem' notice: Removing file Puppet::SSL::CertificateRequest node1.9527du.com at '/var/lib/puppet/ssl/certificate_requests/node1.9527du.com.pem' notice: Starting Puppet master version 2.7.25
說明:
puppet工做在:master/agent模型,puppet master端與agent端通信使用的是SSL加密協議進行通信的。因此,各節點的認證是經過CA頒發的證書來互相認證對方的身份。
因此,在有個CA爲puppet節點簽署證書才能夠的。其實,puppet master 既是CA又是master端。因此初始化,puppet master 端時,首先生成CA須要的證書,再爲node1.9527.com
節點生成證書。
三、若是,第2步沒有問題的話,Ctrl + c 關閉掉,再之後臺方式啓動。
[root@node1 ~]# service puppetmaster start Starting puppetmaster: [ OK ]
四、查看puppet master 端監聽的端口。
[root@node1 ca]# ss -anptl | grep puppet LISTEN 0 5 *:8140 *:* users:(("puppetmasterd",2084,5)) [root@node1 ~]# netstat -anptl | grep ruby tcp 0 0 0.0.0.0:8140 0.0.0.0:* LISTEN 3179/ruby
3、在 node3.9527.du.com 節點安裝配置 puppet agent 端;
一、puppet agent 端所須要安裝的程序包;
[root@node3 2.7.25]# rpm -qa | grep -e "puppet" -e "facter" facter-1.6.18-3.el6.x86_64 puppet-2.7.25-1.el6.noarch
二、讓 puppet agent 端之前臺方式運行,並使用【-v】選項輸出運行時的詳細信息。
[root@node3 2.7.25]# puppet agent --server=node1.9527du.com -v --no-daemonize info: Creating a new SSL key for node3.9527du.com -----> 生成該節點SSL key密鑰 info: Caching certificate for ca info: Creating a new SSL certificate request for node3.9527du.com info: Certificate Request fingerprint (md5): 84:80:BF:44:8B:EE:29:00:F8:E4:F5:14:AE:34:52:F1 ------> 請求puppet master簽署證書
說明:
使用:【--server】選項,指定該agent端屬於哪一個 puppet master的。
說明:其實agent端初始化的時候,也就是生成節點證書,請求 puppet master 端簽署證書的。
三、puppet master 端CA簽署證書
(1)、查看puppet master端是否收到node3.9527du.com節點的簽署證書的請求
[root@node1 ~]# puppet cert --list "node3.9527du.com" (84:80:BF:44:8B:EE:29:00:F8:E4:F5:14:AE:34:52:F1)
(2)、puppet master 端的CA簽署node3.9527du.com節點的證書
[root@node1 ~]# puppet cert --sign node3.9527du.com notice: Signed certificate request for node3.9527du.com notice: Removing file Puppet::SSL::CertificateRequest node3.9527du.com at '/var/lib/puppet/ssl/ca/requests/node3.9527du.com.pem'
四、當node3.9527du.oom節點擁有證書後,就會向puppet master端發送catalog文件的請求了。
[root@node3 2.7.25]# puppet agent --server=node1.9527du.com -v --no-daemonize info: Caching certificate for node3.9527du.com notice: Starting Puppet client version 2.7.25 info: Caching certificate_revocation_list for ca info: Caching catalog for node3.9527du.com info: Applying configuration version '1413130794' info: Creating state file /var/lib/puppet/state/state.yaml notice: Finished catalog run in 0.02 seconds
說明:
重啓puppet agent端,agent就會向puppet masterv 發送請求katalog文件。因爲在puppet master端沒有爲該節點提供站點清單文件。
因此,不會看到應用資源時候輸出的信息。
下面爲,該節點node3.9527du.com提供站點清單文件。
四、爲node3.9527du.com提供站點清單文件。
(1)、提供資源清單,且使用類(class)方式封裝資源清單。
說明:該類的做用是安裝mysql-server程序包,併爲MySQL數據庫服務提供定製的統一的配置文件。
(2)、製做站點清單文件:
(3)、在site.pp文件中導入全部站點文件
五、測試
(1)、沒有啓動puppet agent端的狀況下查看node3.9527du.com節點是不安裝了mysql-server程序包。
[root@node3 ~]# rpm -qa | grep "mysql-server"
說明:
從上述命令輸出結果,得知。node3.9527du.com並無安裝mysql-server程序包。
(2)、啓動puppet agent 端,讓它運行在前臺,使用-v選項輸出運行時的一些信息,
說明:
雖然默認puppet agent端每隔30分鐘會向puppet master 端發送請求catalog文件的。
但每次啓動或重啓,puppet agent端,agent端都會向puppet master端發送請求catalog文件的請求的。
以下圖:
(3)、查看是否真的安裝了程序包和mysqld服務真的啓動了?
[root@node3 ~]# rpm -qa | grep "mysql-server"; netstat -anptl | grep "mysqld" mysql-server-5.1.71-1.el6.x86_64 tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 8848/mysqld
說明:
該節點請求本身的站點清單文件,並應用。都是沒有問題的。
4、在 node2.9527.du.com 節點安裝配置 puppet agent 端;
一、puppet agent 端所須要安裝的程序包;
[root@node2 ~]# rpm -qa | grep -e "puppet" -e "facter" facter-1.6.18-3.el6.x86_64 puppet-2.7.25-1.el6.noarch
二、讓 puppet agent 端運行在前臺,並使用【-v】選項輸出運行時的詳細信息。
[root@node2 ~]# puppet agent --server=node1.9527du.com -v --no-daemonize info: Creating a new SSL key for node2.9527du.com info: Caching certificate for ca info: Creating a new SSL certificate request for node2.9527du.com info: Certificate Request fingerprint (md5): C5:90:09:58:7C:EB:20:E4:A6:7D:40:B8:5F:B2:A3:54
三、puppet master 端CA簽署證書
(1)、查看puppet master端是否收到node3.9527du.com節點的簽署證書的請求
[root@node1 ~]# puppet cert --list "node2.9527du.com" (C5:90:09:58:7C:EB:20:E4:A6:7D:40:B8:5F:B2:A3:54)
(2)、puppet master 端的CA簽署node2.9527du.com節點的證書
root@node1 ~]# puppet cert --sign node2.9527du.com notice: Signed certificate request for node2.9527du.com notice: Removing file Puppet::SSL::CertificateRequest node2.9527du.com at '/var/lib/puppet/ssl/ca/requests/node2.9527du.com.pem'
四、爲node2。9527du.com節點提供站點清單文件
(1)、爲node2.9527du.com 節點提供資源清單1
(2)、爲node2.9527du.com提供的資源清單2
(3)、爲node2.9527du.com提供站點清單
五、測試
(1)、沒有啓動puppet agent端的狀況下查看node2.9527du.com節點是否安裝了lamp平臺所須要的程序包。
[root@node2 ~]# rpm -qa | grep -e 'php-[0-9]' -e 'mysql-server' -e 'httpd-[0-9]'
(2)、啓動puppet agent 端,讓它運行在前臺,使用-v選項輸出運行時的一些信息,
(3)、查看是否真的安裝了lamp 平臺
[root@node2 ~]# rpm -qa | grep -e 'php-[0-9]' -e 'mysql-server' -e 'httpd-[0-9]' mysql-server-5.1.71-1.el6.x86_64 httpd-2.2.15-29.el6.centos.x86_64 php-5.3.3-26.el6.x86_64
[root@node2 ~]# netstat -anptl | grep -e "httpd" -e "mysqld" tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 7744/mysqld tcp 0 0 :::8080 :::* LISTEN 7846/httpd
說明:
從上述測試結果得知,node2.9527du.com請求本身的站點清單文件是沒有問題的,應用資源時也OK!!
5、把node2.9527du.com節點配置支持:kick。完成緊急升級bash程序包的任務。
默認puppet agent 每隔30分鐘,會向 puppet master 請求katalog文件。可是,有時候咱們對服務器執行的配置維護操做須要當即生效的。
如:咱們的bash程序出現漏洞要升級全部服務器的bash程序包,不能等puppet agent端過來請求catalog文件。這時候就須要使用到puppet 的kick機制。把須要執行的任務,推送給puppt agent端。
一、把puppet agent端,配置成工做在kick模型。
(1)、puppet agent 要監聽在某個套接字,等待puppet master端推送過來的數據。
[root@node2 ~]# cat /etc/puppet/puppet.conf | grep "listen" listen = true
(2)、配置訪問控制
[root@node2 ~]# vim /etc/puppet/namespaceauth.conf [puppetrunner] allow *.9527du.com
[root@node2 ~]# vim /etc/puppet/auth.conf path / auth any path /run method save allow node1.9527du.com
二、啓動puppet agent端
[root@node2 ~]# service puppet start Starting puppet: [ OK ]
查看puppet agent 監聽的端口
[root@node2 ~]# ss -anpt | grep "puppet" LISTEN 0 5 *:8139 *:* users:(("puppetd",7928,5))
三、爲node2.9527du.com節點提供站點清單文件
(1)、爲node2。9527du.com節點提供的升級bash程序包的資源清單
(2)、在node2.9527du.com節點清單原來的基礎上聲明多一個類,該類的功能是升級bash程序的。
四、從新啓動puppetmaster服務
[root@node1 ca]# service puppetmaster reload Stopping puppetmaster: [ OK ] Starting puppetmaster: [ OK ]
五、測試是否可以讓node2.9527.com節點緊急升級bash程序
提供的bash升級包爲:
bash-4.1.2-15.el6_5.1.x86_64.rpm
(1)、puppet agent端升級前的bash程序包版本以下:
[root@node2 ~]# rpm -qa | grep bash bash-4.1.2-15.el6_4.x86_64
(2)、puppet master 向node2.9527du.com節點推送任務
(3)、查看node2.9527.com端是否執行升級bash程序包的任務
說明:
升級程序包已經成功!!!