
我使用舊版的 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")}
}
上面的程式碼產生了“只有子類別可以覆蓋參數”
將內容定義新增至現有文件定義的正確方法是什麼?
答案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
}