3 puppet清單定義資源的語法

2022-08-18 10:54:08 字數 4313 閱讀 8101

1.先看兩個例子:

a.建立乙個檔案

file
b.建立乙個使用者

user
2.定義資源的語法如下:

type
3.語法格式注意事項總結:

a.在定義乙個資源的時候,需要先指定其型別(type),常用的有package,service,user,file,exec等,指明資源型別以後,type後面要使用」」括起,表示管理員可以在」」中定義資源的屬性值 在」」的開始處,我們需要設定資源的標題,也就是資源的」title」,我們可以把資源的title理解成用來標識資源的id,

b.同一型別的資源中,資源的」title」不能重複,如果兩個相同型別的資源的title重複了,當我們執行對應的清單時,則會報錯,不同型別的資源的title可以相同

c.』title』最好使用小寫字母定義

d.』title』後面不要忘記冒號」:」,這是固定語法,沒什麼好解釋的

e.定義完」title」以後,則需要定義當前資源的屬性資訊了,還拿我們user資源為例,linux中的使用者往往會有屬主屬組、附屬組、家目錄等概念,這些概念在puppet中都被稱為user資源的屬性,當然,不同的資源型別所包含的屬性可能不同,但是有些屬性是比較通用的,比如,名稱屬性,不管是user、service、package這些資源都有名稱屬性,在我們使用的第乙個puppet清單中,user資源的第乙個屬性就是名稱屬性,如你所見,name關鍵字就表示名稱屬性

f.為屬性賦值時要使用」 => 」 符號

g.資源屬性之間需要用逗號」,」隔開,最後乙個屬性後面的逗號可以省略

4.檢視puppet中支援的所有資源

[root@lvs-master manifests]# puppet describe -l

these are the types known to puppet:

computer - computer object management using directoryser ...

cron - installs and manages cron jobs

exec - executes external commands

file - manages files, including their content,

......

可以看到,puppet支援不少資源,換句話說,我們能夠通過puppet操作不少東西,那麼,如果我想要檢視某個資源都支援哪些屬性,這些屬性都有什麼作用,該怎麼檢視呢

5.檢視資源詳細資訊(作用,屬性等等)

user

====

manage users. this type is mostly built to manage system

users, so it

is lacking some features useful for managing normal

users.

this resource type uses the prescribed native tools for creating

groups and generally uses posix apis for retrieving information

about them. it does

not directly modify `/etc/passwd` or anything.

**autorequires:** if puppet is managing the user's primary group (as

provided in

the `gid` attribute), the user resource will autorequire

that group. if puppet is managing any role accounts corresponding to

theuser's roles, the user resource will autorequire those role accounts.

parameters

----------

- **allowdupe**

whether to allow duplicate uids. defaults to `false`.

valid values are `true`, `false`, `yes`, `no`.

- **attribute_membership**

......

[root@lvs-master manifests]# puppet describe -s user
可以從上圖看出,簡短格式的返回資訊中,主要返回了3個部分的資訊。

第一部分描述了user資源的主要作用。

第二部分描述了user資源包含的所有屬性。

第三部分列出了user資源所能夠支援的providers, 還記得我們曾經提到的」資源抽象層」的概念嗎,管理員不用關心被管理伺服器上的作業系統版本,puppet會通過」資源抽象層」自動判斷底層的作業系統以及系統發行版,然後選擇對應的預設的providers對資源進行操作,而配置管理員只需要寫好清單即可,我們舉個例子,仍然拿我們的user資源為例,當我們執行清單的時候,如果被管理伺服器上面部署的是redhat/centos操縱系統,那麼puppet會自動呼叫useradd去新增zsythink使用者,如果被管理伺服器上面安裝的是hpux作業系統,puppet會自動呼叫hpuxuseradd去新增使用者, 剛才提到的hpuxuseradd和useradd都屬於providers,它們是user資源在不同作業系統平台中的提供者,它們是為了簡化管理員操作而存在的,大部分情況下,我們不用過分關心它們,我們只要明白它們會為我們服務即可。

