Wie erweitert man eine Dateidefinition aus einem vorhandenen Modul im Knoten?

Wie erweitert man eine Dateidefinition aus einem vorhandenen Modul im Knoten?

Ich verwende eine ältere Version des MySQL-Moduls example42, das die Datei mysql.conf definiert, aber nicht deren Inhalt. Mein Ziel ist es, nur das MySQL-Modul einzubinden und eine Inhaltsdefinition im Knoten hinzuzufügen.

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")}
}

Der obige Code erzeugt ein „Nur Unterklassen können Parameter überschreiben“

Was ist die richtige Vorgehensweise, um einer vorhandenen Dateidefinition einfach eine Inhaltsdefinition hinzuzufügen?

Antwort1

Benutze einenRessourcensammler, beschriebenHier. Ressourcensammler können Ressourcenparameter überschreiben, auch wenn sie sich nicht in einer Unterklasse befinden. Sie sind außerdem vielseitiger, da Ressourcen mithilfe von Tags oder anderen Parametern gesammelt werden können, nicht nur mit dem Titel.

node xyz
{
    include mysql
    File <| title == "mysql.conf" |> { 
        content => template("mymodule/mysql.conf.erb"),
    }
}

Bearbeiten: Verwenden einer Unterklasse

Eine andere Möglichkeit besteht darin, eine Unterklasse zu deklarieren und sie in die Knotendefinition aufzunehmen:

class mysql_custom inherits mysql {
    File["mysql.conf"] { content => template("mymodule/mysql.conf.erb")}
}

node xyz {
    include mysql_custom
}

verwandte Informationen