CentOS6.5+puppet3.7.3 安裝、配置及測試

OS:CentOS-6.5-x86_64node

Puppet 3.7.3mysql

Puppet master: master.fisteam2.comlinux

Puppet clients:node1-5.fisteam2.comsql


Puppet 要求全部機器有完整的域名(FQDN),若是沒有 DNS 服務器提供域名的話,能夠在兩臺機器上設置主機名(注意要先設置主機名再安裝 Puppet,由於安裝 Puppet 時會把主機名寫入證書,客戶端和服務端通訊須要這個證書),由於我配置了DNS,因此就不用改hosts了,若是沒有就須要改hosts文件指定。數據庫

1.關閉selinux,iptables,並設置ntp    
採用CentOS-6.5-x86_64.iso進行minimal最小化安裝apache

關閉selinuxvim

[root@master ~]# cat /etc/selinux/config 

# This file controls the state of SELinux on the system. 

# SELINUX= can take one of these three values: 

# enforcing - SELinux security policy is enforced. 

# permissive - SELinux prints warnings instead of enforcing. 

# disabled - No SELinux policy is loaded. 

SELINUX=enforcing 

# SELINUXTYPE= can take one of these two values: 

# targeted - Targeted processes are protected, 

# mls - Multi Level Security protection. 

SELINUXTYPE=targeted 

[root@master ~]# sed -i '/SELINUX/ s/enforcing/disabled/g' /etc/selinux/config 

[root@master ~]# cat /etc/selinux/config 

# This file controls the state of SELinux on the system. 

# SELINUX= can take one of these three values: 

# enforcing - SELinux security policy is enforced. 

# permissive - SELinux prints warnings instead of enforcing. 

# disabled - No SELinux policy is loaded. 

SELINUX=disabled 

# SELINUXTYPE= can take one of these two values: 

# targeted - Targeted processes are protected, 

# mls - Multi Level Security protection. 

SELINUXTYPE=targeted 

[root@master ~]# setenforce 0

中止iptablescentos

[root@node1 ~]# chkconfig --list |grep tables 

ip6tables 0:off 1:off 2:on 3:on 4:on 5:on 6:off 

iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off 

[root@node1 ~]# chkconfig ip6tables off 

[root@node1 ~]# chkconfig iptables off 

[root@node1 ~]# service ip6tables stop 

ip6tables: Setting chains to policy ACCEPT: filter [ OK ] 

ip6tables: Flushing firewall rules: [ OK ] 

ip6tables: Unloading modules: [ OK ] 

[root@node1 ~]# service iptables stop 

iptables: Setting chains to policy ACCEPT: filter [ OK ] 

iptables: Flushing firewall rules: [ OK ] 

iptables: Unloading modules: [ OK ] 

[root@node1 ~]#

設置ntpruby

[root@master ~]# ntpdate pool.ntp.org

[root@master ~]# chkconfig --list|grep ntp 

ntpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off 

ntpdate 0:off 1:off 2:off 3:off 4:off 5:off 6:off 

[root@master ~]# chkconfig ntpd on 

[root@master ~]# service ntpd start 

Starting ntpd: [ OK ] 

[root@master ~]#

2.安裝puppet服務  
puppet不在CentOS的基本源中,須要加入 PuppetLabs 提供的官方源:服務器

[root@master ~]# wget http://yum.puppetlabs.com/el/6/products/x86_64/puppetlabs-release-6-7.noarch.rpm 

[root@master ~]# rpm -ivh puppetlabs-release-6-7.noarch.rpm 

[root@master ~]#yum update

在 master上安裝和啓用 puppet 服務:

[root@master ~]# yum install puppet-server 

[root@master ~]# chkconfig --list |grep puppet 

puppet 0:off 1:off 2:off 3:off 4:off 5:off 6:off 

puppetmaster 0:off 1:off 2:off 3:off 4:off 5:off 6:off 

[root@master ~]# chkconfig puppet on 

[root@master ~]# service puppetmaster start 

Starting puppetmaster: [ OK ] 

[root@master ~]#


在clients上安裝puppet客戶端

[root@node1 ~]# yum install puppet 

[root@node1 ~]# chkconfig --list |grep puppet 

puppet 0:off 1:off 2:off 3:off 4:off 5:off 6:off 

[root@node1 ~]# chkconfig puppet on 

[root@node1 ~]# chkconfig --list |grep puppet 

puppet 0:off 1:off 2:on 3:on 4:on 5:on 6:off 

[root@node1 ~]# service puppet start 

Starting puppet agent: [ OK ] 

[root@node1 ~]#


3.配置puppet