我們還能夠使用」puppet describe -s -m type」命令檢視資源的元屬性,比如,使用」puppet describe -s -m user」命令檢視user資源的元屬性,我們後面會對元屬性的使用進行示例並解釋它們,此處,我們只要知道怎樣檢視即可

5.特殊屬性

name屬性是一種特殊屬性,是可省的,當省略name屬性時,資源的名稱即為title的值,但它不是唯一的一種特殊屬性,資源的特殊屬性有如下三類:

a.名稱變數

英文原稱為namevar,大多數資源的namevar為name屬性(注意,name屬性和namevar沒有直接關係,只是碰巧他們都包含英文單詞」name」而已),因為大多數資源的name屬性是namevar,所以省略name屬性時,資源的name與title中的值相同,但是並不是所有資源的namevar都是name屬性,某些資源中,並沒有name屬性,而且它的namevar可能是其他屬性,當省略namevar對應的屬性時,其屬性值與資源的title值相同,這樣說不容易理解,等到例項演示時,自然會明白。

b.ensure屬性

此屬性用於定義資源的目標狀態,不同的資源,ensure對應的值不同,比如,user資源的ensure值可以設定為present,表示使用者必須存在,也可以設定為absent表示使用者不能存在(刪除使用者),而service資源也有ensure屬性,但是在service資源中,ensure屬性的值往往被設定為stopped或者running,當然,大部分資源的ensure的值,還是present或者absent。

c.元引數

或者稱為 「元屬性」,英文為metaparameter,當我們為資源設定元屬性時,目的往往是希望通過元屬性影響puppet的行為,什麼意思呢,我們想象乙個場景,比如,我們想要安裝乙個nginx並且啟動它,那麼我們至少會用到兩個資源,package資源與service資源,但是,service資源會依賴到package資源,因為如果nginx連安裝都沒有安裝,就更別提啟動服務了,所以,service資源是依賴於package資源的,這個時候,我們就可以在service資源中新增require屬性,通過require屬性指定service資源依賴的package資源,require屬性就是元屬性(元引數)的一種,我們也可以在package資源中新增before屬性,表示package資源在service資源之前被處理,我們再在想乙個場景,當配置檔案發生改變時,我們往往有可能會重新同步配置檔案,並且要過載配置檔案,那麼,就需要在配置檔案發生改變時,通知服務過載配置,所以,有可能用會用到notify屬性,反過來,我們也可以讓service資源訂閱某個資源,當被訂閱的資源被操作時,service資源也會被操作,這個時候就需要用到subscribe屬性,before、require、notify、subscribe這些屬性都屬於元屬性,我們通過它們,可以影響puppet操作資源的順序以及puppet的操作行為,當然,puppet還有其它的一些元屬性,等我們用到的時候再進行總結,如果有興趣,可以檢視官網手冊:

錯誤清單3

虛函式如果有返回型別的時候可以直接返回0。以下為例 getperim 和 getarea 函式定義的時候都是 return 0 include include define pi 3.141592653 using namespace std 請編寫乙個抽象類shape,在此基礎上派生出類recta...

c 中預定義異常列表清單

程式設計的時候,能夠捕捉指定的異常是很好的習慣,但是那麼多的異常名稱卻是很難記住,這裡羅列出來,以便參考。system.object system.exception system.systemexception system.accessviolationexception.system.argu...

3 排列清單控制標籤

排列清單控制標籤可以建立一般列表,編號列表,加著重號列表,以及定義列表。還可以在一種列表中巢狀另一種列表。對於概括網際網路上的內容,列表是非常方便的。格式 li li li ul 功能 和的屬性 屬性屬性值 說明type 用css取代 disc 實心圓 預設值 square 實心方塊 circle ...