puppet安裝文檔_第1頁(yè)
puppet安裝文檔_第2頁(yè)
puppet安裝文檔_第3頁(yè)
puppet安裝文檔_第4頁(yè)
puppet安裝文檔_第5頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Puppet安裝文檔1 什么是puppet?puppet是一個(gè)開(kāi)源的新一代集中化配置管理工具,它由自己所聲明的語(yǔ)言表達(dá)系統(tǒng)配置,通過(guò)客戶(hù)端與服務(wù)端之間的連接,維護(hù)著關(guān)系庫(kù)??晒芾砼渲梦募⒂脩?hù)、Cron、軟件包、系統(tǒng)服務(wù)等,puppet把這些統(tǒng)稱(chēng)為“資源”。Puppet的設(shè)計(jì)目標(biāo)就是簡(jiǎn)化對(duì)這些資源的管理以及妥善處理資源之間的依賴(lài)關(guān)系。2 Puppet組織結(jié)構(gòu)|-Auth.conf#ACL權(quán)限控制文件|-Fileserver.conf#文件服務(wù)配置文件|-Manifests#節(jié)點(diǎn)存儲(chǔ)目錄(puppet會(huì)首先加載site.pp)|-Site.pp#定義puppet變量及默認(rèn)配置|-Modules#

2、模塊目錄|-Nginx#以Nginx為例|-Manifests|-Init.pp#模塊主配置文件,定義class相關(guān)信息。讀取模塊后先讀取它|-Templates|-Nginx.conf.erb#模板配置文件(erb為主)|-Namespaceauth.conf#命名空間配置文件(配置權(quán)限)|-Puppet.conf#puppet主配置文件|-tagmail.conf#郵件報(bào)告配置文件3 Puppet安裝與配置1. 設(shè)置主機(jī)名,域名解析或指定hosts文件將服務(wù)端、客戶(hù)端的域名-IP地址寫(xiě)入hosts文件#服務(wù)器端hosts文件#11 puppet- puppet-se

3、rver2. puppet需Ruby支持yum -y install ruby ruby-libs ruby-shadow3. 安裝facter puppet puppet-server#Centos 5.XWget rpm -ivh puppetlabs-release-el-5.noarch.rpm#Centos 6.Xwget rpm -ivh puppetlabs-release-el-6.noarch.rpmyum clean all#服務(wù)端安裝yum -y install facter puppet-server#客戶(hù)端安裝yum -y install puppet facter(

4、客戶(hù)端安裝)4. 啟動(dòng)puppet/etc/init.dpuppetmaster start或/etc/init.d/puppet start(客戶(hù)端啟動(dòng))5. 檢查安裝版本:Ruby -vPuppet -VFacter -v6. 配置puppet #服務(wù)端a) Vi /etc/puppet/puppet.conf #添加一行服務(wù)端主機(jī)名master server = puppet-certname = puppet- #客戶(hù)端b)客戶(hù)端向服務(wù)端請(qǐng)求證書(shū) Vi /etc/puppet/puppet.conf #添加一行服務(wù)端主機(jī)名 #server = puppet-c)#客戶(hù)端Puppet a

5、gent -test #客戶(hù)端執(zhí)行,請(qǐng)求證書(shū)簽名認(rèn)證#服務(wù)端對(duì)客戶(hù)端證書(shū)簽名:Puppet cert -list #查看所有客戶(hù)端請(qǐng)求證書(shū)簽名Puppet cert sign agent.pip.co #同意單個(gè)客戶(hù)端證書(shū)簽名請(qǐng)求puppet cert sign -all #同意所有客戶(hù)端證書(shū)簽名請(qǐng)求4 各類(lèi)資源常用屬性參數(shù):1. 文件資源a) Ensure:默認(rèn)為目錄或文件,需聲明,值可以為absent(刪除),文件file,目錄directory,文件present(檢查文件是否存在,不存在則創(chuàng)建)b) Content:文件內(nèi)容,與source和target屬性互斥c) Force:強(qiáng)制刪

6、除文件、軟鏈接及目錄d) Owner:用戶(hù)名及用戶(hù)IDe) Group:指定該文件的用戶(hù)組,可以是組名或Gidf) Link:軟鏈接g) Mode:文件權(quán)限配置h) Path:文件路徑,必須用雙引號(hào)i) Targe:當(dāng)文件類(lèi)型為link時(shí),需使用target指定目標(biāo)文件j) Type:只讀狀態(tài)檢查文件類(lèi)型2. 用戶(hù)資源a) Ensure:默認(rèn)屬性,指定用戶(hù)是否存在,創(chuàng)建用戶(hù)使用present,刪除用戶(hù)使用absentb) Allowupe:是否允許使用同一uid,值為true or falsec) Comment:對(duì)用戶(hù)的描述d) Expiry:過(guò)期時(shí)間e) Gid:該用戶(hù)的用戶(hù)組gid,可以

