我安装了 saz-sudo,并创建了一个基于(我希望)它的 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
无论我做什么,目标上的 sudoers 文件总是被来自 saz-sudo 模块的 sudoers.rhel6 文件覆盖。
我也在使用 common.yaml:
classes:
- site_sudo
答案1
这是从您的文件中精确复制的吗?该class { 'site_sudo': }
行会将该类包含到配置中,而不是像在init.pp
模块中那样定义该类。这将阻止文件中的其余配置被应用(因为仅评估此文件以加载该类;其他行不会像在语句中那样被评估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",
}
}
答案2
答案3
答案4
saz/sudo 旨在使用 sudoers.d 文件并 #include 该文件。这就是为什么它会用干净的文件覆盖您的 sudoers 文件,以确保它是正确的文件。这些 sudo::conf 声明将导致文件显示在 /etc/sudoers.d 中,而不是直接更改 /etc/sudoers。