
私は、mysql.conf ファイルを定義しているもののその内容は定義していない、example42 mysql モジュールの古いバージョンを使用しています。私の目標は、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
}