我如何使用 puppet 提供默认配置文件,但允许服务器管理员更新它

我如何使用 puppet 提供默认配置文件,但允许服务器管理员更新它

我想使用 puppet 向节点服务器提供一个“默认示例”配置文件(例如 my.cnf),但我想允许服务器管理员根据需要对其进行更新。(基本上,我向 IT 研究人员提供“基本”vm,然后他们自行调整)

我尝试使用 puppet 的“文件”功能,但当我尝试更改它时,它注意到了……

有解决办法吗?

答案1

使用代替参数文件

file { '/path/to/file':
  ensure  => present,
  source  => 'puppet:///modules/module_name/file',
  replace => false,
}

如果这是生产环境,我建议鼓励/要求管理员通过 puppet 进行配置更改。如果这不是生产环境,您可以使用 puppet 进行配置(例如使用 '傀儡申请') 并且此后不再继续运行 Puppet 代理。

答案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 控制的配置文件发布更改,研究人员可以根据需要进行覆盖。

相关内容