7、是數(shù)字及組名f) Groups:指定該用戶(hù)屬于哪些組,有多個(gè)組建議使用數(shù)組,如 g1,g2 g) Home:用戶(hù)家目錄h) Shell:登陸時(shí)指定登陸Shell,不支持windowsi) Uid:指定用戶(hù)uid,不指定則自動(dòng)選擇j) Password:指定用戶(hù)密碼,填寫(xiě)已使用sha1加密過(guò)的字符串,一般復(fù)制/etc/shadow文件中用戶(hù)對(duì)應(yīng)的密碼k) Managehome:是否創(chuàng)建用戶(hù)家目錄,值為true or false3. 用戶(hù)組資源a) Ensure:默認(rèn)屬性,創(chuàng)建present,刪除absentb) Name:組名c) Allowupe:是否允許使用同一gidd) Gid:用戶(hù)組gi

8、d,不指定則自動(dòng)選擇e) Members:用戶(hù)組成員4. 服務(wù)管理a) Ensure:服務(wù)狀態(tài),運(yùn)行為true,停止為falseb) Enable:是否設(shè)置為開(kāi)機(jī)啟動(dòng),值為true或falsec) Hasrestart:指出管理腳本是否支持restart參數(shù),如不支持則使用stop/start實(shí)現(xiàn)restart效果,值為true或falsed) Hasstatus:指出管理腳本是否支持status參數(shù),值為true或falsee) Name:服務(wù)名稱(chēng)f) Path:指定查找init腳本的路徑g) Restart:重啟命令,可指定h) Start:?jiǎn)?dòng)命令,可指定i) Status:狀態(tài)命令,可

9、指定j) Stop:停止命令,可指定5. 執(zhí)行命令a) Command:執(zhí)行的命令,必須是完整合法的命令b) Creates:指定命令生成文件,只會(huì)在所指定的文件不存在的情況下才執(zhí)行c) Cwd:指定命令執(zhí)行的當(dāng)前目錄,如不存在則執(zhí)行失敗d) Path:執(zhí)行命令的搜索路徑e) Group:運(yùn)行命令的組f) Onlyif:參數(shù)中設(shè)置的命令返回0才執(zhí)行g(shù)) Refreshonly:該參數(shù)可以使命令變成僅刷新觸發(fā)h) Tires:命令嘗試執(zhí)行次數(shù)i) Timeout:命令執(zhí)行超時(shí)時(shí)間j) Unless:結(jié)束代碼k) User:執(zhí)行命令的用戶(hù)6. 軟件資源a) Ensure:設(shè)置軟件包安裝狀態(tài)。安裝i

10、nstalled/present,卸載absent,干凈移出軟件pureged,安裝軟件包最新版本latest,安裝某個(gè)版本直接填寫(xiě)版本號(hào)b) Allowcdrom:允許使用cdrom做為軟件源c) Provider:指定安裝包提供方式,yum/rpm/apt/gem等d) Source:指定軟件源e) Name:軟件包名f) Install_options:以數(shù)組形式附加到安裝選項(xiàng),通常使用INSTALLDIR來(lái)指定安裝路徑7. Crona) Ensure:基本屬性,添加為present,刪除absentb) Command:需要執(zhí)行的命令,通常用雙引號(hào)引起來(lái)c) Hour:小時(shí),可選,0-

11、23d) Minute:分鐘 0-59e) Month:月 1-12f) Monthday:日 1-31g) Weekday:周中的天,0-7h) User:執(zhí)行的用戶(hù)i) Target:指定用戶(hù)cron項(xiàng),默認(rèn)為shellj) Path:環(huán)境變量5 Puppet配置實(shí)例:方便管理,puppet配置文件采用下列目錄結(jié)構(gòu):/etc/puppet/manifests/nodes下存放節(jié)點(diǎn)信息/etc/puppet/modules 下存放模塊信息1.mkdir -p /etc/puppet/modules/test/manifests,templates,files2.mkdir -p /etc/p

12、uppet/manifests/nodesManifests #存放模塊的主配置文件init.ppTemplates#如果init.pp使用templates函數(shù),會(huì)讀取此目錄下的ERB模板Files#存放文件資源例1:在各客戶(hù)端主機(jī)/tmp/目錄下創(chuàng)建文件$hostname,內(nèi)容為:Hello,WorldCd /etc/puppet/modules/test/manifests Vi init.ppclass test file "/tmp/$hostname.txt": content => "Hello,World" #$hostname變量

