puppet安裝與使用--配置文件及常用資源

                        puppet安裝與使用--配置文件及常用資源

安裝完puppet後,然後需要了解下puppet 配置文件和一些常用資源的使用
 1、默認情況下,配置文件位於/etc/puppet目錄下

moudulesnamsapceauth.confyum安裝後沒有,可自行創建

  1).auth.confnamespaceauth.conf應該是一些認證,裏面配置有先生順序
  2).modules目錄,裏面存放一些自定義的模塊,在manifests中調用,在modules某模塊結構如下:
             manifests  #存放代碼,另外init.pp必須存在
             files       #存放用於同步到客戶端的文件
             templates  #存放模板
  3).manifests目錄,裏面存放site.pp 程序主入口
  4).fileserver.conf,文件服務配置文件,格式如下:
    [tools]
    path /etc/puppet/modules/
    allow 
  5). puppet.conf,服務啓動主配置文件
    配置文件命名空間 
    main 通用配置選項
    puppetd 客戶端配置選項
    puppetmasterd 服務端配置選項

    main命名空間選項
    confdir 配置文件目錄,默認在/etc/puppet
    vardir 動態數據目錄,默認在/var/puppet
    logdir 日誌目錄,默認在$vardir/log
    rundir puppet PID目錄,默認在$vardir/run
    statedir state目錄,默認在$vardir/state
    statefile state文件,默認在$statedir/state.yaml
    ssldir SSL證書目錄,默認在$confdir/ssl
    trace 發生錯誤時顯示跟蹤信息,默認false
    filetimeout 檢測配置文件狀態改變的時間週期,單位秒,默認15
    syslogfacility 指定syslog功能爲user級,默認爲daemon

    puppetmasterd命名空間選項
    user 後臺進程執行的用戶
    group 後臺進程執行的組
    mainfestdir mainfests文件存儲目錄,默認爲$confdir/mainfests
    mainfest mainfest站點文件的名字,默認爲site.pp
    bindaddress 後臺進程綁定的網卡地址接口
    masterport 後臺進程執行的端口,默認爲8140

    puppet命名空間選項
    server puppet puppet服務器,默認爲puppet
    runinterval seconds puppet應用配置的時間間隔,默認1800秒(0.5小時)
    puppetport port 後臺進程執行的端口,默認8139

  6).autosign.conf,自動答名,格式如下:
     *                       表示所有
    puppet*                  puppet頭的所有
    192.168.140.0/24    網段
    事先要在puppet.conf[puppetmaster]下填加
    autosign=true   
    autosing=/etc/puppet/autosign.conf 這兩行

2Puppet能管理的資源有很多,常見的也是常用的,有file,exec,package,service,cron(各個資源參數可以用法使用下面命令可以查到,簡單說下常用的參數)

     Puppet describe  --list      查詢所支持的資源
     Puppet describe  file       查看該資源的用法
  1).puppet file資源管理
   【puppet file 參數介紹】   

     backup

