千家信息网

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

发表于:2024-11-27 作者:千家信息网编辑
千家信息网最后更新 2024年11月27日,这篇文章给大家分享的是有关怎么在Linux中借助Puppet和Augeas管理配置的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。虽然Puppet是一款非常独特而实用的工具,
千家信息网最后更新 2024年11月27日怎么在Linux中借助Puppet和Augeas管理配置

这篇文章给大家分享的是有关怎么在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管理配置"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

配置 命令 软件 别名 用户 文件 管理 工具 情况 系统 服务器 软件包 软件库 服务 实用 数组 文章 更多 环境 示例 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 福建服务器电源哪家便宜 plsql脚本数据库怎么用 怎么用自己的电脑做服务器 网络安全业务可研 如何进行数据库压测 汽车车载网络技术试题及答案 华为云数据库技术规划师 山东服务器机柜厂家虚拟主机 什么是网络安全科技馆 数据库损坏 不能分配空间 有礼派互联网科技有限公司 深圳域名服务器地址 如何查询期刊数据库正规吗 银行网络安全系统是什么做的 服务器硬盘解挂后不能同步了吗 合肥声光电博物馆软件开发 大兴区网络软件开发好处 源码数据库名称 便宜g口服务器 网络安全技术培训有用吗 java版mc服务器列表怎么看 杭州软件开发驻场费用是多少 阿里云日本服务器ip 学数据库有什么图 山西oa软件开发价格行情 战区太平洋服务器维护多久 服务器每天早上网络就连不上 人工智能与工业网络技术 网络安全手抄报难度高又漂亮 网络安全科室
0