對於puppet 客戶端,修改/etc/puppet/puppet.conf,指定master服務器

[main]

# The Puppet log directory.

# The default value is '$vardir/log'.

logdir = /var/log/puppet

# Where Puppet PID files are kept.

# The default value is '$vardir/run'.

rundir = /var/run/puppet

# Where SSL certificates are kept.

# The default value is '$confdir/ssl'.

ssldir = $vardir/ssl

[agent]

# The file in which puppetd stores a list of the classes

# associated with the retrieved configuratiion. Can be loaded in# the separate ``puppet`` executable using the ``--loadclasses``

# option.

# The default value is '$confdir/classes.txt'.

classfile = $vardir/classes.txt

# Where puppetd caches the local configuration. An

# extension indicating the cache format is added automatically.

# The default value is '$confdir/localconfig'.

localconfig = $vardir/localconfig

server = master.fisteam2.com


並重啓puppet服務

[root@node1 ~]# service puppet restart 

Stopping puppet agent: [ OK ] 

Starting puppet agent: [ OK ] 

[root@node1 ~]#

4.Client申請證書  
服務端自動簽發證書設置  
設置master自動簽發全部的證書,咱們只須要在/etc/puppet 目錄下建立 autosign.conf 文件。(不須要修改 /etc/puppet/puppet.conf文件,由於我默認的autosign.conf 文件的位置沒有修改)

[root@master ~]# ll /etc/puppet/ 

total 28 

-rw-r--r--. 1 root root 4178 Nov 4 06:24 auth.conf 

drwxr-xr-x. 3 root root 4096 Dec 29 15:44 environments 

-rw-r--r--. 1 root root 1462 Nov 4 06:23 fileserver.conf 

drwxr-xr-x. 2 root root 4096 Nov 4 06:24 manifests 

drwxr-xr-x. 2 root root 4096 Nov 4 06:24 modules 

-rw-r--r--. 1 root root 853 Nov 4 06:23 puppet.conf 

[root@master ~]# cat > /etc/puppet/autosign.conf <<EOF 

> *.fisteam2.com 

> EOF 

[root@master ~]# service puppetmaster restart 

Stopping puppetmaster: [ OK ] 

Starting puppetmaster: [ OK ] 

[root@master ~]#


這樣就會對全部來自fisteam2.com的機器的請求,都自動簽名。  
client須要向服務器端發出請求, 讓服務器對客戶端進行管理. 這實際上是一個證書籤發的過程. 第一次運行puppet 客戶端的時候會生成一個 SSL 證書並指定發給 Puppet 服務端, 服務器端若是贊成管理客戶端,就會對這個證書進行簽發,能夠用這個命令來簽發證書,因爲咱們已經在客戶端設置了server地址,所以不須要跟服務端地址

[root@master ~]# puppet agent


爲了詳細瞭解註冊的過程和往後排錯,能夠增長參數,由於配置文件裏  
–no-daemonize 前臺輸出日誌  
–verbose 輸入更加詳細的日誌  
–debug 更加詳細的日誌,排錯的時候使用  
–test 表示測試,就帶一個–test參數就能夠

[root@node1 ~]# puppet agent --no-daemonize --onetime --verbose --debug


clipboard[56]

就能夠申請證書了,因爲我配置的自動簽發證書,因此直接就簽發了,在服務端執行

[root@master ~]# puppet cert list --all


clipboard[57]

就能夠看到全部客戶端已經都已簽發證書,前面帶」+」號的就是簽發成功的,若是沒有簽名的,能夠用

[root@master ~]# puppet cert --sign node1.localdomain


clipboard[58]

便可看到證書已經簽發  
5.在服務端安裝puppet的dashboard  
安裝mysql

[root@master ~]# yum install -y mysql mysql-devel mysql-server

優化mysql設置

編輯 /etc/my.cnf, 在[mysqld]字段,增長最後一行

[root@master ~]# vim /etc/my.cnf


clipboard[59]

啓動Mysql服務

[root@master ~]# service mysqld start

[root@master ~]# chkconfig mysqld on 

[root@master ~]# chkconfig --list |grep mysqld 

mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off

 

clipboard[60]

設置mysql密碼,我這裏使用是密碼是123456

[root@master ~]# mysqladmin -u root password '123456'


建立一個dashboard數據庫

[root@master ~]# mysql -uroot -p123456 <<EOF
> CREATE DATABASE dashboard CHARACTER SET utf8;
> CREATE USER 'dashboard'@'localhost' IDENTIFIED BY '123456';
> GRANT ALL PRIVILEGES ON dashboard.* TO 'dashboard'@'localhost';
> FLUSH PRIVILEGES;
> EOF

