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配置的一小部分. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |