Puppet安裝及部署

本篇博客主要介紹Puppet的安裝部署,後續會更新其他相關內容

一、簡介

二、環境介紹

三、安裝Puppet

四、配置Puppet-dashboard

五、配置Puppet Kick


一、簡介

Puppet是一個基於Ruby語言所研發的一款開源軟件,Puppet是一種Linux、Unix、windows平臺的集中配置管理系統,使用自有的Puppet描述語言,可管理配置文件、用戶、cron任務、軟件包、系統服務等。Puppet把這些系統實體稱之爲資源,Puppet的設計目標是簡化對這些資源的管理以及妥善處理資源間的依賴關係

Puppet採用C/S星狀的結構,所有的客戶端和一個或幾個服務器交互。Puppet通常可以用來管理一臺主機的整個生命週期:從初始化到安裝、升級、維護以及後續將服務遷移並下架。每個客戶端週期的(默認半個小時)向服務器發送請求,獲得其最新的配置信息,保證和該配置信息同步。每個Puppet客戶端每半小時(可以設置)連接一次服務器端, 下載最新的配置文件,並且嚴格按照配置文件來配置服務器. 配置完成以後,Puppet客戶端可以反饋給服務器端一個消息. 如果出錯,也會給服務器端反饋一個消息...


二、環境介紹

系統版本:Centos-6.4-x86_64

Puppet版本:puppet-2.7.23 下載地址

主機規劃
------------------------------------------------------------------------
######Master主機
[root@master ~]# hostname
master.allen.com
[root@master ~]# cat /etc/hosts
172.16.14.1 master.allen.com
172.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 ~]# hostname
client.allen.com
[root@client ~]# cat /etc/hosts
172.16.14.1 master.allen.com
172.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源;並做時間同步

# 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軟件

註釋:以下軟件壓縮成一個軟件包,下載解壓出來即可獲得所有軟件
------------------------------------------------------------------------
######在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主機上的主配置文件

[root@master ~]# puppet master --genconfig > /etc/puppet/puppet.conf  #重新生成配置文件
[root@master ~]# vim /etc/puppet/puppet.conf    #修改如下兩項配置
rundir = /var/run/puppet
pidfile = $rundir/master.pid

4、啓動Puppet服務端進程

211011134.gif

註釋:按"Ctrl+C"組合鍵結束上面啓動的進程,以守護進程方式啓動並設置爲開機自啓動
[root@master ~]# service puppetmaster start
[root@master ~]# chkconfig puppetmaster on

5、修改Client主機上的主配置文件

註釋:在[main]段添加如下配置
server = master.allen.com    #指定puppet服務器主機名,要能正常解析

6、啓動Puppet客戶端服務

212228937.gif

7、在第6個步驟中客戶端創建過證書申請後,此時可以在Puppet服務器端查看並簽署證書

212557885.gif

如果服務器相當多的話,這樣簽署證書效率相當的低,而且還會簽證書籤到手抽筋;有什麼方法可以讓服務器自動簽署證書呢?答案是當然有了...

註釋:在服務器端Puppet配置文件目錄下添加如下文件並寫入如下信息;表示服務器將會自會簽署來自"allen.com"這個域中主機的所有證書申請
# echo "*.allen.com" > /etc/puppet/autosign.conf

8、此時,客戶端會顯示證書成功簽署併成功啓動服務

212715480.gif

9、再次測試Puppet客戶端連接服務器;然後啓動Puppet客戶端服務

213033514.gif

213127433.gif

10、測試客戶端是否能成功從服務端獲取到文件

Master主機:

[root@master ~]# vim /etc/puppet/manifests/site.pp
file {"/tmp/puppet.txt":
    content => "puppet test\n",
}

Client主機:

[root@client ~]# puppet agent --server=master.allen.com --no-daemonize --verbose --test
[root@client ~]# service puppet restart
註釋:執行以上兩條命令任務一條即可;這裏使用第一條便於查看是否同步成功

230642329.gif

到此Puppet的基本安裝與測試已完成


四、配置Puppet-dashboard

1、安裝數據庫;這裏爲了方便就安裝在Master主機上了

[root@master ~]# yum -y install mysql-server
[root@master ~]# service mysqld start
[root@master ~]# mysql
mysql> create database dashboard character set utf8;
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、安裝其它的工具

[root@master ~]# gem install rake

3、在Master主機上安裝puppet-dashboard

[root@master ~]# yum -y --nogpgcheck localinstall puppet-dashboard-1.2.23-1.el6.noarch.rpm

4、導入Dashboard所依賴的數據庫

[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"段如下:

[root@master ~]# vim /usr/share/puppet-dashboard/config/database.yml
production:
  host : 172.16.14.1
  database: dashboard
  username: dashboard
  password: password
  encoding: utf8
  adapter: mysql

6、測試"Dashboard"服務是否工作正常

######測試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"文件如下:

[root@master ~]# vim /etc/puppet/puppet.conf
[master]    #在"master"段修改或添加如下內容
reports = store, http
reporturl = http://172.16.14.1:3000/reports/upload

8、修改Client主機的"puppet.conf"文件如下:

[root@client ~]# vim /etc/puppet/puppet.conf
[agent]    #在"agent"段添加如下內容
    report = true

9、啓動服務器端"puppet-dashboard"服務並重啓"puppetmaster"服務;然後重啓客戶端"puppet"服務使配置生效

######在服務端執行
[root@master ~]# /usr/share/puppet-dashboard/script/server -e production -d
[root@master ~]# ss -tanlp | grep 3000
LISTEN     0      5       *:3000       *:*      users:(("ruby",30611,5))
[root@master ~]# service puppetmaster restart
------------------------------------------------------------------------
######在客戶端執行
[root@client ~]# service puppet restart

10、訪問dashboard服務,驗證是否正常

202738961.gif



五、配置Puppet Kick

簡介:

Puppet客戶端默認每30分鐘跟服務器通訊一次,但是有時,我們希望服務端能給客戶端緊急推送一些任務,於是就有了Puppet kick(Puppet 2.6以前叫 puppetrun)

1、編輯客戶端主配置文件

[root@client ~]# vim /etc/puppet/puppet.conf
listen = true
註釋:在"[agent]"段添加如上內容

2、編輯或新建文件"/etc/puppet/namespaceauth.conf"

[root@client ~]# vim /etc/puppet/namespaceauth.conf
[puppetrunner]
allow *.allen.com
註釋:添加如上內容

3、編輯文件"/etc/puppet/auth.conf"

[root@client ~]# vim /etc/puppet/auth.conf
path /run
method save
auth any
allow 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"文件

[root@master ~]# vim /etc/puppet/manifests/site.pp
file {"/tmp/allen.txt":
    content => "ALLEN TEST\n",
}

5、在服務端執行推送命令測試是否能成功推送

# puppet kick -p 10 --host client.allen.com
# puppetrun -p 10 --host client.allen.com
註釋:在服務端執行如上兩條命令任意一個即可;這裏使用第一條命令

233822448.gif

6、在客戶端驗證

233824834.gif

到此;Puppet的安裝部署已全部完成,後續會更新Puppet的其他相關內容;如:file,service,exec等管理模塊;敬請關注...


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