您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關怎么在Linux中借助Puppet和Augeas管理配置的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
雖然Puppet是一款非常獨特而實用的工具,但有些情況下你可能會使用有點不一樣的方法。比如這種情況:修改已經在你的幾臺服務器上,同時在每一臺服務器上又很獨特的配置文件。Puppet實驗室的工作人員同樣認識到了這種情況,已開發出一款名為Augeas的出色工具,它就是專門為這種用途而設計的。
準確地說,在缺少針對特定對象的資源類型(比如處理/etc/hosts條目的主機資源)的情況下,Augeas就可以彌補Puppet功能方面的不足。在這篇實用文章中,你將學會如何使用Augeas,簡化配置文件的管理。
Augeas簡介
Augeas基本上是一種配置編輯工具。它能夠分析采用原生格式的配置文件,并將它們轉變成一棵樹。只要處理這棵樹,并將它保存回成原生配置文件,就可以變更配置。
我們在本教程中要實現什么樣的目的?
我們將安裝和配置Augeas工具,以便與我們之前構建的Puppet服務器配合使用。我們將借助這個工具創建和測試幾個幾種不同的配置,并學習如何合理使用它來管理我們的系統配置。
前提條件
我們需要一個正常運行的Puppet服務器和客戶機環境。要是你還沒有這個環境,請參閱我之前的那篇教程:http://xmodulo.com/manage-configurations-linux-puppet-augeas.html。
可以在我們的CentOS/RHEL標準軟件庫中找到Augeas軟件包。遺憾的是,Puppet使用puppetlabs軟件庫(或EPEL)里面才有的Augeas ruby包裝器。要是你的系統里面還沒有這個軟件庫,使用下面這個命令來添加它:
在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
或者你也可以使用Puppet方式來安裝該軟件包。修改/etc/puppet/manifests/site.pp里面的custom_utils類,以便在軟件包數組里面含有“ruby­augeas”:
class custom_utils { package { ["nmap","telnet","vim­enhanced","traceroute","ruby­augeas"]: ensure => latest, allow_virtual => false, } }
不用Puppet的Augeas
正如文章開頭所講的那樣,Augeas最初并不來自Puppet實驗室,這意味著我們甚至不需要Puppet本身,仍可以使用它。這種方法適用于驗證你的修改和想法,然后將它們應用到你的Puppet環境中。為了讓這種情況成為可能,你需要在系統中安裝一個額外的軟件包。為此,請執行下面這個命令:
# yum install augeas
Puppet Augeas示例
為了便于演示,下面是幾個示例性質的Augeas用例。
管理/etc/sudoers文件
1. 將sudo權限添加到wheel群組
這個例子將顯示如何在你的GNU/Linux系統中為群組%wheel添加簡單的sudo權限。
# Install sudo package package { 'sudo': ensure => installed, # ensure sudo package installed } # Allow users belonging to wheel group to use sudo augeas { 'sudo_wheel': context => '/files/etc/sudoers', # The target file is /etc/sudoers changes => [ # allow wheel users to use 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
2. 添加命令別名
下面這部分將顯示如何定義你可以在sudoers文件里面使用的命令別名。
# Create new alias SERVICES which contains some basic privileged commands augeas { 'sudo_cmdalias': context => '/files/etc/sudoers', # The target file is /etc/sudoers changes => [ "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
想了解關于/etc/sudoers的更多信息,請訪問官方說明文檔:http://augeas.net/docs/references/lenses/files/sudoers-aug.html。
為群組添加用戶
想使用Augeas為群組添加用戶,你可能需要在gid字段后面或者在上一個用戶后面添加新的用戶。為了該示例,我們將使用群組SVN。可以使用下面這個命令來做到這一點:
在Puppet中:
augeas { 'augeas_mod_group: context => '/files/etc/group', # The target file is /etc/group changes => [ "ins user after svn/*[self::gid or self::user][last()]", "set svn/user[last()] john", ] }
使用augtool:
augtool> ins user after /files/etc/group/svn/*[self::gid or self::user][last()] augtool> set /files/etc/group/svn/user[last()] john
感謝各位的閱讀!關于“怎么在Linux中借助Puppet和Augeas管理配置”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。