我使用旧版本的 example42 mysql 模块,它定义了 mysql.conf 文件但不定义其内容。Mmy 的目标是只包含 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")}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码产生一个“只有子类可以覆盖参数”
将内容定义添加到现有文件定义的正确方法是什么?
Mik*_*kko 11
使用资源收集器,描述在这里。即使不在子类中,资源收集器也可以覆盖资源参数。它们也更通用,可以使用标签或其他参数来收集资源,而不仅仅是标题。
node xyz
{
include mysql
File <| title == "mysql.conf" |> {
content => template("mymodule/mysql.conf.erb"),
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:使用子类
另一种选择是声明一个子类并将其包含在节点定义中:
class mysql_custom inherits mysql {
File["mysql.conf"] { content => template("mymodule/mysql.conf.erb")}
}
node xyz {
include mysql_custom
}
Run Code Online (Sandbox Code Playgroud)