溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么在Linux中借助Puppet和Augeas管理配置

發(fā)布時(shí)間:2021-10-23 09:12:54 來(lái)源:億速云 閱讀:172 作者:小新 欄目:系統(tǒng)運(yùn)維

這篇文章給大家分享的是有關(guān)怎么在Linux中借助Puppet和Augeas管理配置的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。

雖然Puppet是一款非常獨(dú)特而實(shí)用的工具,但有些情況下你可能會(huì)使用有點(diǎn)不一樣的方法。比如這種情況:修改已經(jīng)在你的幾臺(tái)服務(wù)器上,同時(shí)在每一臺(tái)服務(wù)器上又很獨(dú)特的配置文件。Puppet實(shí)驗(yàn)室的工作人員同樣認(rèn)識(shí)到了這種情況,已開(kāi)發(fā)出一款名為Augeas的出色工具,它就是專(zhuān)門(mén)為這種用途而設(shè)計(jì)的。

怎么在Linux中借助Puppet和Augeas管理配置

準(zhǔn)確地說(shuō),在缺少針對(duì)特定對(duì)象的資源類(lèi)型(比如處理/etc/hosts條目的主機(jī)資源)的情況下,Augeas就可以彌補(bǔ)Puppet功能方面的不足。在這篇實(shí)用文章中,你將學(xué)會(huì)如何使用Augeas,簡(jiǎn)化配置文件的管理。

Augeas簡(jiǎn)介

Augeas基本上是一種配置編輯工具。它能夠分析采用原生格式的配置文件,并將它們轉(zhuǎn)變成一棵樹(shù)。只要處理這棵樹(shù),并將它保存回成原生配置文件,就可以變更配置。

我們?cè)诒窘坛讨幸獙?shí)現(xiàn)什么樣的目的?

我們將安裝和配置Augeas工具,以便與我們之前構(gòu)建的Puppet服務(wù)器配合使用。我們將借助這個(gè)工具創(chuàng)建和測(cè)試幾個(gè)幾種不同的配置,并學(xué)習(xí)如何合理使用它來(lái)管理我們的系統(tǒng)配置。

前提條件

我們需要一個(gè)正常運(yùn)行的Puppet服務(wù)器和客戶機(jī)環(huán)境。要是你還沒(méi)有這個(gè)環(huán)境,請(qǐng)參閱我之前的那篇教程:http://xmodulo.com/manage-configurations-linux-puppet-augeas.html。

可以在我們的CentOS/RHEL標(biāo)準(zhǔn)軟件庫(kù)中找到Augeas軟件包。遺憾的是,Puppet使用puppetlabs軟件庫(kù)(或EPEL)里面才有的Augeas ruby包裝器。要是你的系統(tǒng)里面還沒(méi)有這個(gè)軟件庫(kù),使用下面這個(gè)命令來(lái)添加它:

在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

在成功添加了這個(gè)軟件庫(kù)后,在你的系統(tǒng)中安裝Ruby­Augeas:

# yum install ruby­augeas

或者你也可以使用Puppet方式來(lái)安裝該軟件包。修改/etc/puppet/manifests/site.pp里面的custom_utils類(lèi),以便在軟件包數(shù)組里面含有“ruby­augeas”:

class custom_utils {   package { ["nmap","telnet","vim­enhanced","traceroute","ruby­augeas"]:   ensure => latest,  allow_virtual => false,  }  }

不用Puppet的Augeas

正如文章開(kāi)頭所講的那樣,Augeas最初并不來(lái)自Puppet實(shí)驗(yàn)室,這意味著我們甚至不需要Puppet本身,仍可以使用它。這種方法適用于驗(yàn)證你的修改和想法,然后將它們應(yīng)用到你的Puppet環(huán)境中。為了讓這種情況成為可能,你需要在系統(tǒng)中安裝一個(gè)額外的軟件包。為此,請(qǐng)執(zhí)行下面這個(gè)命令:

# yum install augeas

Puppet Augeas示例

為了便于演示,下面是幾個(gè)示例性質(zhì)的Augeas用例。

管理/etc/sudoers文件

1. 將sudo權(quán)限添加到wheel群組

這個(gè)例子將顯示如何在你的GNU/Linux系統(tǒng)中為群組%wheel添加簡(jiǎn)單的sudo權(quán)限。

# 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',       ]   }

現(xiàn)在不妨解釋代碼的作用: spec指定了/etc/sudoers中的用戶部分,[user]定義了來(lái)自數(shù)組的特定用戶,斜杠(/)后面的所有定義是該用戶的子部分。所以在典型的配置中,這將被解讀為:

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

這就相當(dāng)于/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命令別名的語(yǔ)法相當(dāng)簡(jiǎn)單:Cmnd_Alias定義了命令別名的部分,[alias/name]將所有綁定至特定的別名名稱(chēng),/alias/name SERVICES定義了實(shí)際的別名名稱(chēng),而alias/command是應(yīng)該屬于該別名一部分的所有命令組成的數(shù)組。該命令的輸出結(jié)果將是如下:

Cmnd_Alias SERVICES = /sbin/service , /sbin/chkconfig , /bin/hostname , /sbin/shutdown

想了解關(guān)于/etc/sudoers的更多信息,請(qǐng)?jiān)L問(wèn)官方說(shuō)明文檔:http://augeas.net/docs/references/lenses/files/sudoers-aug.html。

為群組添加用戶

想使用Augeas為群組添加用戶,你可能需要在gid字段后面或者在上一個(gè)用戶后面添加新的用戶。為了該示例,我們將使用群組SVN。可以使用下面這個(gè)命令來(lái)做到這一點(diǎn):

在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

感謝各位的閱讀!關(guān)于“怎么在Linux中借助Puppet和Augeas管理配置”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI