
Utilizo una versión anterior del módulo mysql example42, que define el archivo mysql.conf pero no su contenido. Mi objetivo es simplemente incluir el módulo mysql y agregar una definición de contenido en el nodo.
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")}
}
El código anterior produce un mensaje "Solo las subclases pueden anular los parámetros".
¿Cuál es la forma correcta de simplemente agregar una definición de contenido a una definición de archivo existente?
Respuesta1
Usar unaRecolector de recursos, descritoaquí. Los recopiladores de recursos pueden anular los parámetros de recursos incluso si no están en una subclase. También son más versátiles, los recursos se pueden recopilar mediante etiquetas u otros parámetros, no solo el título.
node xyz
{
include mysql
File <| title == "mysql.conf" |> {
content => template("mymodule/mysql.conf.erb"),
}
}
Editar: usando una subclase
Otra opción es declarar una subclase e incluirla en la definición del nodo:
class mysql_custom inherits mysql {
File["mysql.conf"] { content => template("mymodule/mysql.conf.erb")}
}
node xyz {
include mysql_custom
}