0

ノードマニフェストでApacheモジュールから複数のvhostテンプレートを使用したいのですが、今のところうまくいきません。

私のApacheモジュールには、次のようなvhostテンプレートが1つあります。これは私の apache::vhost テンプレートです:

cat modules/apache/templates/vhost.conf.erb
<VirtualHost *:<%= port %>>
   ServerName <%= name %>
<%if serveraliases.is_a? Array -%>
<% serveraliases.each do |name| -%>
<%= " ServerAlias #{name}\n" %><% end -%>
<% elsif serveraliases != '' -%>
<%= "   ServerAlias #{serveraliases}" -%>
<% end -%>

   php_value newrelic.appname <%= name  %>

    KeepAlive   On
    KeepAliveTimeout 5
    MaxKeepAliveRequests 100
    LogFormat "{ \
      \"host\":\"<%= name %>.<%= domain %>\", \
      \"path\":\"/var/log/httpd/jf_<%= name %>_access_log\", \
      \"tags\":[\"Jokefire <%= name %>\"], \
      \"message\": \"%h %l %u %t \\\"%r\\\" %>s %b\", \
      \"timestamp\": \"%{%Y-%m-%dT%H:%M:%S%z}t\", \
      \"clientip\": \"%a\", \
      \"duration\": %D, \
      \"status\": %>s, \
      \"request\": \"%U%q\", \
      \"urlpath\": \"%U\", \
      \"urlquery\": \"%q\", \
      \"method\": \"%m\", \
      \"bytes\": %B, \
      \"vhost\": \"%v\" \
    }" <%= name %>_access_json
    CustomLog /var/log/httpd/jf_<%= name %>_access_log <%= name %>_access_json
    LogLevel  debug
    ErrorLog  /var/log/httpd/jf_<%= name %>_error_log
    DirectoryIndex index.html index.php
    DocumentRoot <%= docroot %>
    <Directory <%= docroot %>>
      Options  Indexes  FollowSymLinks
      AllowOverride All
      Order allow,deny
      allow from all
    </Directory>
     ServerSignature  On
</VirtualHost>

そして、nodes.pp マニフェストでそのテンプレートを定義すると、まったく問題なく動作しました。

   apache::vhost { 'dev.example.com':
      port => 80,
      docroot => '/var/www/jf-wp',
      ssl => false,
      priority => 002,
      }

しかし、nodes.pp マニフェストで設定が異なる別の vhost テンプレートを使用しようとすると、エラーが発生します。これは、nodes.pp マニフェストで動作しない apache::vhost_admin テンプレートです。

 #cat modules/apache/templates/vhost_admin.conf.erb
<VirtualHost *:<%= port %>>
   ServerName <%= name %>
<%if serveraliases.is_a? Array -%>
<% serveraliases.each do |name| -%>
<%= " ServerAlias #{name}\n" %><% end -%>
<% elsif serveraliases != '' -%>
<%= "   ServerAlias #{serveraliases}" -%>
<% end -%>

   php_value newrelic.enabled false

    KeepAlive   On
    KeepAliveTimeout 5
    MaxKeepAliveRequests 100
    LogFormat "{ \
      \"host\":\"<%= name %>.<%= domain %>\", \
      \"path\":\"/var/log/httpd/jf_<%= name %>_access_log\", \
      \"tags\":[\"Jokefire <%= name %>\"], \
      \"message\": \"%h %l %u %t \\\"%r\\\" %>s %b\", \
      \"timestamp\": \"%{%Y-%m-%dT%H:%M:%S%z}t\", \
      \"clientip\": \"%a\", \
      \"duration\": %D, \
      \"status\": %>s, \
      \"request\": \"%U%q\", \
      \"urlpath\": \"%U\", \
      \"urlquery\": \"%q\", \
      \"method\": \"%m\", \
      \"bytes\": %B, \
      \"vhost\": \"%v\" \
    }" <%= name %>_access_json
    CustomLog /var/log/httpd/jf_<%= name %>_access_log <%= name %>_access_json
    LogLevel  debug
    ErrorLog  /var/log/httpd/jf_<%= name %>_error_log
    DirectoryIndex index.html index.php
    DocumentRoot <%= docroot %>
    <Directory <%= docroot %>>
      Options  Indexes  FollowSymLinks
      AllowOverride All
      Order allow,deny
      allow from all
    </Directory>
     ServerSignature  On
</VirtualHost>

そして、nodes.pp ファイルで apache::vhost_admin を定義しようとすると:

apache::vhost_admin { 'admin.example.com':
  port => 80,
  docroot => '/var/www/admin',
  ssl => false,
  priority => 004,
  serveraliases => 'www.admin.example.com',
  }

nodes.pp マニフェストで apache::vhost_admin テンプレートを定義すると、次のエラーが発生します。

 Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Puppet::Parser::AST::Resource failed with e
rror ArgumentError: Invalid resource type apache::vhost_admin at /etc/puppet/environments/production/manifests/nodes.p
p:139 on node web1.jokefire.com
Warning: Not using cache on failed catalog
Error: Could not retrieve catalog; skipping run
enter code here

私は何を間違っていますか?puppet で複数の vhost 定義をそれぞれ異なる設定で定義するにはどうすればよいですか?

4

1 に答える 1

1

@bluethundr との話し合いの結果、「apache::vhost_admin」の定義が欠落していたようです。

于 2015-11-12T07:12:42.527 に答える