Puppet學習
安裝及簡單例項應用
安裝環境:CentOS 5.4 X86_64位
Server:
1.先安裝ruby語言包、ruby標準庫、ruby shadow庫
yum install -y ruby ruby-libs ruby-shadow
2.需要新增EPRL庫,來支援puppet
wget http:// dl.Fedoraproject.org /pub/epel/5Server/x86_64/epel-release-5-4.noarch.rpm
如果你的系統是centos 6版本的或者是centos 5版本但是是32位的,可以到網站:
dl.fedoraproject.org查詢你們想要的
3.在master主機上,需要從EPEL倉庫安裝puppet、puppet-server facter
rpm -Uvh epel-release-5-4.noarch.rpm
puppet軟體包含了agent程式,puppet-server軟體包含了master程式,facter軟體包含了系統盤點工具facter,可以獲取agent主機的相關資訊
yum install -y puppet puppet-server facter
之後啟動puppet master
service puppetmaster start
啟動 puppetmaster:[確定]
這樣,puppet server上的安裝算是完成了
現在,master和agent都安裝好了,解釋一下/etc/puppet/下的檔案含義:
Puppet.conf puppet的服務端配置檔案
Auth.conf client訪問puppet server的acl配置檔案
Fileserver.conf puppet server作為檔案伺服器的ACL配置檔案
Manidests puppet的指令碼目錄檔案目錄
Site.pp 檔案告訴puppet去哪裡尋找並載入指定的客戶端配置,如果缺少此檔案,puppet會啟動失敗的
防火牆設定:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8140 -j ACCEPT
需要重啟防火牆,service iptables restart
配置好防火牆後,就可以允許client訪問puppet
配置第一個agent
Client:
同樣需要安裝epel-release-5-4.noarch.rpm
下載:wget
rpm -ivh epel-release-5-4.noarch.rpm
在agent端只需要安裝:
yum install puppet facter
Client 請求:puppet agent --server=puppet.xxxx.com(puppet master域名) --verbose --no-daemonize
解釋:引數
--server 指定了需要連線puppet master 的域名或者主機名,儘量使用域名吧,否則不同網路之間無法透過主機名相通
--no-daemonize 使得puppet 客戶端執行在前端並輸出日誌到標準輸出
--verbose 使客戶端輸出更詳細的日誌
Server端需要相應這個請求:
檢視:puppet cert –list
"shwt08" (94:BC:4A:FA:31:E1:10:9F:3C:4D:B3:E8:CB:A4:F8:B9)
puppet cert --sign shwt08
notice: Signed certificate request for shwt08
notice: Removing file Puppet::SSL::CertificateRequest shwt08 at '/var/lib/puppet/ssl/ca/requests/shwt08.pem'
當然,如果我們有很多個client的話,都需要一個個去認證確實是一件很麻煩的事情,所以,修改puppet.conf檔案,實現自動化認證
在全域性”[mian]”下新增一行:
autosign = true
重啟master
service puppetmaster restart
重新新增一個clint,驗證
需要先去wget 後需要編輯/etc/hosts
之後puppet agent --server=puppet.xxxx.com --no-daemonize –verbose 發現是沒有問題的
建立第一個配置:
在master上修改兩個檔案:
目錄/etc/puppet/manifests下:
nodes.pp site.pp 如果沒有這兩個檔案就手工建吧
# vim nodes.pp
node default {
file{"/root/vol_disk_check.sh":
source => "puppet:///files/vol_disk_check.sh",
owner => "root",
group => "root",
mode => 755;
}
}
# vim site.pp
import 'nodes.pp'
至於具體的解釋說明,等下章再詳細的解釋下,這篇文章主要來闡明puppet安裝及簡易同步檔案的效果
測試來同步一個檔案
puppet agent --server=puppet.xxxx.com --test -v
ok,從詳細資訊中,得知client已經同步檔案了
下面說遇到的兩個錯誤:
錯誤1:
err: Could not retrieve catalog from remote server: hostname not match with the server certificate
解決辦法:
在master和client上檢視是否二者日期不同步
在client上配置/etc/hosts檔案,編輯新增puppet.xxxx.com 解析(IP 域名)
錯誤2:
err: Could not retrieve catalog from remote server: Connection refused - connect(2)
解決辦法:
這個是因為master 上的主程式沒有啟動的緣故,到master上檢視程式puppetmaster 發現提示程式已死,
service puppetmaster status
puppetmasterd 已死,但 pid 檔案仍存
檢視了下配置檔案,發現是在修改fileserver.conf時修改錯誤導致的,也就是說當遇到這個錯誤提示的時候,要檢視/etc/puppet目錄下的主配置檔案是否有問題
檔案fileserver.conf 中:[files]
path /var/lib/puppet/files
這個path下是放置我們要同步更新的檔案
每一個模組都需要一個特定的目錄結構和一個叫做init.pp 的檔案,這個目錄結構能幫助puppet自動載入模組。為了載入模組,puppet會檢查一系列被稱為模組路徑的目錄,模組路徑是有配置檔案puppet.conf中[main]段的modulepath 配置設定的,預設情況下,路徑在/etc/puppet/modules下
模組結構:
mkdir -p /etc/puppet/modules/cron/{files,manifests,templates}
我們會將大多數的配置指令碼檔案放在/etc/puppet/modules/cron/manifests目錄下, manifests是puppet的指令碼目錄檔案目錄
建立init.pp檔案,init.pp檔案時模組的核心,每個模組必須擁有一個init.pp檔案,files目錄使用者存放哪些屬於模組一部分的檔案,templates則是放置模組可能會用到的模板
2. 配置檔案
在路徑:/etc/puppet/modules/cron/manifests下
Vi init.pp
###功能說明:初始化檔案
class cron {
case $operatingsystem {
CentOS: {
include cron::base
include cron::crontabs
include cron::addcron
}
RedHat: {
include cron::base
include cron::crontabs
include cron::addcron
}
}
}
root@SHWT11 manifests]# vi base.pp
##功能說明:安裝cron包並啟動服務
class cron::base {
package { cron:
name => $operatingsystem ? {
Ubuntu => "cron",
redhat => "vixie-cron",
centos => "vixie-cron",
},
ensure => present,
}
service { crond:
name => $operatingsystem ? {
ubuntu => "cron",
redhat => "crond",
centos => "crond",
},
ensure => running,
enable => true,
pattern => cron,
require => Package["cron"], ##處理依賴關係
}
模組是清單、資源、檔案、模板、類以及定義的容器,一個模組應該包含配置一個特定的 應用程式所需的所有配置
Vi crontabs.pp
####功能說明,安裝crontabs包
class cron::crontabs {
package { crontabs:
name => $operatingsystem ? {
redhat => "crontabs",
centos => "crontabs",
},
ensure => present,
}
}
上面三個檔案是安裝cron,並確保cron 服務處於執行(running)狀態
[root@SHWT11 manifests]# vi rsync_bash.pp
##功能說明:新增crontab定時任務(每天8點到晚上22點,每半小時執行一次)
class cron::rsync_bash {
cron {bash:
command => "/bin/bash /root/vol_disk_check.sh",
user => "root",
hour => "8-22",
minute => "*/30";
}
}
安裝環境:CentOS 5.4 X86_64位
Server:
1.先安裝ruby語言包、ruby標準庫、ruby shadow庫
yum install -y ruby ruby-libs ruby-shadow
2.需要新增EPRL庫,來支援puppet
wget http:// dl.Fedoraproject.org /pub/epel/5Server/x86_64/epel-release-5-4.noarch.rpm
如果你的系統是centos 6版本的或者是centos 5版本但是是32位的,可以到網站:
dl.fedoraproject.org查詢你們想要的
3.在master主機上,需要從EPEL倉庫安裝puppet、puppet-server facter
rpm -Uvh epel-release-5-4.noarch.rpm
puppet軟體包含了agent程式,puppet-server軟體包含了master程式,facter軟體包含了系統盤點工具facter,可以獲取agent主機的相關資訊
yum install -y puppet puppet-server facter
之後啟動puppet master
service puppetmaster start
啟動 puppetmaster:[確定]
這樣,puppet server上的安裝算是完成了
現在,master和agent都安裝好了,解釋一下/etc/puppet/下的檔案含義:
Puppet.conf puppet的服務端配置檔案
Auth.conf client訪問puppet server的acl配置檔案
Fileserver.conf puppet server作為檔案伺服器的ACL配置檔案
Manidests puppet的指令碼目錄檔案目錄
Site.pp 檔案告訴puppet去哪裡尋找並載入指定的客戶端配置,如果缺少此檔案,puppet會啟動失敗的
防火牆設定:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8140 -j ACCEPT
需要重啟防火牆,service iptables restart
配置好防火牆後,就可以允許client訪問puppet
配置第一個agent
Client:
同樣需要安裝epel-release-5-4.noarch.rpm
下載:wget
rpm -ivh epel-release-5-4.noarch.rpm
在agent端只需要安裝:
yum install puppet facter
Client 請求:puppet agent --server=puppet.xxxx.com(puppet master域名) --verbose --no-daemonize
解釋:引數
--server 指定了需要連線puppet master 的域名或者主機名,儘量使用域名吧,否則不同網路之間無法透過主機名相通
--no-daemonize 使得puppet 客戶端執行在前端並輸出日誌到標準輸出
--verbose 使客戶端輸出更詳細的日誌
Server端需要相應這個請求:
檢視:puppet cert –list
"shwt08" (94:BC:4A:FA:31:E1:10:9F:3C:4D:B3:E8:CB:A4:F8:B9)
puppet cert --sign shwt08
notice: Signed certificate request for shwt08
notice: Removing file Puppet::SSL::CertificateRequest shwt08 at '/var/lib/puppet/ssl/ca/requests/shwt08.pem'
當然,如果我們有很多個client的話,都需要一個個去認證確實是一件很麻煩的事情,所以,修改puppet.conf檔案,實現自動化認證
在全域性”[mian]”下新增一行:
autosign = true
重啟master
service puppetmaster restart
重新新增一個clint,驗證
需要先去wget 後需要編輯/etc/hosts
之後puppet agent --server=puppet.xxxx.com --no-daemonize –verbose 發現是沒有問題的
建立第一個配置:
在master上修改兩個檔案:
目錄/etc/puppet/manifests下:
nodes.pp site.pp 如果沒有這兩個檔案就手工建吧
# vim nodes.pp
node default {
file{"/root/vol_disk_check.sh":
source => "puppet:///files/vol_disk_check.sh",
owner => "root",
group => "root",
mode => 755;
}
}
# vim site.pp
import 'nodes.pp'
至於具體的解釋說明,等下章再詳細的解釋下,這篇文章主要來闡明puppet安裝及簡易同步檔案的效果
測試來同步一個檔案
puppet agent --server=puppet.xxxx.com --test -v
ok,從詳細資訊中,得知client已經同步檔案了
下面說遇到的兩個錯誤:
錯誤1:
err: Could not retrieve catalog from remote server: hostname not match with the server certificate
解決辦法:
在master和client上檢視是否二者日期不同步
在client上配置/etc/hosts檔案,編輯新增puppet.xxxx.com 解析(IP 域名)
錯誤2:
err: Could not retrieve catalog from remote server: Connection refused - connect(2)
解決辦法:
這個是因為master 上的主程式沒有啟動的緣故,到master上檢視程式puppetmaster 發現提示程式已死,
service puppetmaster status
puppetmasterd 已死,但 pid 檔案仍存
檢視了下配置檔案,發現是在修改fileserver.conf時修改錯誤導致的,也就是說當遇到這個錯誤提示的時候,要檢視/etc/puppet目錄下的主配置檔案是否有問題
檔案fileserver.conf 中:[files]
path /var/lib/puppet/files
這個path下是放置我們要同步更新的檔案
簡單模組配置和應用
1.建立一個模組的目錄和檔案結構,,這個結構將位於/etc/puppet/modules 目錄下,我們將模組命名為cron,模組名(類名)必須是普通的字元,只能包含字母、數字、下劃線以及短橫線每一個模組都需要一個特定的目錄結構和一個叫做init.pp 的檔案,這個目錄結構能幫助puppet自動載入模組。為了載入模組,puppet會檢查一系列被稱為模組路徑的目錄,模組路徑是有配置檔案puppet.conf中[main]段的modulepath 配置設定的,預設情況下,路徑在/etc/puppet/modules下
模組結構:
mkdir -p /etc/puppet/modules/cron/{files,manifests,templates}
我們會將大多數的配置指令碼檔案放在/etc/puppet/modules/cron/manifests目錄下, manifests是puppet的指令碼目錄檔案目錄
建立init.pp檔案,init.pp檔案時模組的核心,每個模組必須擁有一個init.pp檔案,files目錄使用者存放哪些屬於模組一部分的檔案,templates則是放置模組可能會用到的模板
2. 配置檔案
在路徑:/etc/puppet/modules/cron/manifests下
Vi init.pp
###功能說明:初始化檔案
class cron {
case $operatingsystem {
CentOS: {
include cron::base
include cron::crontabs
include cron::addcron
}
RedHat: {
include cron::base
include cron::crontabs
include cron::addcron
}
}
}
root@SHWT11 manifests]# vi base.pp
##功能說明:安裝cron包並啟動服務
class cron::base {
package { cron:
name => $operatingsystem ? {
Ubuntu => "cron",
redhat => "vixie-cron",
centos => "vixie-cron",
},
ensure => present,
}
service { crond:
name => $operatingsystem ? {
ubuntu => "cron",
redhat => "crond",
centos => "crond",
},
ensure => running,
enable => true,
pattern => cron,
require => Package["cron"], ##處理依賴關係
}
模組是清單、資源、檔案、模板、類以及定義的容器,一個模組應該包含配置一個特定的 應用程式所需的所有配置
Vi crontabs.pp
####功能說明,安裝crontabs包
class cron::crontabs {
package { crontabs:
name => $operatingsystem ? {
redhat => "crontabs",
centos => "crontabs",
},
ensure => present,
}
}
上面三個檔案是安裝cron,並確保cron 服務處於執行(running)狀態
[root@SHWT11 manifests]# vi rsync_bash.pp
##功能說明:新增crontab定時任務(每天8點到晚上22點,每半小時執行一次)
class cron::rsync_bash {
cron {bash:
command => "/bin/bash /root/vol_disk_check.sh",
user => "root",
hour => "8-22",
minute => "*/30";
}
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9034054/viewspace-2054847/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 自動化運維之puppet的學習(如何找到你需要的模組)運維
- Puppet實戰
- puppet 安裝
- puppet單機模型模型
- puppet完全攻略(一)puppet應用原理及安裝部署
- puppet之安裝配置
- puppet組織架構架構
- puppet確保程式執行
- puppet agent定時同步更新
- puppet之crontab時間同步
- puppet package資源詳解Package
- puppet file資源詳解
- puppet自動認證授權
- puppet rpm方式的安裝
- puppet之java批量安裝案例Java
- puppet之mysql批量安裝案例MySql
- linux下puppet的“資源”管理Linux
- 學習學習再學習
- 自動化運維工具之Puppet master/agent模型、站點清單和puppet多環境設定運維AST模型
- puppet替換檔案中的string
- 自動化運維工具之Puppet模組運維
- puppet進階指南——service資源詳解
- kickstart之批量安裝puppet客戶端客戶端
- Puppet Openstack Mitaka Design Summit小結MIT
- 如何在 Ubuntu 15.04 中安裝 puppetUbuntu
- CentOS 6.3下Puppet安裝配置筆記CentOS筆記
- 深度學習——學習目錄——學習中……深度學習
- python xmind轉Excel(puppet洛洛原創)PythonExcel
- Puppet+foreman 本地yum安裝手冊REM
- 深度學習(一)深度學習學習資料深度學習
- 深度學習學習框架深度學習框架
- 強化學習-學習筆記3 | 策略學習強化學習筆記
- 2021年DevOps生態報告 | Puppetdev
- 學習產品快報09 | “CSDN學習”:增加學習提醒,提示學習不忘記
- 【強化學習】強化學習/增強學習/再勵學習介紹強化學習
- 學習ThinkPHP,學習OneThinkPHP
- 前端學習之Bootstrap學習前端boot
- 學而習之,成就學習