linux – 如何根据他们部署的环境在puppet中生成自定义的sudoers文件?

前端之家收集整理的这篇文章主要介绍了linux – 如何根据他们部署的环境在puppet中生成自定义的sudoers文件?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
系统管理员存在于所有环境的sudoers文件中,但其他sudoers则不存在.不同的环境都有不同的sudoers.大多数情况下,90%的用户是相同的,10%的用户不同,因此我们不能只为一切提供一个sudoers文件.

现在,我们正在使用具有10个不同文件的木偶,其名称如sudoers.production1,sudoers.production2,sudoers.production3,sudoers.testing1,sudoers.staging1等等.

然后Puppet根据服务器的$domain(例如:dbserver.staging1.acme.com)或$hardwaremodel选择要部署的文件.它工作正常,但维护这么多文件是一场噩梦.

我想基于服务器的域自动生成sudoers文件,并且只有一个大文件,包含所有用户和所有环境的所有sudoers权限.看起来像:

User_Alias ADMINS = abe,bob,carol,dave

case $domain {
 "staging1.acme.com" {
    #add dev1,dev2,tester1,tester2 to sudoers file 
  }
 "testing2.acme.com" {
    #add tester1,tester3,tester4 to sudoers file
  }

最好的方法是什么?欢迎提出替代方案的建议.我很感激任何提示.

更新1:

出于安全原因,我们宁愿不连接位于puppet客户端上的文件夹中的一堆文件,以防有人将文件放入其中(恶意或非恶意)并破坏组合文件或在其中插入内容.

最重要的是,为了实用性,我们希望将puppet服务器上的sudoers相关文件(片段或完整)的数量保持为3(prod / stage / test)或最好是1个文件.这个文件会(以某种方式)在puppet服务器上生成sudoers文件,并向每个puppet客户端发送一个自定义文件.

这样做的目的只是在单个文件搜索用户名并将其删除比在11个文件上执行更快.将用户添加到一堆环境时,它不会那么快,但只需要打开和查看一个文件,大大减少了遗漏的可能性.

我们的Sudo版本是1.6.9p8所以我们不能使用/sudoers.d文件夹,只能使用sudoers文件.

UPDATE2:

我一直在谷歌上搜索一下,我刚刚发现了这个,我过去一小时都在看这个:

https://github.com/saz/puppet-sudo#readme

我不确定,但看起来它可能会成功.有没有人用它或听说过它?

解决方法

什么版本的sudo?您的sudo版本是否支持使用#includedir选项将内容分解为片段目录/etc/sudoers.d/?

如果是这样,那么我建议您使用该功能来构建您的配置.

将主配置文件传递到/ etc / sudoers,其中包含您控制的每个主机通用的所有设置.然后将特定于角色的配置放入/etc/sudoers.d/中的文件中.

每个类或木偶部分负责更新与该类直接相关的sudo配置的一小部分.

猜你在找的Linux相关文章