我正在尝试部署 saz/sudo 模块来管理我们的 sudo 配置(我对 puppet 还很陌生(约 3 天),所以请原谅我的潜在无知)。
我们当前的 sudo 配置全部包含在单个(大型)/etc/sudoers 文件中,我想将其分解为 sudoers.d 中的相关文件。
我已经能够安装 saz/sudo 模块,但一直在摸索着配置它。我目前已将其包含在另一个模块 site_sudo 中,使用以下配置使其正常工作:
# cwd : /etc/puppetlabs/code/environments/production/modules
site_sudo/examples
site_sudo/files
site_sudo/Gemfile
site_sudo/manifests
site_sudo/metadata.json
site_sudo/Rakefile
site_sudo/README.md
site_sudo/spec
site_sudo/examples/init.pp
site_sudo/files/etc
site_sudo/files/etc/sudoers.d
site_sudo/files/etc/sudoers.d/svc_servicenanme
site_sudo/files/etc/sudoers.d/user_username
site_sudo/manifests/init.pp
site_sudo/spec/classes
site_sudo/spec/spec_helper.rb
site_sudo/spec/classes/init_spec.rb
init.pp 的内容如下:
[root@puppet modules]# cat site_sudo/manifests/init.pp | grep -vP '^#'
class site_sudo {
class { 'sudo': }
sudo::conf { 'user_username':
source => 'puppet:///modules/site_sudo/etc/sudoers.d/user_username',
}
sudo::conf { 'svc_servicename':
source => 'puppet:///modules/site_sudo/etc/sudoers.d/svc_servicename',
}
}
[root@puppet modules]#
我的问题:这是实现 saz/sudo 的最佳/正确方法吗?
我有点希望将所有这些配置放在主 saz/sudo 模块中,而不是像这样创建 site_sudo,但文档并不清楚如何做到这一点。
如果可以在主 saz/sudo 模块中包含此配置,有人可以建议如何实现吗?
答案1
你在保持配置方面做得对外部您正在使用的模块。
模块应该是可重复使用的,如果您自定义模块以包含站点本地配置,则需要维护您的自定义。如果不合并您的更改,则无法安装模块的较新版本(取决于您如何维护更改和安装模块,这可能从简单到困难)。
该模块提供一个公共接口sudo::conf
及其类参数来定制您需要的一切。
您创建的课程site_sudo
是轮廓类(参见:角色和配置文件) 使用 saz/sudo 模块为您的站点和服务首选项配置 sudo。这是 Puppet 环境中常见且使用良好的设计模式,因此请务必坚持使用它。
saz/sudo 支持的第二种方法是定义配置在希拉在密钥下sudo::configs
。它将查找这些数据,然后应用配置。使用 Hiera 是将配置保留在您正在使用的模块之外的另一种好方法。您的 Hiera 数据文件可以存储在您的 Puppet 环境中。