天天看點

puppet 之 file 資源管理

File 資源

1 管理系統本地檔案

u設定檔案權限和屬性

u管理檔案内容,可以基于模闆的内容管理

u支援管理目錄

u從遠端伺服器複制整個目錄到本地

  依賴

  該資源類型沒有依賴

  平台

  該資源類型支援所有平台

2 參數

  backup

決定檔案的内容在被修改前是否進行備份。利用filebucket對檔案進行備份,按檔案的md5sum進行歸類,便于恢複檔案的時候找到檔案。可以把檔案備份到puppet用戶端,也可以通過設定backpup => bucket_name 把檔案備份到網絡上的其他機器上.如果backup的值

是一個點号”.”開頭的字元串,puppet會把檔案備份在同一個目錄下,備份檔案的擴充名就是backup裡面的那個字元串.如果設定backup=>false,該檔案不做備份

 puppet 自動在本地建立目錄,并且把要修改的檔案備份到那裡,如果要備用到網絡上面的機器進行備份,必須地filebucket進行配置,例如

  filebucket { main:

         server =>puppet

     }

puppetmaster 預設也會建立一個filebucket,一旦你按照上面的代碼進行了配置,同時也需要在其他代碼中就可以使用網絡上面的filebucket

file { “/my/file”:

   soruce => “/path/in/nfs/or/something”,

    backup => main

    }

上面的代碼會讓檔案備份到puppetmaster所在機器上,即puppet的主伺服器

這樣就不用每個機器上都建立一個本地的filebucket,每個版本的檔案通常隻備份一次,通常你可以手工的回複你備份的檔案

checksum

怎樣檢查檔案是否被修改,這個狀态用來在複制檔案的時候使用,這裡有幾種檢測檔案的方式,包括md5,mtime,time,timestamp等,預設的檢查是用md5

content

把檔案的内容設定為content參數後面的字元串,新行,tab,空格可用escaped syntax 表示.這個參數主要用于提供一種簡潔的機遇模闆的檔案内容。例如

     defineresolve(namserver1,nameserver2,domain,search) {

      $str = “search$search

            domain$domain

            nameserver$nameserver1

            nameserver$nameserver2”

       file {“/etc/resolv.conf”:

      content => $str

}

ensure

如果檔案本來不存在是否要建立檔案,可以設定的值是absent和present,file和directory,如果指定present,就不會檢查該檔案是否存在,如果不存在就建立該檔案,如果指定absent,

就會删除該檔案(如果recurse => true,就會删除目錄)如果提供的值不是上面的4種,那麼就會建立一個檔案的符号連結,下面的代碼就将建立一個符号連結

  file {“/etc/inetd.conf”:

       ensure =>”/etc/inet/inetd.conf”

也可以設定相對路徑的符号連結

file {“/etc/inetd.conf”:

     ensure => “inet/inetd.conf”

force

 force 目前的唯一作用是用在把一個目錄變成一個連結,可用的值四ture 和false

group

指定該檔案的使用者組,值可以是gid 或者組名

ignore

當recursion方法複制一個目錄的時候,可以用ignore來設定過濾條件,符合過濾條件的檔案不被複制,使用ruby自帶的比對法則,是以shell級别的過濾表達式完全支援,如[A-G]*

links

定義操作符合連結檔案。可以設定的值是follow和manage;檔案拷貝的時候,設定follow,會拷貝檔案的内容,而不是指拷貝符号連結本身,如果設定manage,會拷貝符合連結本身

mode

  mode用于設定檔案的權限

owner

設定檔案的屬主

path

指定要管理檔案的路徑,必須用引号引起來,這也是一個資源的namevar,通常path等于資源的title

recurse

設定是否以及如何進行遞歸操作,可以設定的值是false,true,inf,remote

recurselimit

遞歸的深度,設定的值可以比對/^[0-9]+$/

replace

是否覆寫已經存在的檔案。可以設定的值是(true,yes),(false,no) 注true和yes一樣,false和no是一樣

Selrange

檔案内容是否屬于Selinux那個組成部分,隻适于開啟了Selinux的機器

SElrole

檔案所屬的Selinux角色

SEltype

檔案所屬的Selinux type

SELuser

檔案所屬的Selinux user

source

拷貝一個檔案覆寫目前檔案,用checksum來判斷是否有必要進行複制,可以設定的值是一個引用的完整的檔案路徑,或者是URI,目前支援的UIL隻有puppet和file,這是一個對檔案常用的操作,可以讓puppet 修改系統的配置檔案

class sendmail  {

  file { “/etc/mail/sendmail.cf”;

       source => “puppet://server/module/sendmail.cf”

sourceselect

選擇拷貝目錄級别,預設,source四遞歸的

target

是為建立連結的。可以設定的值為notlink

type

檢查檔案是否隻讀

本文轉自 freehat08 51CTO部落格,原文連結:http://blog.51cto.com/freehat/1263687,如需轉載請自行聯系原作者