面向雲管理工具puppet的部署和測試
系統內容:
650) this.width=650;" border="0" src="http://www.bkjia.com/uploads/allimg/131227/1U1405Z6-0.jpg" />
[root@rhel6u3-102 puppet]# uname -r
2.6.32-279.el6.x86_64
[root@rhel6u3-102 puppet]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 6.3 (Santiago)
一、前期準備工作1、主機名稱能夠互相解析DNS上或者hosts檔案中能夠相互解析)puppet master(rhel6u3-102.rsyslog.org 192.168.100.102)puppet agent節點rhel6u3-207.rsyslog.org 192.168.100.207)2、系統時間必須一致注意:本地已經下載好了安裝包,並且配置好了yum源二、安裝puppet伺服器端master
yum install ruby ruby-libs ruby-shadow compat-readline5 libselinux-ruby augeas-libs
rpm -ivh facter-1.6.6-1.el6.x86_64.rpm puppet-2.6.18-3.el6.noarch.rpm puppet-server-2.6.18-3.el6.noarch.rpm ruby-augeas-0.4.1-1.el6.x86_64.rpm ruby-mysql-2.8.2-1.el6.x86_64.rpm ruby-shadow-1.4.1-13.el6.x86_64.rpm
用戶端節點slave無需puttet-master)
yum install ruby ruby-libs ruby-shadow compat-readline5 libselinux-ruby augeas-libs
rpm -ivh facter-1.6.6-1.el6.x86_64.rpm puppet-2.6.18-3.el6.noarch.rpm ruby-augeas-0.4.1-1.el6.x86_64.rpm ruby-mysql-2.8.2-1.el6.x86_64.rpm ruby-shadow-1.4.1-13.el6.x86_64.rpm
三、初始化puppet master(rhel6u3-102.rsyslog.org)設定檔路徑/etc/puppet/查看設定檔方法:
sed -e '/#/d' -e '/^$/d' puppet.conf
可通過以下命令產生一個更為詳細的設定檔
#puppetmasterd --genconfig >puppet.conf.out
[root@rhel6u3-102 puppet]# sed -e '/#/d' -e '/^$/d' puppet.conf.out
[master]
ssldir = /var/lib/puppet/ssl
factdest = /var/lib/puppet/facts/
privatekeydir = /var/lib/puppet/ssl/private_keys
rundir = /var/run/puppet
hostcsr = /var/lib/puppet/ssl/csr_rhel6u3-102.rsyslog.org.pem
hostpubkey = /var/lib/puppet/ssl/public_keys/rhel6u3-102.rsyslog.org.pem
plugindest = /var/lib/puppet/lib
inventory_terminus = yaml
publickeydir = /var/lib/puppet/ssl/public_keys
factsource = puppet://puppet/facts/
privatedir = /var/lib/puppet/ssl/private
logdir = /var/log/puppet
libdir = /var/lib/puppet/lib
statedir = /var/lib/puppet/state
hostcert = /var/lib/puppet/ssl/certs/rhel6u3-102.rsyslog.org.pem
localcacert = /var/lib/puppet/ssl/certs/ca.pem
pluginsource = puppet://puppet/plugins
certdir = /var/lib/puppet/ssl/certs
factpath = /var/lib/puppet/lib/facter:/var/lib/puppet/facts
httplog = /var/log/puppet/http.log
requestdir = /var/lib/puppet/ssl/certificate_requests
passfile = /var/lib/puppet/ssl/private/password
hostprivkey = /var/lib/puppet/ssl/private_keys/rhel6u3-102.rsyslog.org.pem
hostcrl = /var/lib/puppet/ssl/crl.pem
authconfig = /etc/puppet/namespaceauth.conf
localconfig = /var/lib/puppet/state/localconfig
client_datadir = /var/lib/puppet/client_data
reportserver = puppet
inventory_server = puppet
ca_server = puppet
lastrunreport = /var/lib/puppet/state/last_run_report.yaml
node_name_value = rhel6u3-102.rsyslog.org
statefile = /var/lib/puppet/state/state.yaml
clientbucketdir = /var/lib/puppet/clientbucket
classfile = /var/lib/puppet/state/classes.txt
report_server = puppet
inventory_port = 8140
ca_port = 8140
puppetdlockfile = /var/lib/puppet/state/puppetdlock
splaylimit = 1800
clientyamldir = /var/lib/puppet/client_yaml
puppetdlog = /var/log/puppet/puppetd.log
report_port = 8140
lastrunfile = /var/lib/puppet/state/last_run_summary.yaml
graphdir = /var/lib/puppet/state/graphs
capub = /var/lib/puppet/ssl/ca/ca_pub.pem
csrdir = /var/lib/puppet/ssl/ca/requests
autosign = /etc/puppet/autosign.conf
cert_inventory = /var/lib/puppet/ssl/ca/inventory.txt
cacert = /var/lib/puppet/ssl/ca/ca_crt.pem
cacrl = /var/lib/puppet/ssl/ca/ca_crl.pem
signeddir = /var/lib/puppet/ssl/ca/signed
serial = /var/lib/puppet/ssl/ca/serial
ca_name = Puppet CA: rhel6u3-102.rsyslog.org
cakey = /var/lib/puppet/ssl/ca/ca_key.pem
caprivatedir = /var/lib/puppet/ssl/ca/private
capass = /var/lib/puppet/ssl/ca/private/ca.pass
cadir = /var/lib/puppet/ssl/ca
railslog = /var/log/puppet/rails.log
dblocation = /var/lib/puppet/state/clientconfigs.sqlite3
rest_authconfig = /etc/puppet/auth.conf
modulepath = /etc/puppet/modules:/usr/share/puppet/modules
yamldir = /var/lib/puppet/yaml
reportdir = /var/lib/puppet/reports
masterlog = /var/log/puppet/puppetmaster.log
server_datadir = /var/lib/puppet/server_data
config = /etc/puppet/puppet.conf
pidfile = /var/run/puppet/master.pid
manifestdir = /etc/puppet/manifests
masterhttplog = /var/log/puppet/masterhttp.log
bucketdir = /var/lib/puppet/bucket
fileserverconfig = /etc/puppet/fileserver.conf
manifest = /etc/puppet/manifests/site.pp
templatedir = /var/lib/puppet/templates
tagmap = /etc/puppet/tagmail.conf
archive_file_server = puppet
rrddir = /var/lib/puppet/rrd
rrdinterval = 1800
1、修改主設定檔 puppet.conf 插入master欄位
vim /etc/puppet/puppet.conf
[master]
certname=rhel6u3-102.rsyslog.org \\設定puppet證明伺服器主機名稱
2、建立節點全域設定檔site.pp,檔案存在,服務才能夠啟動
# touch /etc/puppet/manifests/site.pp
3、啟動puppetmaster服務
# /etc/rc.d/init.d/puppetmaster start
第一次測試或者調試的時候可以考慮以下方法
#puppet master --verbose --no-daemonize --debug
四、配置agent節點rhel6u3-207.rsyslog.org)1、配置第一個agent節點,在main標籤中添加master的主機名稱
vim /etc/puppet/puppet.conf
[main]
server=rhel6u3-102.rsyslog.org
2、啟動agent服務
# /etc/rc.d/init.d/puppet start
第一次測試或者調試的時候可以考慮以下方法
# puppet agent --verbose –no-daemonize
五、配置puppet master 將搜尋到的新節點進行註冊
#puppet cert --list \\查看等待註冊的節點
#puppet cert --sign rhel6u3-207.rsyslog.org \\註冊指定節點
# puppet cert --sign all \\註冊所有等待註冊的節點
六、在puppet master建立一個puppet配置1、建立第一個puppet配置1)定義全域配置 site.pp檔案,並建立import的目錄
# vim /etc/puppet/manifests/site.pp
$puppetserver = 'rhel6u3-102.rsyslog.org'
import 'nodes/*'
#mkdir /etc/puppet/manifests/nodes -p
2)配置節點nodes.pp
# vim /etc/puppet/manifests/nodes/nodes.pp
node 'rhel6u3-207.rsyslog.org'{
include myfile
package { 'vim-enhanced': ensure => present }
}
#node /^rhel6u3-\d+\.rsyslog.org'{
# include myfile
#}
2、建立第一個puppet模組1)建立模組搜尋路徑
vim /etc/puppet/puppet.conf
[main]
modulepath=/etc/puppet/modules:/var/lib/puppet/modules:/usr/local/lib/puppet/modules
2)建立模組目錄結構
# mkdir /etc/puppet/modules -p
#mkdir -vp /etc/puppet/modules/myfile/{files,templates,manifests}
manifests目錄存放模組設定檔,files目錄存放模組包含的檔案,templates目錄存
放模組中的模板
3)建立模組核心設定檔init.pp
vim /etc/puppet/modules/myfile/manifests/init.pp
class myfile {
package{ setup:
ensure => present,
}
file{ "/etc/myfile":
owner => "root",
group => "root",
mode => 644,
source => "puppet://$puppetserver/modules/myfile/files/etc/myfile",
require => Package["setup"],
}
}
配置基本結束,實現的結果如下:1. 檢查setup軟體包是否安裝,如未安裝將安裝它2. 下載“Puppet Master”上的myfile檔案放置到/etc目錄下4)建立同步的測試檔案
# mkdir /etc/puppet/modules/myfile/files/etc -p
#echo "Hello Puppet" >/etc/puppet/modules/myfile/files/etc/myfile
5)用戶端測試
[root@rhel6u3-207 puppet]# cat /etc/myfile
Hello Puppet
**用戶端通過以下方式啟動,然後我們使用前台方式運行並監控它,我們在裡使用一個puppet參數—noop, 它代表我們只測試,並不真的運行並修改節點上的檔案,--onetime參數是只執行一次然後退出的意思。
#puppet agent --server=rhel6u3-102.rsyslog.org --no-daemonize --verbose
--noop --onetime
# puppet agent --server=rhel6u3-102.rsyslog.org --no-daemonize --verbose --noop --onetime
info: Caching catalog for rhel6u3-207.rsyslog.org
info: Applying configuration version '1366705990'
notice: Finished catalog run in 0.20 seconds
6)預設用戶端同步時間為30分鐘,可以設定為5秒測試效果
vim /etc/puppet/puppet.conf 添加以下欄位
[agent]
runinterval=5
測試方法:伺服器端
# date >>/etc/puppet/modules/myfile/files/etc/myfile
用戶端
cat /etc/myfile
Hello Puppet
2013年 04月 23日 星期二 16:52:58 CST
puppet支援的全部資源類型及其屬性http://docs.puppetlabs.com/references/stable/type.html擷取包的方法:使用PuppetLabs公司的YUM安裝源的準備方法:# rpm -ivh http://yum.puppetlabs.com/el/6/products/i386/puppetlabs-release-6-6.noarch.rpm使用RedHat EPEL的YUM源的準備方法:# rpm -ivh http://mirrors.ustc.edu.cn/fedora/epel/6/i386/epel-release-6-8.noarch.rpm
本文出自 “小諾的Linux開源技術部落格” 部落格,請務必保留此出處http://dreamfire.blog.51cto.com/418026/1184796