では,
class proxy {
package {
'daemontools':
ensure => present;
'perl-Perlbal':
ensure => present;
}
}
class www {
package { 'rubygem-rails': ensure => present; }
}
node proxy_and_www {
include proxy
include www
}
このマニフェスト自体は問題ありませんが,
node www {
include www
}
wwwクラスにはdaemontoolsパッケージリソースの宣言がないため,
これを解決するために,
@package { 'daemontools': ensure => present }
class proxy {
realize(Package['daemontools'])
package { 'perl-Perlbal': ensure => present; }
}
class www {
realize(Package['daemontools'])
package { 'rubygem-rails': ensure => present; }
}
node proxy_and_www {
include proxy
include www
}
node proxy {
inclue proxy
}
node www {
include www
}
こうすることで,
このように仮想リソースを利用することで,
仮想リソースの実体化
relize関数での実体化
最初の方でも述べましたが,
realize User[luke]
複数の仮想リソースを実体化する場合には,
realize(User[johnny], User[billy])
コレクションでの実体化
もうひとつの方法は,Type<| condition |>
といった形で記述します。
たとえば,
User <| title == luke |>
条件には == 以外にも,
Grpup <| title != sysadmin |>
File <| owner == root and mode == 400 |>
User <| title == luke or (group == dba or group == sysadmin) |>
コレクションを利用すると,
仮想リソースの解説は以上です。次回はFacterの拡張方法について解説予定です。