现在,我们正在使用具有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
我不确定,但看起来它可能会成功.有没有人用它或听说过它?
解决方法
如果是这样,那么我建议您使用该功能来构建您的配置.
将主配置文件传递到/ etc / sudoers,其中包含您控制的每个主机通用的所有设置.然后将特定于角色的配置放入/etc/sudoers.d/中的文件中.
每个类或木偶部分负责更新与该类直接相关的sudo配置的一小部分.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。