接上文《自動化運維工具Puppet》http://kaliarch.blog.51cto.com/8966921/1973736
利用模塊與模版管理agent端資源
一、模塊管理
環境安裝及相關配置見鏈接http://kaliarch.blog.51cto.com/8966921/1973736
此次實例爲安裝配置httpd
mkdir -p /etc/puppet/modules/httpd/{files,manifests,templates} 創建httpd模塊文件已經此目錄下的相關文件夾 cd /etc/puppet/modules/httpd/manifests
vim install.pp #定義安裝httpd資源模塊 class httpd::install { #定義類爲httpd::install package {"httpd": ensure => present, } }
vim config.pp #定義配置文件資源 class httpd::config { file {"/etc/httpd/conf/httpd.conf": ensure => present, source => "puppet:///modules/httpd/httpd.conf", #實際路徑在/etc/puppet/modules/httpd/files/httpd.conf require => Class["httpd::install"], #依賴與httpd::install notify => Class["httpd::service"], #變更後通知httpd::service } }
vim service.pp #定義啓動httpd服務 class httpd::service { service {"httpd": ensure => true, #啓動httpd服務 enable => true, #設置httpd開機自啓動 require => Class["httpd::install","httpd::config"] #依賴模塊 } }
vi init.pp #總模塊 class httpd { include httpd::install,httpd::config,httpd::service #調用其他模塊 }
定義修改完成的httpd.conf
egrep -v "^$|^#" /etc/httpd/conf/httpd.conf > /etc/puppet/modules/httpd/files/httpd.conf #將原httpd.conf中的以#開頭的和空白字符去掉存放到httpd模塊的files目錄下
定義總的puppet-1資源文件
vim /etc/puppet/manifests/nodes/site.pp node 'puppet-1' { include httpd }
此時puppet master已經定義好了puppet-1節點的http服務的安裝,修改配置文件,啓動,並設置開機自啓動,在puppet-1 手工測試
puppet agent --test
查看http已經安裝,配置文件更新完成,啓動並設置開機自啓動。
一、模版管理
模板應用(添加虛擬主機配置):
文件存放在templates目錄中,以*.erb結尾。
在以上模塊管理的基礎上,使用模版來配置httpd虛擬主機
# vim /etc/puppet/modules/httpd/manifests/init.pp class httpd { include httpd::install,httpd::config,httpd::service } define httpd::vhost($domainname) { file {"/etc/httpd/conf.d/${domainname}_vhost.conf": content => template("httpd/httpd_vhost.conf.erb"), require => Class["httpd::install"], notify => Class["httpd::service"] } file {"/var/www/$domainname": ensure => directory } file {"/var/www/$domainname/index.html": content => $domainname } }
創建虛擬主機模版
vim /etc/puppet/modules/httpd/templates/httpd_vhost.conf.erb <VirtualHost *:80> ServerName <%= domainname %> DocumentRoot /var/www/<%= domainname %> ErrorLog logs/<%= domainname %>_error.log CustomLog logs/<%= domainname %>_access.log common </VirtualHost>
#vim /etc/puppet/manifests/site.pp node puppet-1 { include httpd #調用httpd模塊 httpd::vhost {'puppet-1': domainname => "puppet-1.redhatxl.cn", #定義域名 } }
完成後目錄結構如下:
在puppet-1之上進行手動測試
puppet agent --test
驗證發現httpd已安裝完成,完成配置文件虛擬主機配置更新後啓動服務,並設置開機自啓動。
瀏覽器訪問,次數頁面已經更新爲vhost配置文件內的index.html
查看dashboard