Как расширить определение файла из существующего модуля в узле?

Как расширить определение файла из существующего модуля в узле?

Я использую старую версию модуля 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
}

Связанный контент