2.9. Web ホストへの HTML ファイルのコピー

これで、HTTP サーバー設定が完了しました。これにより、Web ベースのアプリケーションをインストールするプラットフォームが提供され、Puppet も設定することができます。ただし、この例では、簡単なインデックス Web ページのみを Web サーバーにコピーします。

files ディレクトリーに index.html という名前のファイルを作成します。以下の内容をファイルに追加します。

<html>
  <head>
    <title>Congratulations</title>
  <head>
  <body>
    <h1>Congratulations</h1>
    <p>Your puppet module has correctly applied your configuration.</p>
  </body>
</html>

manifests ディレクトリーに app.pp という名前のマニフェストを作成します。以下の内容をファイルに追加します。

class mymodule::app {
  file { "/var/www/myserver/index.html":
    ensure => file,
    mode   => '755',
    owner  => root,
    group  => root,
    source => "puppet:///modules/mymodule/index.html",
    require => Class["mymodule::httpd"],
  }
}

この新しいクラスには、単一のリソース宣言が含まれます。この宣言は、モジュールのファイルディレクトリのファイルを、Puppet Serverからシステムにコピーし、そのパーミッションを設定します。さらに、require 属性は mymodule::httpd クラスが、mymodule::app を適用する前に設定を正常に完了させます。

最後に、メインの init.pp マニフェストにこの新しいマニフェストを追加します。

class mymodule (
  $httpd_port = 8120
) {
  include mymodule::httpd
  include mymodule::app
}

puppet apply コマンドを再度実行して、モジュールへの変更をテストします。出力は以下のようになります。

# puppet apply mymodule/tests/init.pp --noop
....
Notice: /Stage[main]/Mymodule::App/File[/var/www/myserver/index.html]/ensure: current_value absent, should be file (noop)
...

この出力通知メッセージは、index.html ファイルが Web サーバーにコピーされることを示しています。