乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      庖丁解Puppet之操作記實(shí)

       Kitsdk 2014-04-05

      庖丁解Puppet之
      初級入門篇

       

      系統(tǒng)環(huán)境:

      軟件包:

      環(huán)境安裝:
      Puppet 是用ruby語言寫的,所以要安裝ruby環(huán)境,服務(wù)器端與客戶端都要安裝,我這的環(huán)境沒有裝ruby,所以用yum安裝一下。要精細(xì)化安裝的話,需要安裝4個包。
      [root@testsns ~]# yum –y install ruby*

      精細(xì)化安裝Ruby環(huán)境
      1.puppet是基于ruby開發(fā)。所以要安裝ruby語言環(huán)境。
      找到相應(yīng)版本對應(yīng)的ruby的rpm包(下以redhat 5.4為例)
      rpm –ivh ruby-libs-1.8.5-5.el5_2.3.i386.rpm
      rpm –ivh ruby-1.8.5-5.el5_2.3.i386.rpm
      2.Rdoc的安裝。
      如果需要查看幫助文檔,需要安裝此包。有一點(diǎn)特殊說明,此包在AS4上未找到相關(guān)的rpm。所以建議服務(wù)端使用5.0以上的版本。
      rpm –ivh ruby-irb-1.8.5-5.el5_2.3.i386.rpm
      rpm –ivh ruby-rdoc-1.8.5-5.el5_2.3.i386.rpm

      Server端安裝:
      1、時間同步
      ntpdate time.nist.gov

      2、安裝Facter用來獲取客戶端系統(tǒng)信息(如hostname,ip,OS-Version,fqdn等)
      [root@testsns opt]# tar zxvf facter-1.6.5.tar.gz
      [root@testsns opt]# cd facter-1.6.5
      [root@testsns facter-1.6.5]# ruby install.rb
      [root@testsns facter-1.6.5]# cd ..

      [root@testsns opt]# tar zxvf puppet-2.6.13.tar.gz
      [root@testsns opt]# cd puppet-2.6.13
      [root@testsns puppet-2.6.13]# ruby install.rb
      [root@testsns puppet-2.6.13]# cp conf/auth.conf /etc/puppet/
      [root@testsns puppet-2.6.13]# cp conf/redhat/fileserver.conf /etc/puppet/
      [root@testsns puppet-2.6.13]# cp conf/redhat/puppet.conf /etc/puppet/
      [root@testsns puppet-2.6.13]# cp conf/redhat/server.init /etc/init.d/puppetmaster
      [root@testsns puppet-2.6.13]# chmod +x /etc/init.d/puppetmaster
      [root@testsns puppet-2.6.13]# chkconfig --add puppetmaster
      [root@testsns puppet-2.6.13]# chkconfig puppetmaster on
      [root@testsns puppet-2.6.13]# mkdir -p /etc/puppet/manifests
      3、生成pupput用戶
      [root@testsns opt]# puppetmasterd --mkusers
      4、啟動
      [root@testsns opt]# /etc/init.d/puppetmaster start

      Slave端安裝:

      1、時間同步

      ntpdate time.nist.gov

         和服務(wù)器端安裝方法一樣,先安裝ruby環(huán)境,再安裝facterpuppet,只是在puppet拷貝配置文件時要注意。

      2、安裝Facter用來獲取客戶端系統(tǒng)信息(hostname,ip,OS-Version,fqdn)

       

      ---內(nèi)容如下
      [agent]
      Listen = true
      Server = testsns
      ---
      [root@nfstest puppet-2.6.13]# vi /etc/puppet/namespaceauth.conf
      ----內(nèi)容如下
      [fileserver]
      allow *
      [puppetmaster]
      allow *
      [puppetrunner]
      allow *
      [puppetbucket]
      allow *
      [puppetreports]
      allow *
      [resource]
      allow *
      ----

      3、生成用戶和rra目錄
      [root@nfstest puppet]# puppetmasterd --mkusers
      4、啟動
      [root@nfstest puppet]# /etc/init.d/puppet start
      5、修改hosts
         修改雙方的/etc/hosts文件,添加各自的IP地址對應(yīng)的主機(jī)名,生產(chǎn)環(huán)境做內(nèi)部DNS比較好,不用修改每臺服務(wù)器的hosts文件。
      192.168.133.42 nfstest
      192.168.133.44 testsns
      6、開放端口
         關(guān)閉雙方的防火墻及selinux,或開放8140(server服務(wù)器端口),8139(client服務(wù)器端口)。相互作ping hostname telnet hostname 8140 test hostname 8139等,看網(wǎng)絡(luò)及hosts是否正常

      認(rèn)證:
      客戶端發(fā)送請求
      Puppeted --test –server testsns
      服務(wù)器查看
      Puppetca –list
      服務(wù)器端簽名
      Puppetca –s –a //對所有客戶端全部簽名
      Puppetca –s nfstest //只簽名某個客戶端
       

      功能模塊介紹及實(shí)例操作

      文件分發(fā):
      通過puppet可以向被管理機(jī)上推送文件,方法是使用file類型的source屬性
      1:修改/etc/puppet、fileserver.conf
      2:修改/etc/puppet/manifests/ site.pp
      實(shí)例:要把server服務(wù)器上/opt目錄下的mysql-5.1.49-linux-i686-icc-glibc23.tar.gz傳輸至client服務(wù)器的/opt目錄下,文件名不變。
      第一步:Vi /etc/puppet/fileserver.conf
      [files]
      path /opt/
      allow 192.168.133.0/24

      第二步:vi /etc/puppet/manifests/site.pp
      file
      { "/opt/mysql-5.1.49-linux-i686-icc-glibc23.tar.gz":
      source => "puppet://$puppetserver/files/mysql-5.1.49-linux-i686-icc-glibc23.tar.gz",
      }

      第三步:
      在client客戶端執(zhí)行更新命令
      puppetd --test --server testsns

          此處“$puppetserver”是puppet Server端的名稱,即hostname,網(wǎng)上教程都是在hosts里指定,生產(chǎn)環(huán)境下用內(nèi)部的DNS上作解析,像我公司一個www平臺就有70臺linux服務(wù)器,一個個添加hosts,不搞死人去。

      修改文件屬性:
         實(shí)例:把/tmp/dd142/ puppet-2.6.13.tar.gz文件的權(quán)限改為puppet用戶,并設(shè)置權(quán)限為666。
      第一步:編輯Server端的site.pp
      vi /etc/puppet/manifests/site.pp
      ---內(nèi)容如下
      file
      { "/tmp/dd142/puppet-2.6.13.tar.gz":
      owner => "puppet",
      group => "puppet",
      mode => 666,
      }
      ----
      第二步:在client端執(zhí)行命令
      puppetd --test --server testsns

      執(zhí)行SHELL命令或shell腳本:
          實(shí)例:通過puppet分發(fā)執(zhí)行shell腳本,在客戶端的opt目錄下新建一目錄shelldir。
      第一步:編輯Server端的site.pp
      vi /etc/puppet/manifests/site.pp

      exec { "exec-mkdir":
      cwd => "/opt",
      command => "sh /opt/lgh.sh",
      user => "root",
      path => "/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin",
      }
      第二步:在client端編輯一shell腳本

      第三步:在client端執(zhí)行命令
      puppetd --test --server testsns
      在/opt目錄下查看shelldir有沒有建立。

      服務(wù)檢查及修改:
          可以通過puppet對一些服務(wù)進(jìn)行檢查。puppet是通過service命令操作的。所以,只能針對在/etc/init.d/目錄下的服務(wù)
      實(shí)例:把客戶端的防火墻起來(原來是關(guān)閉的)
      vi /etc/puppet/manifests/site.pp //清空site.pp,再新建

      service
      { iptables:
      ensure => "running",
      }

      cron計(jì)劃任務(wù):
      接上面的shell程序?qū)嵗?,?7:30執(zhí)行/opt/lgh.sh。
      cron { "cron-shell": #title部分,可用來作為注釋。
      command => "sh /opt/lgh.sh" #要執(zhí)行的命令
      user => "root", #添加到root用戶下的crontab中
      minute => "30", #即第一個星號
      hour => "17" #即第二個星號
      }
      登錄客戶端查看效果

      擴(kuò)展閱讀:

      在開源世界里,有很多配置工具可供選擇,這個領(lǐng)域一些關(guān)鍵的產(chǎn)品有:
      Puppet(http://puppet./):
      Ruby寫成的配置管理工具,使用C/S架構(gòu),使用declarative language配置客戶端。
      Cfengine(http://www.):
      最先發(fā)布的開源配置工具之一,1993年發(fā)布,同樣是C/S架構(gòu),通常應(yīng)用于教育機(jī)構(gòu)。
      LCFG(http://www./):
      C/S架構(gòu)的配置管理工具,使用XML定義配置。
      Bcfg2
      Python編寫的C/S架構(gòu)的配置管理工具,使用規(guī)格書和客戶機(jī)響應(yīng)配置目標(biāo)主機(jī)。
      本文檔致力于描述使用Puppet管理你的主機(jī)、應(yīng)用程序、后臺程序和各種服務(wù)。

      在此只講Puppet,因?yàn)樗唵?,?qiáng)大,流行。

      什么是puppet?

          puppet是一種Linux、Unix平臺的集中配置管理系統(tǒng),使用自有的puppet描述語言,可管理配置文件、用戶、cron任務(wù)、軟件包、系統(tǒng)服務(wù)等。puppet把這些系統(tǒng)實(shí)體稱之為資源,puppet的設(shè)計(jì)目標(biāo)是簡化對這些資源的管理以及妥善處理資源間的依賴關(guān)系。
           puppet采用C/S星狀的結(jié)構(gòu),所有的客戶端和一個或幾個服務(wù)器交互。每個客戶端周期的(默認(rèn)半個小時)向服務(wù)器發(fā)送請求,獲得其最新的配置信息,保證和該配置信息同步。每個puppet客戶端每半小時(可以設(shè)置)連接一次服務(wù)器端, 下載最新的配置文件,并且嚴(yán)格按照配置文件來配置服務(wù)器. 配置完成以后,puppet客戶端可以反饋給服務(wù)器端一個消息. 如果出錯,也會給服務(wù)器端反饋一個消息.
      為什么要開發(fā)puppet
          系統(tǒng)管理員都喜歡自己寫點(diǎn)小工具來讓自己的工作完成的更快或者更好, 不管是在大企業(yè)管理大量的服務(wù)器還是只管理兩三臺機(jī)器. 但是很少人會把他們的工具發(fā)布出來. 也就是是說極少有工具能被重用,或者說很多工具就只能在所在的組織內(nèi)部有用.拷貝給別的組織,他們也用不上. 也就是說,每個系統(tǒng)管理員,在一個新的公司,都會另起爐灶開發(fā)一套基于ssh,for循環(huán)的"系統(tǒng)"來幫助自己完成系統(tǒng)管理任務(wù).
          開發(fā)puppet是為了讓系統(tǒng)管理員可以相互交流和共享成熟的工具,避免重復(fù)的勞動.通過以下兩個特性來實(shí)現(xiàn)這一目標(biāo):
      提供一個簡潔的但是強(qiáng)大的框架來完成系統(tǒng)管理任務(wù)
      系統(tǒng)管理任務(wù)可以描述成puppet語言,因此可以相互分享代碼,就像分享其他語言的代碼一樣,比如python, c等
          因此,作為系統(tǒng)管理員的你可以更快的完成工作,因?yàn)槟憧梢杂胮uppet來處理所有的管理細(xì)節(jié). 甚至你還可以下載其他管理員的puppet代碼來讓你的工作完成的更快.
      使用puppet 的穩(wěn)定性
           puppet與其他手工操作工具有一個最大的區(qū)別就是 puppet的配置具有穩(wěn)定性,因此你可以多次執(zhí)行puppet, 一旦你更新了你的配置文件,puppet就會根據(jù)配置文件來更改你的機(jī)器配置,通常每30分鐘檢查一次. puppet會讓你的系統(tǒng)狀態(tài)同配置文件所要求的狀態(tài)保持一致. 比如你配置文件里面要求ssh服務(wù)必須開啟. 假如不小心ssh服務(wù)被關(guān)閉了,那么下一次執(zhí)行puppet的時候,puppet會發(fā)現(xiàn)這個異常,然后會開啟 ssh 服務(wù). 以使系統(tǒng)狀態(tài)和配置文件保持一致.puppet就象一個魔術(shù)師,會讓你的混亂的系統(tǒng)收斂到puppet配置文件所想要的狀態(tài).
           可以使用puppet管理服務(wù)器的整個生命周期,從初始化到退役.不同于傳統(tǒng)的例如sun的Jumpstart或者redhat的Kickstart, puppet可以長年讓服務(wù)器保持最新狀態(tài).只要一開始就正確的配置他們,然后再也不用去管他們.通常puppet用戶只需要給機(jī)器安裝好puppet并讓他們運(yùn)行,然后剩余的工作都由puppet來完成.

      puppet的細(xì)節(jié)和原理

           puppet的目的是讓你只集中于你要管理的目標(biāo),而忽略實(shí)現(xiàn)的細(xì)節(jié),例如命令名,參數(shù)或者文件格式. puppet把系統(tǒng)里面的用戶,軟件包,服務(wù) 看作是"資源", puppet的作用就是管理這些資源以及資源之間的相互聯(lián)系.
           底層支撐工具 Providers,puppet有很多的資源類型,例如文件,用戶,軟件包,服務(wù), 不同的操作系統(tǒng)上對資源的管理命令是不一樣的,例如debian下面用apt-get安裝軟件,redhat下面用yum安裝軟件. 因此puppet 對同一資源的管理可以有多個實(shí)現(xiàn),配置資源的時候,可以明確的指定用什么provider. 例如在redhat上配置一個package資源的時候,可以指定provider是yum.
      Facter變量
           在puppet客戶端分析代碼的時候,會把從facter傳送過來的對應(yīng)的值賦值給變量. 你可以單獨(dú)手工執(zhí)行facter這個命令,這個命令會打印出它所收集到的關(guān)于主機(jī)的信息,例如ip地址等等. facter把收集到值發(fā)送給puppet服務(wù)器端,服務(wù)器端就可以根據(jù)不同的條件來對不同的節(jié)點(diǎn)機(jī)器生成不同的puppet配置文件. 最重要的一個就是服務(wù)器的主機(jī)名.

      工作方式與流程

           puppet既可以在單機(jī)上使用,也可以以c/s結(jié)構(gòu)使用.在大規(guī)模使用puppet的情況下,通常使用c/s結(jié)構(gòu).在這種結(jié)構(gòu)中puppet客戶端只是指運(yùn)行puppet的服務(wù)器,puppet服務(wù)器端是只運(yùn)行puppetmaster的服務(wù)器.
           puppet客戶端首先會連接到puppet服務(wù)器端,并且通過facter工具把客戶端的基本配置信息發(fā)送給服務(wù)器端. 服務(wù)器端通過分析客戶端的主機(jī)名,通過node 定義,找到該主機(jī)的配置代碼,然后編譯配置代碼,把編譯好的配置代碼發(fā)回客戶端,客戶端執(zhí)行代碼完成配置.并且把代碼執(zhí)行情況反饋給puppet服務(wù)器端.
      修改系統(tǒng)配置
           puppet 通過管理資源的方式來管理系統(tǒng), 例如管理某個軟件是否要安裝,是安裝最新的還是安裝了就行. 管理某個服務(wù)是否開啟, 管理某個文件的屬性,內(nèi)容等等. 所有的資源都有對應(yīng)的幾個屬性可以設(shè)置. 通過設(shè)置屬性的方式來管理資源. 有一種特殊的屬性可以用在所有的資源上面,這種屬性叫做 metaparams ( 元參數(shù)或者元屬性).

      資源之間的關(guān)系

          支持資源之間的關(guān)系配置是puppet的關(guān)鍵特性之一. 一個資源的變更可以對另一個資源產(chǎn)生一個動作.例如 /etc/apache.conf這個資源有改動,可以讓/etc/init.d/apache 這個資源 reload一下.假如一個資源依賴另一個資源,那么puppet會優(yōu)先配置被依賴的資源,因此如果你的配置文件沒有準(zhǔn)備好,對應(yīng)的服務(wù)是不會先啟動的.

      puppet 語言資源

          puppet的全部就是管理資源,因此puppet語言的焦點(diǎn)就是處理這些資源,下面是一個基本的管理單個資源的例子.
      file {"/etc/hosts": owner = root, group = root, mode = 644}
           上面的列子給出了定義一個資源所需要的所有組件,類型,名字和屬性. 定義了一個 file 資源, 資源的title(標(biāo)題)是 "/etc/hosts", 資源的屬性里面設(shè)置了該文件屬于那個用戶和組,以及文件的權(quán)限.
      也可以在一個大括號里面定義多個資源,通過分號來區(qū)分.
      避免重復(fù)配置
           puppet的編譯器會避免在不同的代碼段里面管理同一個資源, 如果在不同的代碼段對同一個資源進(jìn)行配置,執(zhí)行puppet的時候你會得到一個語法錯誤.puppet探測這種沖突的情況是通過判斷資源類型和資源的title(標(biāo)題); 如果兩個資源有相同的資源類型和title; 那么就認(rèn)為這兩個資源是表示同一個資源.

          你可以把多個相關(guān)的資源定義在一起,組成一個類.可以在其他的代碼段include這個類.puppet還支持有限制的類的繼承,作用就是在子類里面的屬性可以覆蓋父類里面的屬性.
      字符串
          幾乎所有的東西和符號在puppet里面都被看作是字符串,包括數(shù)字和布爾值. 但是如果你用引號把true和false引起來,他們會被當(dāng)做字符串,例如你想賦值給某個資性"yes"的 字符串.
      變量
      puppet除facter變量外,也可以自定義變量,但不允許你在同一個類里面對一個變量進(jìn)行兩次賦值.
      $myvar = value123
      條件語句
          Puppet支持常見的條件語句,使得你能根據(jù)不同的條件導(dǎo)入不同的資源定義。如if、case、另外puppet從版本0.24.6開始支持比較運(yùn)算符。
      數(shù)組
         puppet 非常有限的支持?jǐn)?shù)組這種類型,你可以創(chuàng)建數(shù)組,并且給他們賦值,但是你不能刪除它們.數(shù)組用的最多的情況就是上面ssh例子里面,資源依賴哪種情況. 或者是一次管理多個相同類型的資源.例如:user { [bin, adm]: ensure => present }
      函數(shù)
          puppet提供一些有用的函數(shù),例如template利用erb模板來生成文件內(nèi)容,這樣就可以根據(jù)不同主機(jī)的情況,生成不同的配置文件.例如配置squid的內(nèi)存緩存大小,可以利用facter返回的內(nèi)存值做一個簡單的數(shù)學(xué)計(jì)算,然后寫入到squid的配置文件,就是通過template來完成的. 另外一個函數(shù)include 可以讀入另外的puppet配置文件或者類.這樣可以把puppet的文件分割的更有規(guī)律.
      節(jié)點(diǎn)
          最后一個關(guān)于puppet語言的語法是節(jié)點(diǎn)定義"node", 節(jié)點(diǎn)定義很象類定義,也支持繼承特性. 當(dāng)一個節(jié)點(diǎn)(puppet客戶端)連接到puppet服務(wù)器端,puppet解析器會查找這個節(jié)點(diǎn)的node代碼片斷,然后利用這個代碼片斷來生成該客戶端的配置代碼. puppet里面主機(jī)名來標(biāo)明一個主機(jī),因此主機(jī)名在puppet里面相當(dāng)重要. 如果puppet找不到匹配該主機(jī)名的node定義,就會用默認(rèn)的節(jié)點(diǎn)定義來配置該主機(jī). 在node里面使用主機(jī)名,需要用單引號把主機(jī)名括起來.
      node 'server1' { include nginx }
          在上面的代碼中,如果server1這個主機(jī)連接到puppet服務(wù)器,puppet服務(wù)器就會按照nginx的代碼來配置這臺服務(wù)器.
      自定義資源
          puppet里面有一個非常有用的語法結(jié)構(gòu),叫做define, 通過define可以把多個資源包裝成一個資源,或者把一個資源包裝成一個模型,便于使用.例如,在debian里面管理一個apache虛擬機(jī)非常簡單,把一個虛擬主機(jī)的配置文件放到/etc/sites-available/里面,然后做一個符號鏈接到/etc/sites-enabled目錄. 你可以為你每個虛擬主機(jī)復(fù)制同樣的配置代碼.

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多