PUB:20140926 How to manage configurations in Linux with Puppet and Augeas

@geekpi
This commit is contained in:
wxy 2014-11-25 16:40:55 +08:00
parent e794d67ce6
commit db81f42bb9

View File

@ -1,9 +1,8 @@
如何用Puppet和Augeas管理Linux配置 如何用Puppet和Augeas管理Linux配置
================================================================================ ================================================================================
虽然[Puppet][1]此文原文原文中曾今做过文件名“20140808 How to install Puppet server and client on CentOS and RHEL.md”如果翻译发布过可修改此链接为发布地址是一个非常独特的和有用的工具在有些情况下你可以使用一点不同的方法。要修改的配置文件已经在几个不同的服务器上且它们在这时是互补相同的。Puppet实验室的人也意识到了这一点并集成了一个伟大的工具称之为[Augeas][2],它是专为这种使用情况而设计的。 虽然[Puppet][1]是一个真正独特的有用工具但在有些情况下你可以使用一点不同的方法来用它。比如你要修改几个服务器上已有的配置文件而且它们彼此稍有不同。Puppet实验室的人也意识到了这一点他们在 Puppet 中集成了一个叫做[Augeas][2]的伟大的工具,它是专为这种使用情况而设计的。
Augeas可被认为填补了Puppet能力的空白比如在其中一个指定对象的资源类型例如用于维护/etc/hosts中的条目的主机资源还不可用时。在这个文档中您将学习如何使用Augeas来减轻你管理配置文件的负担。
Augeas可被认为填补了Puppet能力的缺陷其中一个特定对象的资源类型如主机资源来处理/etc/hosts中的条目还不可用。在这个文档中您将学习如何使用Augeas来减轻你管理配置文件的负担。
### Augeas是什么? ### ### Augeas是什么? ###
@ -11,13 +10,13 @@ Augeas基本上就是一个配置编辑工具。它以他们原生的格式解
### 这篇教程要达成什么目的? ### ### 这篇教程要达成什么目的? ###
我们会安装并配置Augeas用于我们之前构建的Puppet服务器。我们会使用这个工具创建并测试几个不同的配置文件,并学习如何适当地使用它来管理我们的系统配置。 我们会针对[我们之前构建的Puppet服务器][1]安装并配置Augeas。我们会使用这个工具创建并测试几个不同的配置文件,并学习如何适当地使用它来管理我们的系统配置。
### 先决条件 ### ### 前置阅读 ###
我们需要一台工作的Puppet服务器和客户端。如果你还没有请先按照我先前的教程来。 我们需要一台工作的Puppet服务器和客户端。如果你还没有请先按照我先前的[教程][1]来。
Augeas安装包可以在标准CentOS/RHEL仓库中找到。不幸的是Puppet用到的ruby封装的Augeas只在puppetlabs仓库中或者[EPEL][4])中才有。如果你系统中还没有这个仓库,请使用下面的命令: Augeas安装包可以在标准CentOS/RHEL仓库中找到。不幸的是Puppet用到的Augeas的ruby封装只在puppetlabs仓库中或者[EPEL][4])中才有。如果你系统中还没有这个仓库,请使用下面的命令:
在CentOS/RHEL 6.5上: 在CentOS/RHEL 6.5上:
@ -31,7 +30,7 @@ Augeas安装包可以在标准CentOS/RHEL仓库中找到。不幸的是Puppet
# yum install ruby­augeas # yum install ruby­augeas
或者如果你是从我的上一篇教程中继续的使用puppet的方法安装这个包。在/etc/puppet/manifests/site.pp中修改你的custom_utils类在packages这行中加入“ruby­augeas”。 或者如果你是从我的[上一篇教程中继续][1]使用puppet的方法安装这个包。在/etc/puppet/manifests/site.pp中修改你的custom_utils类在packages这行中加入“ruby­augeas”。
class custom_utils { class custom_utils {
package { ["nmap","telnet","vim­enhanced","traceroute","ruby­augeas"]: package { ["nmap","telnet","vim­enhanced","traceroute","ruby­augeas"]:
@ -54,7 +53,7 @@ Augeas安装包可以在标准CentOS/RHEL仓库中找到。不幸的是Puppet
1. 给wheel组加上sudo权限。 1. 给wheel组加上sudo权限。
这个例子会向你战士如何在你的GNU/Linux系统中为%wheel组加上sudo权限。 这个例子会向你展示如何在你的GNU/Linux系统中为%wheel组加上sudo权限。
# 安装sudo包 # 安装sudo包
package { 'sudo': package { 'sudo':
@ -73,7 +72,7 @@ Augeas安装包可以在标准CentOS/RHEL仓库中找到。不幸的是Puppet
] ]
} }
现在来解释这些代码做了什么:**spec**定义了/etc/sudoers中的用户段**[user]**定义了数组中给定的用户,所有的定义的斜杠( / ) 后用户的子部分。因此在典型的配置中这个可以这么表达: 现在来解释这些代码做了什么:**spec**定义了/etc/sudoers中的用户段**[user]**定义了数组中给定的用户,所有的定义放在该用户的斜杠( / ) 后那部分。因此在典型的配置中这个可以这么表达:
user host_group/host host_group/command host_group/command/runas_user user host_group/host host_group/command host_group/command/runas_user
@ -83,7 +82,7 @@ Augeas安装包可以在标准CentOS/RHEL仓库中找到。不幸的是Puppet
2. 添加命令别称 2. 添加命令别称
下面这部分会向你展示如何定义命令别名,可以在你的sudoer文件中使用。 下面这部分会向你展示如何定义命令别名,可以在你的sudoer文件中使用。
# 创建新的SERVICE别名包含了一些基本的特权命令。 # 创建新的SERVICE别名包含了一些基本的特权命令。
augeas { 'sudo_cmdalias': augeas { 'sudo_cmdalias':
@ -97,7 +96,7 @@ Augeas安装包可以在标准CentOS/RHEL仓库中找到。不幸的是Puppet
] ]
} }
sudo命令别名的语法很简单**Cmnd_Alias**定义了命令别名字段,**[alias/name]**绑定所有给定的别名,/alias/name **SERVICES** 定义真实的别名以及alias/command 是所有命令的数组,每条命令是这个别名的一部分。 sudo命令别名的语法很简单**Cmnd_Alias**定义了命令别名字段,**[alias/name]**绑定所有给定的别名,/alias/name **SERVICES** 定义真实的别名alias/command 是属于该别名的所有命令的数组。以上将被转换如下:
Cmnd_Alias SERVICES = /sbin/service , /sbin/chkconfig , /bin/hostname , /sbin/shutdown Cmnd_Alias SERVICES = /sbin/service , /sbin/chkconfig , /bin/hostname , /sbin/shutdown
@ -105,12 +104,12 @@ sudo命令别名的语法很简单**Cmnd_Alias**定义了命令别名字段
#### 向一个组中加入用户 #### #### 向一个组中加入用户 ####
要使用Augeas向组中添加用户有也许要添加一个新用户无论是在gid字段后或者在最后一个用户后。我们在这个例子中使用组SVN。这可以通过下面的命令达成: 要使用Augeas向组中添加用户也许要添加一个新用户,不管是排在 gid 字段还是最后的用户 uid 之后。我们在这个例子中使用SVN组。这可以通过下面的命令达成:
在Puppet中: 在Puppet中:
augeas { 'augeas_mod_group: augeas { 'augeas_mod_group:
context => '/files/etc/group', # The target file is /etc/group context => '/files/etc/group', #目标文件是 /etc/group
changes => [ changes => [
"ins user after svn/*[self::gid or self::user][last()]", "ins user after svn/*[self::gid or self::user][last()]",
"set svn/user[last()] john", "set svn/user[last()] john",
@ -123,14 +122,14 @@ sudo命令别名的语法很简单**Cmnd_Alias**定义了命令别名字段
### 总结 ### ### 总结 ###
目前为止你应该对如何在Puppet项目中使用Augeas有一个好想法了。随意地试一下,你肯定会经历官方的Augeas文档。这会帮助你了解如何在你的个人项目中正确地使用Augeas并且它会想你展示你可以用它节省多少时间。 目前为止你应该对如何在Puppet项目中使用Augeas有点明白了。随意地试一下,你肯定需要浏览官方的Augeas文档。这会帮助你了解如何在你的个人项目中正确地使用Augeas并且它会让你知道可以用它节省多少时间。
如有任何问题,欢迎在下面的评论中发布,我会尽力解答和向你建议。 如有任何问题,欢迎在下面的评论中发布,我会尽力解答和向你建议。
### 有用的链接 ### ### 有用的链接 ###
- [http://www.watzmann.net/categories/augeas.html][6]: contains a lot of tutorials focused on Augeas usage. - [http://www.watzmann.net/categories/augeas.html][6]: 包含许多关于 Augeas 使用的教程。
- [http://projects.puppetlabs.com/projects/1/wiki/puppet_augeas][7]: Puppet wiki with a lot of practical examples. - [http://projects.puppetlabs.com/projects/1/wiki/puppet_augeas][7]: Puppet wiki 带有许多实例。
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
@ -138,12 +137,12 @@ via: http://xmodulo.com/2014/09/manage-configurations-linux-puppet-augeas.html
作者:[Jaroslav Štěpánek][a] 作者:[Jaroslav Štěpánek][a]
译者:[geekpi](https://github.com/geekpi) 译者:[geekpi](https://github.com/geekpi)
校对:[校对者ID](https://github.com/校对者ID) 校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://xmodulo.com/author/jaroslav [a]:http://xmodulo.com/author/jaroslav
[1]:http://xmodulo.com/2014/08/install-puppet-server-client-centos-rhel.html [1]:http://linux.cn/article-3959-1.html
[2]:http://augeas.net/ [2]:http://augeas.net/
[3]:http://xmodulo.com/manage-configurations-linux-puppet-augeas.html [3]:http://xmodulo.com/manage-configurations-linux-puppet-augeas.html
[4]:http://xmodulo.com/2013/03/how-to-set-up-epel-repository-on-centos.html [4]:http://xmodulo.com/2013/03/how-to-set-up-epel-repository-on-centos.html