決定文件的內容在被修改前是否進行備份利用filebucket對文件進行備份,按文件的md5sum進行歸類,便於恢復文件的時候找到文件.可以把文件備份到 puppet 客戶端,也可以通過設置backpup => bucket_name 把文件備份到網絡上的其他機器如果backup的值是一個點號”.”開頭的字符串,puppet會把文件備份在同一目錄下,備份文件的擴展名就是 bakcup裏面的那個字符串.如果設置 backup => false , 該文件不做備份.

     checksum
   怎樣檢查文件是否被修改,這個狀態用來在複製文件的時候使用這裏有幾種檢測方式,包括md5 ,mtime,time,timestamp.
   默認的檢測是用md5
 
     content
   把文件的內容設置爲content 參數後面的字符串新行,tab,空格可用 escaped syntax 表示

     ensure
   如果文件本來不存在是否要新建文件,可以設置的值是 absentpresent,filedirectory. 如果指定 present,就會檢查該文件是否存在,如果不存在就新建該文件,如果指定是 absent, 就會刪除該文件(如果recurse => true ,就會刪除目錄).

    force
    force 當前的唯一作用是用在把一個目錄變成一個鏈接,可用的值是turefalse

    group
   指定那個該文件的用戶組,值可以是gid或者組名

    ignore
   當用recursion 方法複製一個目錄的時候,可以用ignore來設定過濾條件,符合過濾條件的文件不被複制使用ruby自帶的匹配法則.因此shell級別的過濾表達式完全支持,例如[a-g]*
  
   links
   定義操作符合鏈接文件可以設置的值是followmanage; 文件拷貝的時候,設置follow,會拷貝文件的內容,而不是隻拷貝符合鏈接本身,如果設置成manage ,會拷貝符合鏈接本身.
   
   Mode
   mode用於設置文件的權限
   
   owner
   設置文件的屬主
   
   path
   指定要管理文件的路徑,必須用引號引起來這也是一個資源的 namevar ,通常path 等於資源的title
   
   recurse
   設置是否以及如何進行遞歸操作可以設置的值是 false,true ,inf ,remote
   
   source
    拷貝一個文件覆蓋當前文件,checksum來判斷是否有必要進行復制,可以設置的值是一個引用的完整的文件路徑,或者是URI,當前支持的URI只有puppetfile ; 這是一個對文件常用的操作,可以讓puppet修改系統的配置文件.
    target
   是爲創建鏈接的。可以設置的值爲notlink.
   type 
   檢查文件是否只讀

 2).puppet exec資源管理
  puppet exec 參數介紹】

    command:將會被執行的命令,必須爲被執行命令的絕對路徑,或者得提供該命令的搜索路徑。如果命令被成功執行,所有的輸出會被記錄在實例的正常(normal)日誌裏,但是如果命令執行失敗(既返回值與我們所指定的不同),那麼所有的輸出會在錯誤(err)日誌中被記錄。
這個是exec資源類型的名變量(namevar)。

    creates:
  指定命令所生成的文件。如果提供了這個參數,那麼命令只會在所指定的文件不存在的情況的被執行: 
    cwd:
  指定命令執行的目錄。如果目錄不存在,則命令執行失敗。
    Group
   定義運行命令的用戶組。在不同的平臺下的運行的結果無法確定,由於不同用戶運行命令的時候,變量是不變的,所以這是平臺的問題,而不是RubyPuppet的問題。

   logoutput

   是否記錄輸出。默認會根據exec資源的日誌等級(loglevel) 來記錄輸出。若定義爲on_failure,則僅在命令返回錯誤的時候記錄輸出。可取的值爲:truefalse和其他合法的日誌等級。
 

    Onlyif

    如果這個參數被設定了,則exec只會在onlyif設定的命令返回0時才執行。例如:

    exec { "logrotate": path => "/usr/bin:/usr/sbin:/bin", onlyif => "test `du /var/log/messages | cut -f1` -gt 100000" }

    只有在test返回true的時候logrotate纔會被運行。
     需要注意的是onlyif定義的命令跟主命令遵循同樣的規則,也就是說如果path沒有被設置的話,需要使用絕對路徑。

    除此之外,onlyif還可以接受數組做爲其值,例如:

    onlyif => ["test -f /tmp/file1", "test -f /tmp/file2"]

   上面的代碼限定了只有在所有數組中的條件返回trueexec纔會被執行。

    path

命令執行的搜索路徑。如果path沒有被定義,命令需要使用絕對路徑。路徑可以以數    組或以冒號分隔的形式來定義。

    refresh

    定義如何更新命令。當exec收到一個來自其他資源的事件時,默認只會重新執行一次   命令。不過這個參數允許你定義更新時執行不同的命令。

    refreshonly

  該屬性可以使命令變成僅刷新觸發的,也就是說只有在一個依賴的對象被改變時,命令纔會被執行。僅當命令與其他對象有依賴關係時,這個參數纔有意義。當你要觸發某個行爲時,會顯得很有用:

# Pull down the main aliases file file { "/etc/aliases": source => "puppet://server/module/aliases" } # Rebuild the database, but only when the file changes exec { newaliases: path => ["/usr/bin", "/usr/sbin"], subscribe => File["/etc/aliases"], refreshonly => true }

