
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
}