
Я использую старую версию модуля mysql example42, которая определяет файл mysql.conf, но не его содержимое. Моя цель — просто включить модуль mysql и добавить определение содержимого в узел.
class mysql {
...
file { "mysql.conf":
path => "${mysql::params::configfile}",
mode => "${mysql::params::configfile_mode}",
owner => "${mysql::params::configfile_owner}",
group => "${mysql::params::configfile_group}",
ensure => present,
require => Package["mysql"],
notify => Service["mysql"],
}
...
}
node xyz
{
include mysql
File["mysql.conf"] { content => template("mymodule/mysql.conf.erb")}
}
Приведенный выше код выдает «Только подклассы могут переопределять параметры».
Как правильно просто добавить определение контента к существующему определению файла?
решение1
ИспользоватьСборщик ресурсов, описанныйздесь. Сборщики ресурсов могут переопределять параметры ресурсов, даже если они не находятся в подклассе. Они также более универсальны, ресурсы можно собирать с помощью тегов или других параметров, а не только заголовка.
node xyz
{
include mysql
File <| title == "mysql.conf" |> {
content => template("mymodule/mysql.conf.erb"),
}
}
Редактировать: использование подкласса
Другой вариант — объявить подкласс и включить его в определение узла:
class mysql_custom inherits mysql {
File["mysql.conf"] { content => template("mymodule/mysql.conf.erb")}
}
node xyz {
include mysql_custom
}