您好,登錄后才能下訂單哦!
一、什么是puppet?
1、基于ruby語言開發(fā)的系統(tǒng)配置集中管理工具,跨平臺
2、一個C/S架構(gòu),配置服務(wù)端和客戶端
puppet依賴于ruby與facter,安裝puppet3.x,需要ruby1.8.7版本及以上;facter是一個系統(tǒng)盤點工具,收集主機(jī)的一些資料,比如OS、IP、CPU等
3、puppet是一個C/S結(jié)構(gòu),開源軟件,基于Ruby的系統(tǒng)配置管理工具,安裝puppet3.x,需要ruby1.8.7版本及以上
4、默認(rèn)情況下,客戶端每隔30分鐘連接一次puppet服務(wù)端
5、能管理多達(dá)40種資源,例如:file、user、cron、package、yum等,適合整個軟件的生命周期管理
原理圖:
1) 客戶端通過facter收集客戶端信息并發(fā)送至服務(wù)端
2) 連接服務(wù)端并請求catalog日志
3) 請求節(jié)點(node)的信息
4) 從服務(wù)器端接收節(jié)點(node)的實例
5) 編譯代碼(包括語法檢查等工作)
6) 查詢是否有exported 虛擬資源
7) 如有,則從數(shù)據(jù)庫接收虛擬資源
8) 接收完整的catalog日志
9) 存儲catalog日志到數(shù)據(jù)庫
10) 客戶端接收完整的catalog日志
二、我們怎樣用puppet和實驗環(huán)境介紹
1、拓?fù)鋱D
系統(tǒng)管理員經(jīng)常陷入一系列的重復(fù)任務(wù)中:如升級軟件包、管理配置文件、系統(tǒng)服務(wù)、用戶管理、cron任務(wù)以及添加新的配置、修復(fù)錯誤等。這些任務(wù)通常是重 復(fù)低效的,解決這類任務(wù)的第一反應(yīng)是讓他們自動化,于是出現(xiàn)了定制腳本。由于環(huán)境復(fù)雜,定制腳本和應(yīng)用程序一再被重復(fù)開發(fā),并且很難適合多種平臺,靈活性 和功能也很難保證,于是像Puppet這樣的自動化配置管理工具便出現(xiàn)了。
注:本次實驗要檢查防火墻確保8140端口開放.
禁用防火墻和SELinux
service iptables stop
chkconfig iptables off
setenforce 0
cat /etc/sysconfig/selinux <<EOF
SELINUX=disabled
SELINUXTYPE=targeted
EOF
2、下載
操作系統(tǒng)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服務(wù)端與客戶端時間同步
yum install ntp -y
service ntpd start
ntpdate pool.ntp.org #同步時間
clock -w #將時間寫入硬件
chkconfig ntpd on
三、安裝服務(wù)端puppet
1、安裝ruby環(huán)境
[root@puppetmaster ~]
# yum install -y ruby ruby-libs ruby-shadow ruby-rdoc
2、安裝facter
安裝puppet之前必須先安裝facter
facter是一個系統(tǒng)盤點工具,收集主的一些資料,比如CPU,主機(jī)IP等,它收集到值發(fā)送給puppet服務(wù)器端,服務(wù)器端就可以根據(jù)不同的條件來對不同的節(jié)點機(jī)器生成不同的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服務(wù)端主機(jī)名
server = puppetmaster.com
設(shè)置puppetmaster 服務(wù)開機(jī)啟動
[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環(huán)境
[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服務(wù)器的地址
runinterval = 3600 #每隔多久的時間進(jìn)行自動更新,時間單位為秒
listen =true #客戶端作為一個服務(wù)進(jìn)行監(jiān)聽,允許其它的機(jī)器觸發(fā)puppet運行允許遠(yuǎn)程觸發(fā)puppet的節(jié)點配置
[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、客戶端創(chuàng)建證書注冊請求
[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、服務(wù)端查看證書注冊請求
[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、服務(wù)端受理客戶端證書注冊請求
[root@puppetmaster ~]
# puppet cert sign puppetclient1.com #主機(jī)名改為--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、客戶端確認(rèn)是否證書注冊成功
[root@puppetclient1 ~]
# puppet agent --test
如果出現(xiàn)以下報錯,則在客戶端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、服務(wù)端編寫配置
[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"
#也可以這樣分發(fā)一個配置文件
}
}
注:file是一個資源管理關(guān)鍵字,用來管理文件的,還有package軟件包管理,service管理系統(tǒng)服務(wù),exec執(zhí)行shell命令,/tmp/test.txt是創(chuàng)建文件名字,content定義文件內(nèi)容
2、客戶端默認(rèn)30分鐘與服務(wù)端同步配置文件,所以我們手動執(zhí)行,也可以修改puppet.conf更改默認(rèn)時間,添加runinterval=600,設(shè)置為10分鐘同步一次
[root@puppetclient1 ~]
# puppet agent --test
[root@puppetclient1 ~]
# ls /tmp/
test
.txt
client端出現(xiàn)test.txt文件 至此,基本的puppet系統(tǒng)配置完成!
參考文章 http://56281688.blog.51cto.com/780901/1222560
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。