如何用Puppet和Augeas管理Linux配置(2)

现在来解释这些代码做了什么: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':

context =>'/files/etc/sudoers',# 目标文件是 /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的更多信息,请访问官方文档

向一个组中加入用户

要使用Augeas向组中添加用户,你也许要添加一个新用户,不管是排在 gid 字段还是最后的用户 uid 之后。我们在这个例子中使用SVN组。这可以通过下面的命令达成:

在Puppet中:

augeas {'augeas_mod_group:

context => '/files/etc/group', #目标文件是 /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

总结

目前为止,你应该对如何在Puppet项目中使用Augeas有点明白了。随意地试一下,你肯定需要浏览官方的Augeas文档。这会帮助你了解如何在你的个人项目中正确地使用Augeas,并且它会让你知道可以用它节省多少时间。

如有任何问题,欢迎在下面的评论中发布,我会尽力解答和向你建议。

有用的链接

Puppet 的详细介绍请点这里
Puppet 的下载地址请点这里

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/f4918683c51fd16468e6d55b935b7463.html