1

たとえば、3台のサーバーがあり、それらの3台のサーバーにApacheがインストールされているとします。それらのそれぞれについて、いくつかのapache::vhostで定義されたリソースをインスタンス化する必要があります。

それをする代わりにそれをする方法はありますか

node 'srv1.example.com' inherit webserver {

   apache::vhost { 'toto1' :
           ... => ... ,
   }

   apache::vhost { 'toto2' :
           ... => ... ,
   }

   apache::vhost { 'toto3' :
           ... => ... ,
   }

}

次のパターンで何かを行うことができます(名前だけで定義されたリソースが必要なことを実行できることを認めます)

node 'srv1.example.com' inherit webserver {

     $vhost = ['toto1', 'toto2', 'toto3'];

     ??????
}
4

1 に答える 1

4

はい。

node 'srv1.example.com' inherit webserver {

  $vhosts = ['toto1', 'toto2', 'toto3'];

  apache::vhost { [$vhosts]:
    ... => ... ,
  }
}

$nameもちろん、これには、すべてが同じであるか、名前( apache :: vhost定義内で使用可能)に基づいている必要があります。

apache :: vhostを単純な定義として保持し、名前からパラメーターを計算するためにさらに複雑なことを実行したい場合は、中間の定義を使用してそれらを実行できます。

define blah::vhost {
  $wwwroot = "/var/www/html/blah/${name}"
  $wwwhostname = "${name}.example.com"
  if ! defined(File[$wwwroot]) {
    file { $wwwroot:
      ensure => directory,
      mode   => 0775,
    }
  }
  apache::vhost { $name:
     path     => $wwwroot,
     aliases  => [$name],
     hostname => $wwwhostname,
     require  => File[$wwwroot],
  }
}

blah::vhost { [$vhosts]: }
于 2012-05-18T17:26:13.880 に答える