现在,我们正在使用具有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
我不确定,但看起来它可能会成功.有没有人用它或听说过它?