您好,登錄后才能下訂單哦!
一、什么是puppet?
1、基于ruby語言開發的系統配置集中管理工具,跨平臺
2、一個C/S架構,配置服務端和客戶端
puppet依賴于ruby與facter,安裝puppet3.x,需要ruby1.8.7版本及以上;facter是一個系統盤點工具,收集主機的一些資料,比如OS、IP、CPU等
3、puppet是一個C/S結構,開源軟件,基于Ruby的系統配置管理工具,安裝puppet3.x,需要ruby1.8.7版本及以上
4、默認情況下,客戶端每隔30分鐘連接一次puppet服務端
5、能管理多達40種資源,例如:file、user、cron、package、yum等,適合整個軟件的生命周期管理
原理圖:
1) 客戶端通過facter收集客戶端信息并發送至服務端
2) 連接服務端并請求catalog日志
3) 請求節點(node)的信息
4) 從服務器端接收節點(node)的實例
5) 編譯代碼(包括語法檢查等工作)
6) 查詢是否有exported 虛擬資源
7) 如有,則從數據庫接收虛擬資源
8) 接收完整的catalog日志
9) 存儲catalog日志到數據庫
10) 客戶端接收完整的catalog日志
二、我們怎樣用puppet和實驗環境介紹
1、拓撲圖
系統管理員經常陷入一系列的重復任務中:如升級軟件包、管理配置文件、系統服務、用戶管理、cron任務以及添加新的配置、修復錯誤等。這些任務通常是重 復低效的,解決這類任務的第一反應是讓他們自動化,于是出現了定制腳本。由于環境復雜,定制腳本和應用程序一再被重復開發,并且很難適合多種平臺,靈活性 和功能也很難保證,于是像Puppet這樣的自動化配置管理工具便出現了。
注:本次實驗要檢查防火墻確保8140端口開放.
禁用防火墻和SELinux
service iptables stop
chkconfig iptables off
setenforce 0
cat /etc/sysconfig/selinux <<EOF
SELINUX=disabled
SELINUXTYPE=targeted
EOF
2、下載
操作系統RHEL6.3 x64
facter下載: https://downloads.puppetlabs.com/facter/
puppet下載: https://downloads.puppetlabs.com/puppet/
3、puppetmaster與puppetclient可以相互解析(server和client都要如此)
vi /etc/hosts
192.168.0.200 puppetmaster.com
192.168.0.201 puppetclient1.com
4、puppet服務端與客戶端時間同步
yum install ntp -y
service ntpd start
ntpdate pool.ntp.org #同步時間
clock -w #將時間寫入硬件
chkconfig ntpd on
三、安裝服務端puppet
1、安裝ruby環境
[root@puppetmaster ~]
# yum install -y ruby ruby-libs ruby-shadow ruby-rdoc
2、安裝facter
安裝puppet之前必須先安裝facter
facter是一個系統盤點工具,收集主的一些資料,比如CPU,主機IP等,它收集到值發送給puppet服務器端,服務器端就可以根據不同的條件來對不同的節點機器生成不同的puppet配置文件
[root@puppetmaster ~]# tar zxvf facter-1.7.3.tar.gz
[root@puppetclient1 ~]# cd facter-1.7.3
[root@puppetmaster facter-1.7.3]# ruby install.rb
3、安裝配置puppet
[root@puppetmaster puppet-3.3.1]
# useradd -s /sbin/nologin puppet
[root@puppetmaster ~]
# tar zxvf puppet-3.3.1.tar.gz
[root@puppetclient1 ~]
# cd puppet-3.3.1
[root@puppetclient1 puppet-3.3.1]
# ruby install.rb
[root@puppetmaster puppet-3.3.1]
# cp ext/redhat/puppet.conf /etc/puppet/
[root@puppetmaster puppet-3.3.1]
# cp ext/redhat/server.init /etc/init.d/puppetmaster
[root@puppetmaster puppet-3.3.1]
# chmod +x /etc/init.d/puppetmaster
剛開始的話, puppet.conf不需要配置就可以滿足。
[root@puppetmaster ~]
# vi /etc/puppet/puppet.conf
[main]
#在main里面添加puppet服務端主機名
server = puppetmaster.com
設置puppetmaster 服務開機啟動
[root@puppetmaster puppet-3.3.1]
# chkconfig --add puppetmaster
[root@puppetmaster puppet-3.3.1]
# chkconfig puppetmaster on
[root@puppetmaster puppet-3.3.1]
# service puppetmaster start
注:要保證/var/lib/puppet/rrd目錄存在且屬主是puppet
[root@puppetmaster puppet]# ls -l /var/lib/puppet/
total 36
drwxr-x--- 2 puppet puppet 4096 Sep 3 12:17 bucket
drwxr-xr-x 2 root root 4096 Sep 3 12:17 facts
drwxr-xr-x 2 root root 4096 Sep 3 12:17 lib
drwxr-x--- 2 puppet puppet 4096 Sep 3 12:17 reports
drwxr-x--- 2 puppet puppet 4096 Sep 3 12:17 rrd
drwxr-x--- 2 puppet puppet 4096 Sep 3 12:17 server_data
drwxrwx--x 8 puppet root 4096 Sep 3 12:26 ssl
drwxr-xr-t 2 root root 4096 Sep 3 12:17 state
drwxr-x--- 2 puppet puppet 4096 Sep 3 12:17 yaml
要查看端口
[root@puppetmaster puppet]# netstat -Tanlp | grep 8140
tcp 0 0 0.0.0.0:8140 0.0.0.0:* LISTEN 4556/ruby
四、安裝客戶端puppet agent
1、安裝ruby環境
[root@puppetclient1 ~]
# yum install -y ruby ruby-libs ruby-shadow ruby-rdoc
2、安裝facter
[root@puppetclient1 ~]# tar zxvf facter-
1.7
.
3
.tar.gz
[root@puppetclient1 ~]# cd facter-
1.7
.
3
[root@puppetclient1 facter-
1.7
.
3
]# ruby install.rb
3、安裝配置puppet
[root@puppetclient1 puppet-3.3.1]
# useradd -s /sbin/nologin puppet
[root@puppetclient1 ~]
# tar zxvf puppet-3.3.1.tar.gz
[root@puppetclient1 puppet-3.3.1]
# ruby install.rb
[root@puppetclient1 puppet-3.3.1]
# cp ext/redhat/puppet.conf /etc/puppet/puppet.conf
[root@puppetclient1 puppet-3.3.1]
# cp ext/redhat/client.init /etc/init.d/puppet
[root@puppetclient1 puppet-3.3.1]
# chmod +x /etc/init.d/puppet
[root@puppetclient1 ~]
# vi /etc/puppet/puppet.conf
Agent的配置主要是更改agent上的/etc/puppet/puppet.conf文件的[agent]部分。
在agent上vim /etc/puppet/puppet.conf 添加如下配置
server = puppetmaster.com
#master服務器的地址
runinterval = 3600 #每隔多久的時間進行自動更新,時間單位為秒
listen =true #客戶端作為一個服務進行監聽,允許其它的機器觸發puppet運行允許遠程觸發puppet的節點配置
[root@puppetclient1 puppet-3.3.1]
# chkconfig --add puppet
[root@puppetclient1 puppet-3.3.1]
# chkconfig puppet on
[root@puppetclient1 puppet-3.3.1]
# service puppet start
[root@puppetclient1 puppet-3.3.1]
# netstat -tupln | grep 8140
注:要保證/var/lib/puppet/rrd目錄存在且屬主是puppet
[root@puppetmaster puppet]# ls -l /var/lib/puppet/
total 36
drwxr-x--- 2 puppet puppet 4096 Sep 3 12:17 bucket
drwxr-xr-x 2 root root 4096 Sep 3 12:17 facts
drwxr-xr-x 2 root root 4096 Sep 3 12:17 lib
drwxr-x--- 2 puppet puppet 4096 Sep 3 12:17 reports
drwxr-x--- 2 puppet puppet 4096 Sep 3 12:17 rrd
drwxr-x--- 2 puppet puppet 4096 Sep 3 12:17 server_data
drwxrwx--x 8 puppet root 4096 Sep 3 12:26 ssl
drwxr-xr-t 2 root root 4096 Sep 3 12:17 state
drwxr-x--- 2 puppet puppet 4096 Sep 3 12:17 yaml
要查看端口
[root@puppetmaster puppet]# netstat -Tanlp | grep 8140
tcp 0 0 0.0.0.0:8140 0.0.0.0:* LISTEN 4556/ruby
五、配置簽名證書
1、客戶端創建證書注冊請求
[root@puppetclient1 ~]
# puppet agent --test
Info: Creating a new SSL key
for
puppetclient1.com
Info: Caching certificate
for
ca
Info: Creating a new SSL certificate request
for
puppetclient1.com
Info:
Certificate Request fingerprint (SHA256):
7E:10:48:3F:3C:D4:13:BA:BF:66:ED:86:52:92:19:05:1E:D2:3A:CD:06:67:27:80:60:D6:54:66:0E:33:F7:C7
Exiting; no certificate found and waitforcert is disabled
2、服務端查看證書注冊請求
[root@puppetmaster ~]
# puppet cert list #加--all查看所有
"puppetclient1.com"
(SHA256) 7E:10:48:3F:3C:D4:13:BA:BF:66:ED:86:52:92:19:05:1E:D2:3A:CD:06:67:27:80:60:D6:54:66:0E:33:F7:C7
"puppetclient1.com.com"
(SHA256) 46:B6:95:A6:1B:6A:FD:83:E4:1C:72:D4:5C:3C:B5:EF:3D:F7:43:2C:09:CF:00:B8:44:18:E4:3E:B3:DC:6F:FD
3、服務端受理客戶端證書注冊請求
[root@puppetmaster ~]
# puppet cert sign puppetclient1.com #主機名改為--all,是受理所有
Notice: Signed certificate request
for
puppetclient1.com
Notice: Removing
file
Puppet::SSL::CertificateRequest puppetclient1.com at
'/var/lib/puppet/ssl/ca/requests/puppetclient1.com.pem'
4、客戶端確認是否證書注冊成功
[root@puppetclient1 ~]
# puppet agent --test
如果出現以下報錯,則在客戶端puppet.conf配置文件[main]里面添加pluginsync=false,再重啟!
Error:
/File
[
/var/lib/puppet/lib
]: Could not evaluate: Could not retrieve information from environment production
source
(s) puppet:
//puppetmaster
.com
/plugins
5、想清除證書使用
[root@puppetmaster ~]
# puppet cert clean puppetclient1.com
六、簡單測試
1、服務端編寫配置
[root@puppetmaster ~]
# vi /etc/puppet/manifests/site.pp #修改后立即,無需重啟
node
'puppetclient1.com'
{
#指定某臺,也可以不寫為所有
file
{
"/tmp/test.txt"
:
content=>
"hello,puppet test\n"
;
#source=> "puppet://$puppetserver/files/httpd.conf"
#也可以這樣分發一個配置文件
}
}
注:file是一個資源管理關鍵字,用來管理文件的,還有package軟件包管理,service管理系統服務,exec執行shell命令,/tmp/test.txt是創建文件名字,content定義文件內容
2、客戶端默認30分鐘與服務端同步配置文件,所以我們手動執行,也可以修改puppet.conf更改默認時間,添加runinterval=600,設置為10分鐘同步一次
[root@puppetclient1 ~]
# puppet agent --test
[root@puppetclient1 ~]
# ls /tmp/
test
.txt
client端出現test.txt文件 至此,基本的puppet系統配置完成!
參考文章 http://56281688.blog.51cto.com/780901/1222560
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。