如何使用saz-sudo木偶模块来部署我自己的sudoers文件与hiera?

我已经安装了saz-sudo,并且已经创build了一个基于(我希望)的site_sudo模块。 这是我在我的site_sudo / manifest / init.pp文件中有什么:

class { 'site_sudo': } sudo::conf { 'web': source => 'puppet:///files/etc/sudoers', } sudo::conf { 'syseng': priority => 10, content => "%sysadm ALL=(ALL) NOPASSWD: ALL", } include sudo 

不pipe我做什么,目标上的sudoers文件总是被saz-sudo模块的sudoers.rhel6文件覆盖。

我也使用common.yaml:

 classes: - site_sudo 

这是从您的文件确切的副本? class { 'site_sudo': }行会将该类包含到configuration中,而不是像在模块的init.pp那样定义类。 这将阻止文件中其余的configuration被应用(因为这个文件只是被评估为加载这个类;其他的行不会像import语句那样被评估)。

相反,它应该是这样的:

 class site_sudo { include sudo sudo::conf { 'web': source => 'puppet:///files/etc/sudoers', } sudo::conf { 'syseng': priority => 10, content => "%sysadm ALL=(ALL) NOPASSWD: ALL", } } 

根据自述 ,你需要发送一个参数到sudo类:

 class { 'sudo': config_file_replace => true, } 

而不是简单的

 include sudo 

如所陈述的那样破坏/etc/sudoers

查看README和类sudo :: configs 。

使用的约定是相当奇怪的(恕我直言,只是添加散列参数类sudo会更容易)…但它似乎与Hiera工作得很好。

为您的示例值:

 classes: - sudo - sudo::configs sudo::configs: 'syseng': 'priority' : 10 'content' : "%sysadm ALL=(ALL) NOPASSWD: ALL" 

saz / sudo旨在使用sudoers.d文件和#include。 这就是为什么它用一个干净的文件覆盖你的sudoers文件,以确保它是正确的文件。 那些sudo :: conf声明将导致文件在/etc/sudoers.d中显示,而不是直接改变/ etc / sudoers。