天天看點

如何用Puppet和Augeas管理Linux配置如何用Puppet和Augeas管理Linux配置

augeas可被認為填補了puppet能力的空白,比如在其中一個指定對象的資源類型(例如用于維護/etc/hosts中的條目的主機資源)還不可用時。在這個文檔中,您将學習如何使用augeas來減輕你管理配置檔案的負擔。

<a target="_blank"></a>

如何用Puppet和Augeas管理Linux配置如何用Puppet和Augeas管理Linux配置

augeas基本上就是一個配置編輯工具。它以他們原生的格式解析配置檔案并且将它們轉換成樹。配置的更改可以通過操作樹來完成,并可以以原生配置檔案格式儲存配置。

在centos/rhel 6.5上:

# rpm -­ivh https://yum.puppetlabs.com/el/6.5/products/x86_64/puppetlabs­release­6­10.noarch.rpm

在centos/rhel 7上:

# rpm -­ivh https://yum.puppetlabs.com/el/7/products/x86_64/puppetlabs­release­7­10.noarch.rpm

在你成功地安裝了這個倉庫後,在你的系統中安裝ruby­augeas:

# yum install ruby­augeas

class custom_utils {

package { ["nmap","telnet","vim­enhanced","traceroute","ruby­augeas"]:

ensure =&gt; latest,

allow_virtual =&gt; false,

}

如我先前所說,最初augeas并不是來自puppet實驗室,這意味着即使沒有puppet本身我們仍然可以使用它。這種方法可在你将它們部署到puppet環境之前,驗證你的修改和想法是否是正确的。要做到這一點,你需要在你的系統中安裝一個額外的軟體包。請執行以下指令:

# yum install augeas

用于示範,這裡有幾個augeas使用案例。

給wheel組加上sudo權限。

這個例子會向你展示如何在你的gnu/linux系統中為%wheel組加上sudo權限。

# 安裝sudo包

package { 'sudo':

ensure =&gt; installed, # 確定sudo包已安裝

# 允許使用者屬于wheel組來使用sudo

augeas { 'sudo_wheel':

context =&gt; '/files/etc/sudoers', # 目标檔案是 /etc/sudoers

changes =&gt; [

# 允許wheel使用者使用sudo

'set spec[user = "%wheel"]/user %wheel',

'set spec[user = "%wheel"]/host_group/host all',

'set spec[user = "%wheel"]/host_group/command all',

'set spec[user = "%wheel"]/host_group/command/runas_user all',

]

現在來解釋這些代碼做了什麼:spec定義了/etc/sudoers中的使用者段,[user]定義了數組中給定的使用者,所有的定義放在該使用者的斜杠( / ) 後那部分。是以在典型的配置中這個可以這麼表達:

user host_group/host host_group/command host_group/command/runas_user

這個将被轉換成/etc/sudoers下的這一行:

%wheel all = (all) all

添加指令别稱

下面這部分會向你展示如何定義指令别名,它可以在你的sudoer檔案中使用。

# 建立新的service别名,包含了一些基本的特權指令。

augeas { 'sudo_cmdalias':

"set cmnd_alias[alias/name = 'services']/alias/name services",

"set cmnd_alias[alias/name = 'services']/alias/command[1] /sbin/service",

"set cmnd_alias[alias/name = 'services']/alias/command[2] /sbin/chkconfig",

"set cmnd_alias[alias/name = 'services']/alias/command[3] /bin/hostname",

"set cmnd_alias[alias/name = 'services']/alias/command[4] /sbin/shutdown",

sudo指令别名的文法很簡單:cmnd_alias定義了指令别名字段,[alias/name]綁定所有給定的别名,/alias/name services 定義真實的别名,alias/command 是屬于該别名的所有指令的數組。以上将被轉換如下:

cmnd_alias services = /sbin/service , /sbin/chkconfig , /bin/hostname , /sbin/shutdown

要使用augeas向組中添加使用者,你也許要添加一個新使用者,不管是排在 gid 字段還是最後的使用者 uid 之後。我們在這個例子中使用svn組。這可以通過下面的指令達成:

在puppet中:

augeas { 'augeas_mod_group:

context =&gt; '/files/etc/group', #目标檔案是 /etc/group

"ins user after svn/*[self::gid or self::user][last()]",

"set svn/user[last()] john",

使用 augtool:

augtool&gt; ins user after /files/etc/group/svn/*[self::gid or self::user][last()] augtool&gt; set /files/etc/group/svn/user[last()] john

目前為止,你應該對如何在puppet項目中使用augeas有點明白了。随意地試一下,你肯定需要浏覽官方的augeas文檔。這會幫助你了解如何在你的個人項目中正确地使用augeas,并且它會讓你知道可以用它節省多少時間。

如有任何問題,歡迎在下面的評論中釋出,我會盡力解答和向你建議。

原文釋出時間:2014-11-25

本文來自雲栖合作夥伴“linux中國”

繼續閱讀