puppet でヨソの class の定義を上書きする方法
すでに include
されている class a の中で /tmp/a.txt
が定義されているけど、 class b が読み込まれた場合は違う内容にしたい。
class a {
file { '/tmp/a.txt':
content => "a\n",
}
}
class b {
file { '/tmp/b.txt':
content => "b\n",
}
include b::a
}
class b::a inherits a {
File['/tmp/a.txt'] {
content => "b::a\n",
}
}
node "localhost" {
include a
include b
}
ヨソの class (この場合は a) を継承した子 class (b::a) を作って、そこで定義を上書きした上で、その子 class を include
する。
class b の中で直接 b::a を定義した場合は、 a の定義の方が優先して使われるようなので注意。
とかいちいち調べるの面倒くさいし憶えても使いどころが無いので、いい加減 ruby 勉強してそっちで書くべきなのだろうな。