要注意的是隻有subscribenotify可以促發行爲,而不是require,所以在使用refreshonly時,只有同時使用subscribenotify纔有意義。有效的值爲true, false

unless

如果這個變量被指定了,那麼exec會執行,除非unless所設定的命令返回0?

user

定義運行命令的用戶。 注意如果你使用了這個參數,那麼任何的錯誤輸出不會在當下被捕捉,這是Ruby的一個bug

 
3).puppet package資源管理
 puppet package 參數介紹】

adminfile 

軟件包管理器,通常是爲了安裝軟件包。這個參數只適用於Solarias

allowcdrom
告訴 apt 允許使用cdrom作爲軟件源可以設置成false或者 true

category
軟件包設置的一個只讀的屬性

configfiles
是否保留或者替換軟件的配置文件,大多數軟件不支持這個參數,可設置的值是false,true

description
描述軟件包,軟件包設置的一個只讀屬性

ensure
設置該軟件包應該在什麼狀態. installed 表示要安裝該軟件,也可以寫成present; absent 表示反安裝該軟件,pureged 表示乾淨的移除該軟件,latest 表示安裝軟件包的最新版本.

namevar
該資源的namevar ; 軟件包的名字

   

4).puppet service資源管理
  puppet service 參數介紹】
  binary :可執行文件。這個只用在不支持init腳本的情況下。
  control :用來管理服務的,通常是用在hp-unix系統上。
  enable :服務是否隨開機而啓動,可設置的值爲true,false.
  ensure: 服務是否運行,可設置的值爲running,stopped,也可以用true,false.
  hasrestart: 服務的init腳本是否支持restart參數,可設置的值爲true,false.
  hasstatus :服務的init腳本是否支持status參數,可設置的值爲ture,false.
   manifest Specify a command to config a service,or a path to a manifest to do so.配置服務的命令,或者指定路徑。
  name: 要運行的服務名字。
  path: 指定查找init 腳本的路徑。
  pattern :搜索進程表匹配字符串,用於不支持init的腳本。
  provider The specific backend for provider to use,可設置的值有base, daemontools,init
  restart :重啓服務。
  Start: 開啓服務
  status :服務運行狀態
  stop: 停止服務

5).puppet cron資源管理
  puppet cron 參數】

  command
  crontab要執行的命令環境變量按照系統本地規則進行管理,推薦使用絕對路徑.

  ensure:指定該資源是否啓用,可設置成truefalse

  environment:在crontab環境裏面指定環境變量,例如 PATH=/bin:/usr/bin:/usr/sbin.

  hour 運行crontab的小時,可設置成0-23

  minute:運行crontab的分鐘,可設置成0-59
  month 設置crontab運行的月份,1-12
  monthday:一個月份中的日子,1-31

  name
  crontab的名字,這個名字用於管理員區分不同的crontab,以及puppet管理各種資源關係.

  user

  把該crontab加到那個用戶的crontab列表,默認是運行puppet的用戶

  weekday

  運行crontab的星期數,0-7,週日是爲0.


3簡單使用例子
  puppet程序的主要入口在/etc/puppet/manifests/note.pp中,修改note.pp,如下配置
 node default {

       file {"/tmp/test":

            ensure => "directory";

            "/tmp/test/test.sh":

            ensure => "present",

            mode => 744,

            owner => root,

            content => "#/bin/bash\necho test | mail -s test [email protected]\n"}

       cron {"crontab":

            command => "/tmp/test/test.sh",

            user => root,

            minute => 59,

            hour => 7}

       exec {"test":

            command => "echo test>/tmp/test/test",

            user => "root",

            path => "/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"}

       service {["smb","nfs"]:

            ensure => "stopped"}

       package {"screen":

            ensure => "installed"}

 }
上面簡單例子解釋:對於默認節點,在/tmp/下創建test目錄,在test目錄下再建立文件test.sh,內容爲#/bin/bash  echo test | mail -s test [email protected],屬主爲root,屬性744,並在每天759分執行此腳本,測試exec資源,在/tmp/test下用命令建立test文件,內容爲test,使smb,nfs服務處於停止狀態,安裝screen 


驗證:在服務端puppet1上執行puppetrn puppet3後,到客戶端puppet3上查看

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章