puppet应用原理及安装部署
一、簡介及系統架構
二、環境介紹
三、安裝Puppet
四、配置Puppet-dashboard
五、配置Puppet Kick
puppet簡介
puppet官方網站: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是一個基于Ruby語言所研發的一款開源軟件,Puppet是一種Linux、Unix、windows平臺的集中配置管理系統,使用自有的Puppet描述語言,可管理配置文件、用戶、cron任務、軟件包、系統服務等。Puppet把這些系統實體稱之為資源,Puppet的設計目標是簡化對這些資源管理以及妥善處理資源間的依賴關系.puppetmaster可以看作一個web服務器,實際上也是由ruby提供 的web服務器模塊來做的。因此可以利用web代理軟件來配合puppetmaster做集群設置.
puppet 系統架構
Puppet采用C/S星狀的結構,所有的客戶端和一個或幾個服務器交互。Puppet通常可以用來管理一臺主機的整個生命周期:從初始化到安裝、升級、維護以及后續將服務遷移并下架。每個客戶端周期的(默認半個小時)向服務器發送請求,獲得其最新的配置信息,保證和該配置信息同步。每個Puppet客戶端每半小時(可以設置)連接一次服務器端, 下載最新的配置文件,并且嚴格按照配置文件來配置服務器. 配置完成以后,Puppet客戶端可以反饋給服務器端一個消息. 如果出錯,也會給服務器端反饋一個消息.
下圖展示了一個典型的puppet配置的數據流動情況:
1)客戶端通過facter收集客戶端信息并發送至服務端
2)連接服務端并請求catalog日志
3)請求節點(node)的信息
4)從服務器端接收節點(node)的實例
5)編譯代碼(包括語法檢查等工作)
6)查詢是否有exported 虛擬資源
7)如有,則從數據庫接收虛擬資源
8)接收完整的catalog日志
9)存儲catalog日志到數據庫
10)客戶端接收完整的catalog日志
實驗效果圖:
二、環境介紹
系統版本:Centos-6.4-x86_64
Puppet版本:puppet-2.7.23 下載地址
| 12345678910111213141516171819 | 主機規劃------------------------------------------------------------------------######Master主機[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主機[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
安裝前請確認SELinux與Iptables已經處于關閉狀態
1、配置好YUM源;并做時間同步
| 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語言編寫,所以要安裝ruby環境及庫文件,命令幫助文件
[root@puppet soft]# yum install ruby ruby-libs ruby-rdoc
facter是一個系統盤點工具,收集主機的一些資料,比如CPU,主機IP等,它收集到值發送給puppet服務器端,服務器端就可以根據不同的條件來對不同的節點機器生成不同的puppet配置文件
安裝puppet之前必須先安裝facter,這里采用yum安裝。
注釋:以下軟件壓縮成一個軟件包,下載解壓出來即可獲得所有軟件------------------------------------------------------------------------######在Master主機上安裝[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主機上安裝[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主機上的主配置文件
| 1234 | [root@master ~]# puppet master --genconfig > /etc/puppet/puppet.conf ?#重新生成配置文件[root@master ~]# vim /etc/puppet/puppet.conf ? ?#修改如下兩項配置rundir = /var/run/puppetpidfile = $rundir/master.pid |
4、啟動Puppet服務端進程
注釋:按"Ctrl+C"組合鍵結束上面啟動的進程,以守護進程方式啟動并設置為開機自啟動[root@master ~]# service puppetmaster start[root@master ~]# chkconfig puppetmaster on
5、修改Client主機上的主配置文件
| 12 | 注釋:在[main]段添加如下配置server = master.allen.com ? ?#指定puppet服務器主機名,要能正常解析 |
6、啟動Puppet客戶端服務
7、在第6個步驟中客戶端創建過證書申請后,此時可以在Puppet服務器端查看并簽署證書。
如果服務器相當多的話,這樣簽署證書效率相當的低,而且還會簽證書簽到手抽筋;有什么方法可以讓服務器自動簽署證書呢?答案是當然有了...
| 12 | 注釋:在服務器端Puppet配置文件目錄下添加如下文件并寫入如下信息;表示服務器將會自會簽署來自"allen.com"這個域中主機的所有證書申請# echo "*.allen.com" > /etc/puppet/autosign.conf |
8、此時,客戶端會顯示證書成功簽署并成功啟動服務
9、再次測試Puppet客戶端連接服務器;然后啟動Puppet客戶端服務。
10、測試客戶端是否能成功從服務端獲取到文件
Master主機:
| 1234 | [root@master ~]# vim /etc/puppet/manifests/site.ppfile{"/tmp/puppet.txt":content => "puppet test\n",} |
Client主機:
| 123 | [root@client ~]# puppet agent --server=master.allen.com --no-daemonize --verbose --test[root@client ~]# service puppet restart注釋:執行以上兩條命令任務一條即可;這里使用第一條便于查看是否同步成功 |
到此Puppet的基本安裝與測試已完成。
四、配置Puppet-dashboard
1、安裝數據庫;這里為了方便就安裝在Master主機上了
| 123456789 | [root@master ~]# yum -y install mysql-server mysql mysql-devel 優化mysql設置 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 啟動mysql服務 [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;------------------------------------------------------------------------注釋:執行授權用戶命令上面或下面其中一條即可mysql> grant all privileges on dashboard.* to 'dashboard'@'master.allen.com'identified by'password'; |
2、安裝其它的工具
| 1 | [root@master ~]# gem install rake |
3、在Master主機上安裝puppet-dashboard
| 1 | [root@master ~]# yum -y --nogpgcheck localinstall puppet-dashboard-1.2.23-1.el6.noarch.rpm |
4、導入Dashboard所依賴的數據庫
| 12345678 | [root@master ~]# cd /usr/share/puppet-dashboard #切換到dashboard安裝目錄[root@master ~]# rake RAILS_ENV=production db:migrate #導入數據庫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 #如果出現如上錯誤;執行此命令然后重新導入數據庫即可[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 修改時區
vi/usr/share/puppet-dashboard/config/environment.rb#config.time_zone = 'UTC'config.time_zone = 'shanghai'
6、測試"Dashboard"服務是否工作正常
| 1234 | ######測試dashboard服務是否能正常啟動;出現如下信息說明已經成功,然后按"Crtl+C"組合鍵結束進程[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主機的"puppet.conf"文件如下:
| 1234 | [root@master ~]# vim /etc/puppet/puppet.conf[master] ? ?#在"master"段修改或添加如下內容reports = store, httpreporturl = http://172.16.14.1:3000/reports/upload |
8、修改Client主機的"puppet.conf"文件如下:
| 123 | [root@client ~]# vim /etc/puppet/puppet.conf[agent] ? ?#在"agent"段添加如下內容report = true |
9、啟動服務器端"puppet-dashboard"服務并重啟"puppetmaster"服務;然后重啟客戶端"puppet"服務使配置生效
| 12345678 | ######在服務端執行[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------------------------------------------------------------------------######在客戶端執行[root@client ~]# service puppet restart |
10、訪問dashboard服務,驗證是否正常
11.導入報告
?
| 12 | cd/usr/share/puppet-dashboardrake RAILS_ENV=production reports:import |
執行導入的reports
?
| 12 | cd/usr/share/puppet-dashboardrake jobs:work RAILS_ENV="production" |
五、配置Puppet Kick
簡介:
Puppet客戶端默認每30分鐘跟服務器通訊一次,但是有時,我們希望服務端能給客戶端緊急推送一些任務,于是就有了Puppet kick(Puppet 2.6以前叫 puppetrun)
1、編輯客戶端主配置文件
| 123 | [root@client ~]# vim /etc/puppet/puppet.conflisten = true注釋:在"[agent]"段添加如上內容 |
2、編輯或新建文件"/etc/puppet/namespaceauth.conf"
| 1234 | [root@client ~]# vim /etc/puppet/namespaceauth.conf[puppetrunner]allow *.allen.com注釋:添加如上內容 |
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注釋:如上在這段注釋上面添加如上內容[root@client ~]# service puppet restart ? ?#重啟服務使配置生效 |
4、在服務端修改前面創建的"site.pp"文件
| 1234 | [root@master ~]# vim /etc/puppet/manifests/site.ppfile{"/tmp/allen.txt":content => "ALLEN TEST\n",} |
5、在服務端執行推送命令測試是否能成功推送
| 123 | # puppet kick -p 10 --host client.allen.com# puppetrun -p 10 --host client.allen.com 注釋:在服務端執行如上兩條命令任意一個即可;這里使用第一條命令。 6、在客戶端驗證 到此;Puppet的安裝部署已全部完成,后期會學習Puppet的其他相關內容;如:file,service,exec等管理模塊。 可以參考:http://www.cnblogs.com/songmingming/p/3506918.html |
轉載于:https://blog.51cto.com/hao360/1338138
總結
以上是生活随笔為你收集整理的puppet应用原理及安装部署的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: phalcon是什么(frontend)
- 下一篇: JUnit简单使用教程