我怎样才能提供一个默认的configuration文件与木偶,但允许服务器pipe理员来更新它

我想用puppet(例如my.cnf)给节点服务器提供一个“default-example”configuration文件,但我想让服务器pipe理员尽可能多地更新它。 (基本上,我向IT研究人员提供“基础”虚拟机,他们自己调整)

我'与傀儡试图与function“文件”,但它注意到,当我试图改变它…

有解决scheme吗?

使用文件的replace参数。

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

如果这是一个生产环境,我会build议鼓励/要求pipe理员通过puppet进行configuration更改。 如果这不是一个生产环境,你可以用木偶来做configuration(比如“ 傀儡 ”),而不是继续运行木偶代理。

安东的答案可能是最好的,但是这种方法也可能是有用的。

Mysql支持conf目录。 我通常在my.cnf,includedir /etc/mysql/conf.d/中有一行,然后加载额外的configuration来填写function。 Mysql将使用基于parsing顺序的configurationvariables的最后一个实例。 如果你把你的默认值放在/etc/mysql/conf.d/00_somefile.cnf中,任何附加的文件都应该覆盖它。 你可以创build一个/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控制configuration文件继续发布更改,研究人员可以根据需要进行重写。