我已经安装了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。