我想使用 puppet 向节点服务器提供一个“默认示例”配置文件(例如 my.cnf),但我想允许服务器管理员根据需要对其进行更新。(基本上,我向 IT 研究人员提供“基本”vm,然后他们自行调整)
我尝试使用 puppet 的“文件”功能,但当我尝试更改它时,它注意到了……
有解决办法吗?
答案1
答案2
安东的答案可能是最好的,但这种方法也可能有用。
Mysql 支持 conf 目录。我通常在 my.cnf 中写一行 !includedir /etc/mysql/conf.d/,然后加载其他配置以填充功能。Mysql 将根据解析顺序使用配置变量的最后一个实例。如果您将默认值放在 /etc/mysql/conf.d/00_somefile.cnf 中,则任何其他文件都应覆盖它。您可以创建一个 /etc/mysql/conf.d/local_changes.cnf,这样就可以清楚地知道将其放在哪里。
class mysql::config {
file { 'my.cnf':
ensure => present,
path => '/etc/mysql/my.cnf
source => 'puppet:///modules/mysql/my.cnf',
}
file { '/etc/mysql/conf.d':
ensure => directory,
}
file { 'general_mysql.cnf':
ensure => present,
path => '/etc/mysql/conf.d/00_general_mysql.cnf',
content => template('mysql/general_mysql.cnf.erb'),
}
通过上述内容,您可以继续通过 Puppet 控制的配置文件发布更改,研究人员可以根据需要进行覆盖。