自動化運維--Puppet

一、puppet簡介

1.Puppet是一款自動化運維工具,屬於C/S架構,客戶端運行puppet client,服務端運行puppet master
2.puppet的工作流程

1)客戶端調用facter(收集及檢測分析客戶端配置信息的工具),把這些信息發送到服務端
2)服務端通過facter分析檢測客戶端的主機名,然後找到項目主配置文件mamnifest裏面對應的node配置,並對該部分進行解析,facter發送來的信息作爲變量處理,node牽涉到的代碼才進行解析,其他沒牽涉到代碼的不解析
3)解析分爲幾個階段,首先檢測語法,如果語法沒錯就繼續解析,解析結果生成一箇中間的僞代碼,然後把僞代碼發送給客戶端
4)客戶端收到僞代碼並且執行,然後把執行結果反饋給服務端
5)服務端把客戶端的執行結果寫入日誌

3.puppet工作過程中要注意以下兩點

1)爲了保證安全,client和master之間基於證書和ssl,只有經master證書認證的client才能與master通信
2)puppet會讓系統保持某種狀態並一直維持,如檢測某個文件並一直保持它存在,保證ssh服務一直開啓,若果文件被刪除或ssh服務被關閉,puppet下次執行時(默認30分鐘)會重新創建改文件或開啓ssh服務

三、配置部署puppet

節點詳情
在這裏插入圖片描述

1.配置master端

1)因爲要使用證書認證,所以要規劃master和client主機名,修改hosts文件,並且時間必須同步,否則證書認證會報錯

vim /etc/hosts
192.168.1.2 www.server.com
192.168.1.3	www.http1.com
192.168.1.4	www.http2.com

2)將修改的hosts文件複製到其他主機

scp /etc/hosts [email protected]:/etc/hosts

3)配置yum源

wget http://yum.puppetlabs.com/puppetlabs-release-el-6.noarch.rpm
rpm -Uvh puppetlabs-release-el-6.noarch.rpm
#這是centos6的yum源

4)安裝puppet服務端

yum -y install puppet-server

5)啓動puppet-server並設置開機啓動

server puppet-server start
chkconfig puppet-server on
2.配置client端

1)配置yum源

wget http://yum.puppetlabs.com/puppetlabs-release-el-6.noarch.rpm
rpm -Uvh puppetlabs-release-el-6.noarch.rpm

2)安裝puppet客戶端

yum -y install puppet

3)修改client配置文件

vim /etc/puppet/puppet.conf
[main]
server = www.server.com		#添加puppet master的地址

4)啓動puppet並設置開機啓動

server puppet start
chkconfig puppet on
3.申請與註冊證書

1)client端:

puppet agent --server=www.server.com --no-daemonize --verbose

在這裏插入圖片描述
2)master端
查看申請註冊的客戶端

puppet cert --list

在這裏插入圖片描述
對未註冊的客戶端進行註冊

puppet cert sign --all

在這裏插入圖片描述
在目錄中查看已註冊的客戶端
在這裏插入圖片描述
4)在客戶端執行命令來檢查

puppet agent -t

在這裏插入圖片描述

三、配置實例

以ssh爲例,將sshd的端口改爲9922端口

1.客戶端主動下拉

1)創建必要的目錄

cd /etc/puppet
mkdir -p modules/ssh/{manifests,templates,files}
mkdir manifests/nodes
mkdir modules/ssh/files/ssh
chown -R puppet modules/ 	#修改權限
選項解釋:
manifests:裏面必須包含一個init.pp文件,這是該模塊的入口文件,導入一個模塊的時候,會從init.pp開始執行,可以把所有代碼都寫入init.pp文件
files:該模塊的文件發佈目錄,puppet提供一個文件分發機制,類似rsync的模塊
templates:包含erb模型文件,這個和file資源的template屬性有關(很少用)

2)創建模塊配置文件install.pp

vi /etc/puppet/modules/ssh/manifests/install.pp
class ssh::install{
package{ "openssh":
   ensure => present,
   	}
}
#該文件用來判斷openssh是否安裝

3)創建模塊配置文件config.pp

vi /etc/puppet/modules/ssh/manifests/config.pp
		class ssh::config{		
   	 file { "/etc/ssh/sshd_config":  #配置文件模板
      	ensure => present,		#確認客戶端中此文件存在
      	owner =>"root"		#文件所屬用戶
      	group =>"root"		#文件所屬組
      	mode =>"0600"			#文件屬性
      	source =>"puppet://$puppetserver/modules/ssh/ssh/sshd_config",
			#從服務端同步文件
      	require => Class["ssh::install"],	#調用install.pp確定ssh已安裝
      	notify => Class["ssh::service"],	#如果config.pp發生變化,則通知server.pp
       	 }
  		}

4)創建模塊配置文件service.pp

vi /etc/puppet/modules/ssh/manifests/service.pp
		class ssh::service {
       service {"sshd":
         ensure=>running,	#確認ssh運行
         hasstatus=>true,	#該服務支持status命令
         harestart=>true,	#該服務支持start命令
         enable=>true,		#服務器是否開機啓動
         require=>Class["ssh::config"]		#確認config.pp調用
        }
		}

5)創建模塊主配置文件init.pp

vi /etc/puppet/modules/ssh/manifests/init.pp
		class ssh{
       include ssh::install,ssh::config,ssh::service
		}

6)建立服務端ssh統一維護文件

cp /etc/ssh/sshd_config /etc/puppet/modules/ssh/files/ssh/
chown -R puppet /etc/puppet/modules/ssh/files/ssh/

7)創建測試節點配置文件

vim /etc/puppet/manifests/nodes/ssh.pp
		node 'www.http1.com'{
       include ssh
		}
		node 'www.http2.com'{
       include ssh
		}

8)將測試節點載入puppet,即修改site.pp

vim /etc/puppet/manifests/site.pp
		 import "nodes/ssh.pp"

9)修改維護端的sshd_config配置文件

vim /etc/puppet/modules/ssh/files/ssh/sshd_config 
		 Port 9922

10)重啓puppet

11)客戶端主動拉取

puppet agent -t

在這裏插入圖片描述
12)檢查客戶端是否執行成功
在這裏插入圖片描述

2.服務器推送同步

大規模部署時,採用服務端推送
client端
1)修改配置文件

vim /etc/puppet/puppet.conf
	listen = true  #最後一行添加

2)驗證配置文件auth.conf定義了一些驗證信息及訪問權限

vim /etc/puppet/auth.conf
	allow *  #最後一行添加,允許任何服務端推送

3)啓動puppet客戶端

service puppet start

4)因爲剛纔在master端將ssh的端口改成了9922,現在將ssh的端口改回22,便於測試服務端的推送

vim /etc/ssh/sshd_config 
	port 22

master端
5)開始推送至服務端

puppet kick www.http2.com

在這裏插入圖片描述

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