自動化運維工具puppet的使用

規劃:

    node1.9527du.com(192.168.60.22)  爲 puppet master 端

    node2.9527du.com(192.168.60.128) 爲 puppet agent  端

    node3.9527du.com(192.168.60.134) 爲 puppet agent  端

目的:

    爲node2.9527du.com節點安裝LAMP平臺,安裝完成之後,使用kick機制升級該節點bash的程序包;

    爲node3.9527du.com節點安裝MySQL數據庫服務。

該實驗的模塊如下圖:

wKioL1RDrm3BY3ikAAT86Af1-OM981.jpg

一、因爲 puppet 工作在:master/agent 模型。各節點之間的通訊是基於主機名稱的。所以,要使用到DNS地址解析服務器。

這裏爲了方便,使用hosts文件來解析主機名。

1、在主節點配置好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

2、複製該hosts文件到另外兩個節點。

[root@node1 ~]# scp -p /etc/hosts 192.168.60.128:/etc/
[root@node1 ~]# scp -p /etc/hosts 192.168.60.134:/etc/

3、在分佈式系統應用中首先要保證各節點的時間同步。

[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

二、puppet master 端的安裝配置

1、所需要安裝的程序包:

[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 就是收集這些信息的。


2、讓 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

節點生成證書。

3、如果,第2步沒有問題的話,Ctrl + c 關閉掉,再以後臺方式啓動。

[root@node1 ~]# service puppetmaster start
Starting puppetmaster:                                     [  OK  ]

4、查看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


三、在 node3.9527.du.com 節點安裝配置 puppet agent 端;

1、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

2、讓 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 端簽署證書的。

3、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'

4、當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提供站點清單文件。


4、爲node3.9527du.com提供站點清單文件。

(1)、提供資源清單,且使用類(class)方式封裝資源清單。

說明:該類的作用是安裝mysql-server程序包,併爲MySQL數據庫服務提供定製的統一的配置文件。

wKioL1RDoB6w2r1xAAHuVt7OlXo882.jpg

(2)、製作站點清單文件:

wKiom1RDoFCzVdG7AACetdTcULw706.jpg

(3)、在site.pp文件中導入所有站點文件

wKiom1RDqqzjoIsCAAHwsc7UL-Q613.jpg

5、測試

(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文件的請求的。

如下圖:

wKiom1RDoPrB8pV-AAELMUN7Usg172.jpg(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

說明:

   該節點請求自己的站點清單文件,並應用。都是沒有問題的。


四、在 node2.9527.du.com 節點安裝配置 puppet agent 端;

1、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

2、讓 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

3、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'

4、爲node2。9527du.com節點提供站點清單文件

(1)、爲node2.9527du.com 節點提供資源清單1

wKiom1RDomOTs-SSAARYUcz_ZGc983.jpg

(2)、爲node2.9527du.com提供的資源清單2

wKiom1RDoyWxyV98AAHLtRPipgk719.jpg

(3)、爲node2.9527du.com提供站點清單

wKiom1RDo_HggJ9hAAC6DVKs7ow247.jpg

5、測試

(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選項輸出運行時的一些信息,

wKiom1RDpJaDHgqRAAOOp0BXwq0771.jpg

(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!!


五、把node2.9527du.com節點配置支持:kick。完成緊急升級bash程序包的任務。

    默認puppet agent 每隔30分鐘,會向 puppet master 請求katalog文件。但是,有時候我們對服務器執行的配置維護操作需要立即生效的。

    如:我們的bash程序出現漏洞要升級所有服務器的bash程序包,不能等puppet agent端過來請求catalog文件。這時候就需要使用到puppet 的kick機制。把需要執行的任務,推送給puppt agent端。

1、把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

2、啓動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))

3、爲node2.9527du.com節點提供站點清單文件

(1)、爲node2。9527du.com節點提供的升級bash程序包的資源清單

wKioL1RDpoHiQtvIAAJ2bmIl8Hc200.jpg

(2)、在node2.9527du.com節點清單原來的基礎上聲明多一個類,該類的功能是升級bash程序的。

wKiom1RDpuew1NdgAADeMLp-ayA401.jpg


4、重新啓動puppetmaster服務

[root@node1 ca]# service puppetmaster reload
Stopping puppetmaster:                                     [  OK  ]
Starting puppetmaster:                                     [  OK  ]

5、測試是否能夠讓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節點推送任務

wKioL1RDp9nSjrB3AACXJhb-dFc209.jpg(3)、查看node2.9527.com端是否執行升級bash程序包的任務

wKioL1RDqAzCmweYAAVBXPmlVAM215.jpg

說明:

    升級程序包已經成功!!!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章