ノードマニフェストで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 定義をそれぞれ異なる設定で定義するにはどうすればよいですか?