13、通過(guò)facter命令獲#取 Vi ./templates/test.erbhostname <%= fqdn %> #獲取$hostname變量值創(chuàng)建節(jié)點(diǎn)需要的模塊信息Cd /etc/puppet/manifests/nodes/Vi agent.pip.co.ppnode 'puppet1.pip.co' #每個(gè)客戶(hù)端節(jié)點(diǎn)只執(zhí)行node “xxxx”相對(duì)應(yīng)的代碼 include test #加載test類(lèi)node 'puppet2.pip.co' file "/tmp/$hostname.txt": content =>

14、"I'm the second node" node 'puppet3.pip.co' file "/tmp/$hostname.txt": content => "I'm the third node" 創(chuàng)建主配置文件site.ppVi /etc/puppet/manifests/init.ppImport “nodes/*.pp”檢查配置文件語(yǔ)法Puppet parser validate /etc/puppet/modules/test/manifests/init.ppPuppet par

15、ser validate /etc/puppet/manifests/site.pp客戶(hù)端執(zhí)行同步,如不手動(dòng)執(zhí)行,客戶(hù)端會(huì)每30分鐘執(zhí)行一次同步(加上-noop參數(shù),只驗(yàn)證配置不執(zhí)行代碼)Puppet agent -test -noop 分別在3個(gè)節(jié)點(diǎn)檢查生成的內(nèi)容Node1: /tmp/puppet1.txt#結(jié)果為:Hello,WorldNode1: /tmp/puppet1.txt#結(jié)果為:Im the second nodeNode1: /tmp/puppet1.txt#結(jié)果為:Im the third node例2:同步文件:Cp /etc/ssh/sshd_config /etc/

16、puppet/modules/test/files/Vi /etc/puppet/modules/test/manifests/init.ppclass test file "/tmp/sshd_conf": ensure => present, #此處可選項(xiàng)為:present|absent|directory|file|link#present 檢查文件是否存在,不存在則創(chuàng)建#absent檢查文件是否存在,存在則刪除#directory 指定這是一個(gè)目錄,不存在則創(chuàng)建source => 'puppet:/puppet-master.pip.co/mod

17、ules/test/sshd_conf'#模塊目錄下的files目錄不用寫(xiě)在路徑中 vi /etc/puppet/manifests/nodes/agent.pip.co.ppnode 'puppet1.pip.co' include test #加載test類(lèi)node 'puppet2.pip.co' include test node 'puppet3.pip.co' include test vi /etc/puppet/fileserver.conf添加以下內(nèi)容:filespath /etc/puppet/modules/test

18、/filesallow *重啟puppetmaster/etc/init.d/puppetmaster restart客戶(hù)端同步文件Puppet agent -test例三:當(dāng)某個(gè)文件更新后觸發(fā)服務(wù)重啟以httpd為例:Mkdir -p /etc/puppet/modules/httpd/files,manifests,templatescp /etc/httpd/conf/httpd.conf /etc/puppet/modules/httpd/files/并修改相關(guān)參數(shù)Vi /etc/puppet/modules/httpd/manifests/init.ppclass httpd #類(lèi)名

19、必須與模塊名一致 file "/etc/httpd/conf/httpd.conf": ensure => present, source => 'puppet:/puppet-master.pip.co/modules/httpd/httpd.conf', notify => Service "httpd" service 'httpd': ensure => running,#確保服務(wù)運(yùn)行狀態(tài) enable => true,#指定服務(wù)是否開(kāi)機(jī)啟動(dòng) hasrestart => true

20、,#管理腳本是否支持restart參數(shù) hasstatus => true,#管理腳本是否支持status參數(shù) Subscribe => File“/etc/httpd/conf/httpd.conf” vi /etc/puppet/fileserver.conf添加以下內(nèi)容:httpdpath /etc/puppet/modules/httpd/filesallow *Vi /etc/puppet/manifests/nodes/agent.pip.co.ppnode 'puppet1.pip.co' include httpd #加載test類(lèi)node '

21、;puppet2.pip.co' include httpdnode 'puppet3.pip.co' include httpd重啟puppetmaster/etc/init.d/puppetmaster restart客戶(hù)端同步Puppet agent -test例四:用戶(hù)管理新建模塊userMkdir -p /etc/puppet/modules/user/manifests修改sshd_config文件,添加ssh登陸用戶(hù)限制創(chuàng)建模塊主配置文件init.ppVi /etc/puppet/modules/user/manifests/init.ppclass us

22、er user 'yhzhao': ensure => present,#檢查用戶(hù),不存則創(chuàng)建 uid => 501,#指定用戶(hù)UID為501 managehome => true,#是否創(chuàng)建家目錄 home => '/home/yhzhao',#指定用戶(hù)家目錄 shell =>'/bin/bash',#指定用戶(hù)shell password => '$6$8em9vhd9Rl5H17sB$tyDZz2kHd8kW2Kk7VxxTtKfqQXglQ/29W74RC2Q6asUvLT/.lcRccrAbTV

23、9qmKaniMkaGMYRpiy2ZUJTZrvr9/' #用戶(hù)登陸密碼SHA1加密,一般使用SHADOW #文件中的密碼 file "/etc/ssh/sshd_config": ensure => present, source => puppet:/puppet-master.pip.co/modules/test/sshd_config,subscribe => User"yhzhao" #用戶(hù)創(chuàng)建完成后更新sshd_config文件 service 'sshd': ensure => runni

24、ng, enable => true,hasrestart => true,hasstatus => true,subscribe => File"/etc/ssh/sshd_config" #sshd_config文件更新后重啟sshd服務(wù) 修改主配置文件Vi /etc/puppet/manifests/nodes/agent.pip.co.ppnode 'puppet1.pip.co' include user #加載user類(lèi)node 'puppet2.pip.co' include usernode '

25、puppet3.pip.co' include user測(cè)試語(yǔ)法并預(yù)執(zhí)行Puppet agent -test -noop客戶(hù)端執(zhí)行Puppet agent -test驗(yàn)證登陸例五 軟件管理(更新openssh到最新版本并重啟服務(wù))新建模塊packageMkdir -p /etc/puppet/modules/package/manifests創(chuàng)建模塊主配置文件init.ppVi /etc/puppet/modules/package/manifests/init.ppclass package case $:operatingsystem #根據(jù)操作系統(tǒng)不同選用不同的軟件包 cento

26、s: $package_list = 'openssh-server' solaris: $package_list = SUNWsshr, SUNWsshu default: fail("Modules does not support $:operatingsystem") package $package_list: ensure => latest, #latest表示更新到最新版本,installed:表示安裝該軟件,absent:表示 #卸載該軟件pureged:表示干凈移除該軟件 #此處也可填寫(xiě)版本號(hào),填寫(xiě)版本號(hào)則安裝此版本的軟件包not

27、ify => Service“sshd” #更新后通知sshd服務(wù) service sshd: ensure => running, enable => true, hasrestart => true, hasstatus => true, subscribe => Package"$package_list" #更新后重啟sshd服務(wù) 修改主配置文件Vi /etc/puppet/manifests/nodes/agent.pip.co.ppnode 'puppet1.pip.co' include package #加

28、載package類(lèi)node 'puppet2.pip.co' include packagenode 'puppet3.pip.co' include package測(cè)試語(yǔ)法并預(yù)執(zhí)行Puppet agent -test -noop客戶(hù)端執(zhí)行Puppet agent -test驗(yàn)證Rpm -qa|grep openssh例六 服務(wù)管理(一般依賴(lài)于其它資源變動(dòng)時(shí)觸發(fā))新建模塊servicesMkdir -p /etc/puppet/modules/services/manifests創(chuàng)建模塊主配置文件init.ppVi /etc/puppet/modules/ser

29、vices/manifests/init.ppclass services service "mysqld": ensure => "running", enable => true, path => "/etc/init.d", 修改主配置文件Vi /etc/puppet/manifests/nodes/agent.pip.co.ppnode 'puppet1.pip.co' include services #加載services類(lèi)node 'puppet2.pip.co' inc

30、lude servicesnode 'puppet3.pip.co' include services測(cè)試語(yǔ)法并預(yù)執(zhí)行Puppet agent -test -noop客戶(hù)端執(zhí)行Puppet agent -test驗(yàn)證/etc/init.d/mysqld status例七 計(jì)劃任務(wù)管理(每周二7點(diǎn)執(zhí)行時(shí)間同步)新建模塊servicesMkdir -p /etc/puppet/modules/cron/manifests創(chuàng)建模塊主配置文件init.ppVi /etc/puppet/modules/cron/manifests/init.ppclass cron cron "

31、;ntpdate": command => "/usr/sbin/ntpdate ", user => root, hour => 7, minute => 0, weekday => 2, 修改主配置文件Vi /etc/puppet/manifests/nodes/agent.pip.co.ppnode 'puppet1.pip.co' include cron #加載cron類(lèi)node 'puppet2.pip.co' include cronnode 'puppet3.pip.co' include cron測(cè)試語(yǔ)法并預(yù)執(zhí)行Puppet agent -test -noop客戶(hù)端執(zhí)行Pu

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論