Я хотел бы предоставить файл конфигурации «пример по умолчанию» для серверов узлов, использующих марионетку (например, my.cnf), но я хочу разрешить администратору сервера обновлять его столько, сколько он хочет. (По сути, я предоставляю ИТ-исследователям "базовую" виртуальную машину, и они сами ее адаптируют)
Я пробовал использовать функцию "файл" с марионеткой, но это заметил, когда я пытаюсь ее изменить ...
Есть решение?
Использовать заменить параметр для файл.
file { '/path/to/file':
ensure => present,
source => 'puppet:///modules/module_name/file',
replace => false,
}
Если это производственная среда, я бы рекомендовал поощрять / требовать от администраторов вносить изменения в конфигурацию через марионетку. Если это не производственная среда, вы можете использовать марионетку для настройки (например, с помощью 'марионетка применить') и не продолжать запускать марионеточный агент после этого.
Ответ Антона, вероятно, лучший, но этот метод тоже может быть полезен.
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, и исследователи могут при необходимости отменить.