如何從節點中的現有模組擴充檔案定義?

如何從節點中的現有模組擴充檔案定義?

我使用舊版的 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
}

相關內容