puppet应用原理及安装部署
一、簡(jiǎn)介及系統(tǒng)架構(gòu)
二、環(huán)境介紹
三、安裝Puppet
四、配置Puppet-dashboard
五、配置Puppet Kick
puppet簡(jiǎn)介
puppet官方網(wǎng)站:http://www.puppetlabs.com/
puppet中文wiki:http://puppet.chinaec2.com/
puppet中文論壇:http://www.puppetfans.com/
http://lansgg.blog.51cto.com?
參考:http://www.itmin.cn/archives/category/yunweijichu/zidonghua?
http://my.oschina.net/fufangchun/blog?catalog=478855?
Puppet是一個(gè)基于Ruby語(yǔ)言所研發(fā)的一款開源軟件,Puppet是一種Linux、Unix、windows平臺(tái)的集中配置管理系統(tǒng),使用自有的Puppet描述語(yǔ)言,可管理配置文件、用戶、cron任務(wù)、軟件包、系統(tǒng)服務(wù)等。Puppet把這些系統(tǒng)實(shí)體稱之為資源,Puppet的設(shè)計(jì)目標(biāo)是簡(jiǎn)化對(duì)這些資源管理以及妥善處理資源間的依賴關(guān)系.puppetmaster可以看作一個(gè)web服務(wù)器,實(shí)際上也是由ruby提供 的web服務(wù)器模塊來做的。因此可以利用web代理軟件來配合puppetmaster做集群設(shè)置.
puppet 系統(tǒng)架構(gòu)
Puppet采用C/S星狀的結(jié)構(gòu),所有的客戶端和一個(gè)或幾個(gè)服務(wù)器交互。Puppet通常可以用來管理一臺(tái)主機(jī)的整個(gè)生命周期:從初始化到安裝、升級(jí)、維護(hù)以及后續(xù)將服務(wù)遷移并下架。每個(gè)客戶端周期的(默認(rèn)半個(gè)小時(shí))向服務(wù)器發(fā)送請(qǐng)求,獲得其最新的配置信息,保證和該配置信息同步。每個(gè)Puppet客戶端每半小時(shí)(可以設(shè)置)連接一次服務(wù)器端, 下載最新的配置文件,并且嚴(yán)格按照配置文件來配置服務(wù)器. 配置完成以后,Puppet客戶端可以反饋給服務(wù)器端一個(gè)消息. 如果出錯(cuò),也會(huì)給服務(wù)器端反饋一個(gè)消息.
下圖展示了一個(gè)典型的puppet配置的數(shù)據(jù)流動(dòng)情況:
1)客戶端通過facter收集客戶端信息并發(fā)送至服務(wù)端
2)連接服務(wù)端并請(qǐng)求catalog日志
3)請(qǐng)求節(jié)點(diǎn)(node)的信息
4)從服務(wù)器端接收節(jié)點(diǎn)(node)的實(shí)例
5)編譯代碼(包括語(yǔ)法檢查等工作)
6)查詢是否有exported 虛擬資源
7)如有,則從數(shù)據(jù)庫(kù)接收虛擬資源
8)接收完整的catalog日志
9)存儲(chǔ)catalog日志到數(shù)據(jù)庫(kù)
10)客戶端接收完整的catalog日志
實(shí)驗(yàn)效果圖:
二、環(huán)境介紹
系統(tǒng)版本:Centos-6.4-x86_64
Puppet版本:puppet-2.7.23 下載地址
| 12345678910111213141516171819 | 主機(jī)規(guī)劃------------------------------------------------------------------------######Master主機(jī)[root@master ~]# hostnamemaster.allen.com[root@master ~]# cat /etc/hosts172.16.14.1 master.allen.com172.16.14.2 client.allen.com[root@master ~]# ifconfig eth0 | awk '/inet addr:/{print $1,$2}'inet addr:172.16.14.1------------------------------------------------------------------------######Client主機(jī)[root@client ~]# hostnameclient.allen.com[root@client ~]# cat /etc/hosts172.16.14.1 master.allen.com172.16.14.2 client.allen.com[root@client ~]# ifconfig eth0 | awk '/inet addr:/{print $1,$2}'inet addr:172.16.14.2 |
三、安裝Puppet
安裝前請(qǐng)確認(rèn)SELinux與Iptables已經(jīng)處于關(guān)閉狀態(tài)
1、配置好YUM源;并做時(shí)間同步
| 12 | # wget http://mirrors.yun-idc.com/epel/6/i386/epel-release-6-8.noarch.rpm# rpm -ivh epel-release-6-8.noarch.rpm |
2、安裝Puppet軟件
由于puppet是由ruby語(yǔ)言編寫,所以要安裝ruby環(huán)境及庫(kù)文件,命令幫助文件
[root@puppet soft]# yum install ruby ruby-libs ruby-rdoc
facter是一個(gè)系統(tǒng)盤點(diǎn)工具,收集主機(jī)的一些資料,比如CPU,主機(jī)IP等,它收集到值發(fā)送給puppet服務(wù)器端,服務(wù)器端就可以根據(jù)不同的條件來對(duì)不同的節(jié)點(diǎn)機(jī)器生成不同的puppet配置文件
安裝puppet之前必須先安裝facter,這里采用yum安裝。
注釋:以下軟件壓縮成一個(gè)軟件包,下載解壓出來即可獲得所有軟件------------------------------------------------------------------------######在Master主機(jī)上安裝[root@master ~]# yum -y --nogpgcheck localinstall puppet-server-2.7.23-1.el6.noarch.rpm facter-1.7.3-1.el6.x86_64.rpm puppet-2.7.23-1.el6.noarch.rpm------------------------------------------------------------------------######在Client主機(jī)上安裝[root@client ~]# yum -y --nogpgcheck localinstall facter-1.7.3-1.el6.x86_64.rpm puppet-2.7.23-1.el6.noarch.rpm
3、修改Master主機(jī)上的主配置文件
| 1234 | [root@master ~]# puppet master --genconfig > /etc/puppet/puppet.conf ?#重新生成配置文件[root@master ~]# vim /etc/puppet/puppet.conf ? ?#修改如下兩項(xiàng)配置rundir = /var/run/puppetpidfile = $rundir/master.pid |
4、啟動(dòng)Puppet服務(wù)端進(jìn)程
注釋:按"Ctrl+C"組合鍵結(jié)束上面啟動(dòng)的進(jìn)程,以守護(hù)進(jìn)程方式啟動(dòng)并設(shè)置為開機(jī)自啟動(dòng)[root@master ~]# service puppetmaster start[root@master ~]# chkconfig puppetmaster on
5、修改Client主機(jī)上的主配置文件
| 12 | 注釋:在[main]段添加如下配置server = master.allen.com ? ?#指定puppet服務(wù)器主機(jī)名,要能正常解析 |
6、啟動(dòng)Puppet客戶端服務(wù)
7、在第6個(gè)步驟中客戶端創(chuàng)建過證書申請(qǐng)后,此時(shí)可以在Puppet服務(wù)器端查看并簽署證書。
如果服務(wù)器相當(dāng)多的話,這樣簽署證書效率相當(dāng)?shù)牡?#xff0c;而且還會(huì)簽證書簽到手抽筋;有什么方法可以讓服務(wù)器自動(dòng)簽署證書呢?答案是當(dāng)然有了...
| 12 | 注釋:在服務(wù)器端Puppet配置文件目錄下添加如下文件并寫入如下信息;表示服務(wù)器將會(huì)自會(huì)簽署來自"allen.com"這個(gè)域中主機(jī)的所有證書申請(qǐng)# echo "*.allen.com" > /etc/puppet/autosign.conf |
8、此時(shí),客戶端會(huì)顯示證書成功簽署并成功啟動(dòng)服務(wù)
9、再次測(cè)試Puppet客戶端連接服務(wù)器;然后啟動(dòng)Puppet客戶端服務(wù)。
10、測(cè)試客戶端是否能成功從服務(wù)端獲取到文件
Master主機(jī):
| 1234 | [root@master ~]# vim /etc/puppet/manifests/site.ppfile{"/tmp/puppet.txt":content => "puppet test\n",} |
Client主機(jī):
| 123 | [root@client ~]# puppet agent --server=master.allen.com --no-daemonize --verbose --test[root@client ~]# service puppet restart注釋:執(zhí)行以上兩條命令任務(wù)一條即可;這里使用第一條便于查看是否同步成功 |
到此Puppet的基本安裝與測(cè)試已完成。
四、配置Puppet-dashboard
1、安裝數(shù)據(jù)庫(kù);這里為了方便就安裝在Master主機(jī)上了
| 123456789 | [root@master ~]# yum -y install mysql-server mysql mysql-devel 優(yōu)化mysql設(shè)置 cat/etc/my.cnf[mysqld]datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sockuser=mysql# Disabling symbolic-links is recommended to prevent assorted security riskssymbolic-links=0max_allowed_packet = 32M[mysqld_safe]log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid 啟動(dòng)mysql服務(wù) [root@master ~]# service mysqld start[root@master ~]# mysqlmysql> create database dashboard character setutf8;mysql> grant all privileges on dashboard.* to 'dashboard'@'172.16.%.%'identified by'password';mysql> flush privileges;------------------------------------------------------------------------注釋:執(zhí)行授權(quán)用戶命令上面或下面其中一條即可mysql> grant all privileges on dashboard.* to 'dashboard'@'master.allen.com'identified by'password'; |
2、安裝其它的工具
| 1 | [root@master ~]# gem install rake |
3、在Master主機(jī)上安裝puppet-dashboard
| 1 | [root@master ~]# yum -y --nogpgcheck localinstall puppet-dashboard-1.2.23-1.el6.noarch.rpm |
4、導(dǎo)入Dashboard所依賴的數(shù)據(jù)庫(kù)
| 12345678 | [root@master ~]# cd /usr/share/puppet-dashboard #切換到dashboard安裝目錄[root@master ~]# rake RAILS_ENV=production db:migrate #導(dǎo)入數(shù)據(jù)庫(kù)rake aborted!No Rakefile found (looking for: rakefile, Rakefile, rakefile.rb, Rakefile.rb)(See full trace by running task with --trace)[root@master puppet-dashboard]# rake gems:refresh_specs #如果出現(xiàn)如上錯(cuò)誤;執(zhí)行此命令然后重新導(dǎo)入數(shù)據(jù)庫(kù)即可[root@master puppet-dashboard]# rake RAILS_ENV=production db:migrate------------------------------------------------------------------------ |
5、修改"database.yml"文件中的"production"段如下:
| 12345678 | [root@master ~]# vim /usr/share/puppet-dashboard/config/database.ymlproduction:host : 172.16.14.1database: dashboardusername: dashboardpassword: passwordencoding: utf8adapter: mysql |
5.5 修改時(shí)區(qū)
vi/usr/share/puppet-dashboard/config/environment.rb#config.time_zone = 'UTC'config.time_zone = 'shanghai'
6、測(cè)試"Dashboard"服務(wù)是否工作正常
| 1234 | ######測(cè)試dashboard服務(wù)是否能正常啟動(dòng);出現(xiàn)如下信息說明已經(jīng)成功,然后按"Crtl+C"組合鍵結(jié)束進(jìn)程[root@master ~]# /usr/share/puppet-dashboard/script/server -e production=> Booting WEBrick=> Rails 2.3.17 application starting on http://0.0.0.0:3000 |
7、修改Master主機(jī)的"puppet.conf"文件如下:
| 1234 | [root@master ~]# vim /etc/puppet/puppet.conf[master] ? ?#在"master"段修改或添加如下內(nèi)容reports = store, httpreporturl = http://172.16.14.1:3000/reports/upload |
8、修改Client主機(jī)的"puppet.conf"文件如下:
| 123 | [root@client ~]# vim /etc/puppet/puppet.conf[agent] ? ?#在"agent"段添加如下內(nèi)容report = true |
9、啟動(dòng)服務(wù)器端"puppet-dashboard"服務(wù)并重啟"puppetmaster"服務(wù);然后重啟客戶端"puppet"服務(wù)使配置生效
| 12345678 | ######在服務(wù)端執(zhí)行[root@master ~]# /usr/share/puppet-dashboard/script/server -e production -d[root@master ~]# ss -tanlp | grep 3000LISTEN ? ? 0 ? ? ?5 ? ? ? *:3000 ? ? ? *:* ? ? ?users:(("ruby",30611,5))[root@master ~]# service puppetmaster restart------------------------------------------------------------------------######在客戶端執(zhí)行[root@client ~]# service puppet restart |
10、訪問dashboard服務(wù),驗(yàn)證是否正常
11.導(dǎo)入報(bào)告
?
| 12 | cd/usr/share/puppet-dashboardrake RAILS_ENV=production reports:import |
執(zhí)行導(dǎo)入的reports
?
| 12 | cd/usr/share/puppet-dashboardrake jobs:work RAILS_ENV="production" |
五、配置Puppet Kick
簡(jiǎn)介:
Puppet客戶端默認(rèn)每30分鐘跟服務(wù)器通訊一次,但是有時(shí),我們希望服務(wù)端能給客戶端緊急推送一些任務(wù),于是就有了Puppet kick(Puppet 2.6以前叫 puppetrun)
1、編輯客戶端主配置文件
| 123 | [root@client ~]# vim /etc/puppet/puppet.conflisten = true注釋:在"[agent]"段添加如上內(nèi)容 |
2、編輯或新建文件"/etc/puppet/namespaceauth.conf"
| 1234 | [root@client ~]# vim /etc/puppet/namespaceauth.conf[puppetrunner]allow *.allen.com注釋:添加如上內(nèi)容 |
3、編輯文件"/etc/puppet/auth.conf"
| 123456789 | [root@client ~]# vim /etc/puppet/auth.confpath /runmethod saveauth anyallow master.allen.com# this one is not stricly necessary, but it has the merit# to show the default policy which is deny everything else注釋:如上在這段注釋上面添加如上內(nèi)容[root@client ~]# service puppet restart ? ?#重啟服務(wù)使配置生效 |
4、在服務(wù)端修改前面創(chuàng)建的"site.pp"文件
| 1234 | [root@master ~]# vim /etc/puppet/manifests/site.ppfile{"/tmp/allen.txt":content => "ALLEN TEST\n",} |
5、在服務(wù)端執(zhí)行推送命令測(cè)試是否能成功推送
| 123 | # puppet kick -p 10 --host client.allen.com# puppetrun -p 10 --host client.allen.com 注釋:在服務(wù)端執(zhí)行如上兩條命令任意一個(gè)即可;這里使用第一條命令。 6、在客戶端驗(yàn)證 到此;Puppet的安裝部署已全部完成,后期會(huì)學(xué)習(xí)Puppet的其他相關(guān)內(nèi)容;如:file,service,exec等管理模塊。 可以參考:http://www.cnblogs.com/songmingming/p/3506918.html |
轉(zhuǎn)載于:https://blog.51cto.com/hao360/1338138
總結(jié)
以上是生活随笔為你收集整理的puppet应用原理及安装部署的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: phalcon是什么(frontend)
- 下一篇: 融资余额是什么意思啊,未还款的融资总金额