[root@master ~]#

clipboard[61]

Passenger+Apache+Dashboard

這是讓Apache支持ruby,因爲Passenger不在centos官方源裏,所以要添加epel的源

[root@master ~]# wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm 

[root@master ~]# rpm -ivh epel-release-6-8.noarch.rpm 

[root@master ~]# yum install mod_passenger puppet-dashboard


配置Dashboard

[root@master ~]# vim /usr/share/puppet-dashboard/config/database.yml


clipboard[62]

修改時區

[root@master ~]# vim /usr/share/puppet-dashboard/config/environment.rb


clipboard[63]

初始化數據庫

[root@master ~]# cd /usr/share/puppet-dashboard/
[root@master puppet-dashboard]# rake RAILS_ENV=production db:migrate

 

clipboard[64]

配置Apache  
咱們須要整合Passenger和apache

[root@master ~]# cat > /etc/httpd/conf.d/passenger.conf << EOF
> LoadModule passenger_module modules/mod_passenger.so
> <IfModule mod_passenger.c>

> PassengerRoot /usr/share/rubygems/gems/passenger-3.0.17
> PassengerRuby /usr/bin/ruby
> PassengerHighPerformance on
> PassengerMaxPoolSize 12
> PassengerPoolIdleTime 1500
> PassengerStatThrottleRate 120
> RailsAutoDetect On
> </IfModule>

> <VirtualHost *:80>

> ServerName master.fisteam2.com
> DocumentRoot "/usr/share/puppet-dashboard/public/"
> <Directory "/usr/share/puppet-dashboard/public/">

> Options None
> AllowOverride AuthConfig
> Order allow,deny
> allow from all
> </Directory>

> ErrorLog /var/log/httpd/master.fisteam2.com_error.log
> LogLevel warn
> CustomLog /var/log/httpd/master.fisteam2.com_access.log combined
> ServerSignature On
> </VirtualHost>

> EOF

[root@master ~]#


clipboard[65]

啓動服務

[root@master ~]# service httpd start

Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using master.fisteam2.com for ServerName[ OK ]

[root@master ~]# chkconfig httpd on

[root@master ~]# chkconfig --list | grep httpd

httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off


clipboard[66]

配置puppet  
讓Dashboard使用Reports,如今默認agent是已經啓用Report的功能,因此你就不須要設置agent,你只須要設置Server端就能夠

[root@master ~]# vim /etc/puppet/puppet.conf

[master]

reports = store,http

reporturl = http://master.fisteam2.com:80/reports/upload

clipboard[67]

重啓puppetmaster 服務

[root@master ~]# service puppetmaster restart


clipboard[68]

這時候就能夠直接用 http://ip 訪問puppet Dashboard

clipboard[69]

導入報告

[root@master puppet-dashboard]# cd /usr/share/puppet-dashboard/
[root@master puppet-dashboard]# rake RAILS_ENV=production reports:import

clipboard[70]

這時候你訪問Dashboard,能夠看到導入的任務.

clipboard[71]

4. 執行導入的reports

[root@master puppet-dashboard]# cd /usr/share/puppet-dashboard/
[root@master puppet-dashboard]# rake jobs:work RAILS_ENV="production"

 

clipboard[72]

clipboard[73]

一個Master,五個node測試效果

clipboard[74]

clipboard[75]

文件同步測試

Puppet master:

[root@master ~]# vim /etc/puppet/fileserver.conf

[fisteam2filesync]

path /etc/puppet

allow *

clipboard[76]

在下面加一個配置域,名字叫作fisteam2filesync,路徑是/etc/puppet

[root@master ~]# vim /etc/puppet/manifests/site.pp

node default {
file {
"/tmp/fisteam2_puppet_testfile.txt":

content=>"good,test pass!\nfisteam2_puppet_testing\n";

}
}

 

clipboard[77]

上面的代碼對默認連入的puppet客戶端執行一個操做,在/tmp目錄生成一個fisteam2_puppet_testfile.txt文件,內容是good,test pass! 回車換行fisteam2_puppet_testing回車換行.  
初次建立pp文件,須要重啓puppetmaster

[root@master ~]# service puppetmaster restart

Stopping puppetmaster: [ OK ]

Starting puppetmaster: [ OK ]


NODE1~5測試

node1:

clipboard[78]

node2:

clipboard[79]

node3:

clipboard[80]

node4:

clipboard[81]

node5:

clipboard[82]


地址下載:http://down.51cto.com/data/1968796

===================================================END====================================

相關文章
相關標籤/搜索