diff --git a/manifests/builder.pp b/manifests/builder.pp
index 1a36122..a405967 100644
--- a/manifests/builder.pp
+++ b/manifests/builder.pp
@@ -17,7 +17,10 @@
class nodepool::builder(
$statsd_host = undef,
$nodepool_ssh_public_key = undef,
- $image_log_document_root = '/var/log/nodepool/image',
+ # If true, export build logs from $build_log_document_root via apache
+ $enable_build_log_via_http = false,
+ $build_log_document_root = '/var/log/nodepool/builds',
+ $vhost_name = $::fqdn,
$builder_logging_conf_template = 'nodepool/nodepool-builder.logging.conf.erb',
$environment = {},
$build_workers = '1',
@@ -94,4 +97,35 @@ class nodepool::builder(
],
}
+ if $enable_build_log_via_http == true {
+ include ::httpd
+
+ ::httpd::vhost { $vhost_name:
+ port => 80,
+ priority => '50',
+ docroot => 'MEANINGLESS_ARGUMENT',
+ template => 'nodepool/nodepool-builder.vhost.erb',
+ }
+ if ! defined(Httpd::Mod['rewrite']) {
+ httpd::mod { 'rewrite': ensure => present }
+ }
+ if ! defined(Httpd::Mod['proxy']) {
+ httpd::mod { 'proxy': ensure => present }
+ }
+ if ! defined(Httpd::Mod['proxy_http']) {
+ httpd::mod { 'proxy_http': ensure => present }
+ }
+ }
+
+ file { $build_log_document_root:
+ ensure => directory,
+ mode => '0755',
+ owner => 'nodepool',
+ group => 'nodepool',
+ require => [
+ User['nodepool'],
+ File['/var/log/nodepool'],
+ ],
+ }
+
}
diff --git a/manifests/init.pp b/manifests/init.pp
index 39e5ea5..e6a0619 100644
--- a/manifests/init.pp
+++ b/manifests/init.pp
@@ -25,14 +25,23 @@ class nodepool (
$git_source_repo = 'https://git.openstack.org/openstack-infra/nodepool',
$revision = 'master',
$statsd_host = undef,
+ # The following have all been deprecated and are left only for
+ # argument compatability
+ # - To export the image logs on builders use
+ # builder::enable_build_log_via_http
+ # - To enable the webapp on launchers use launcher::enable_webapp
+ # - Upload logs were never really useful, use the webapp endpoint
+ # to see status
+ # - TODO: common apache layout with config merging so launcher
+ # and builder on same host works
+ $enable_image_log_via_http = undef,
+ $image_log_document_root = undef,
$vhost_name = $::fqdn,
- $image_log_document_root = '/var/log/nodepool/image',
- $image_log_periodic_cleanup = false,
- $enable_image_log_via_http = false,
- $upload_log_document_root = '/var/log/nodepool/upload',
- $upload_log_periodic_cleanup = false,
- # note : not currently supported
- $enable_upload_log_via_http = false,
+ $image_log_periodic_cleanup = undef,
+ $upload_log_document_root = undef,
+ $upload_log_periodic_cleanup = undef,
+ $enable_upload_log_via_http = undef,
+ # /end
$environment = {},
# enable sudo for nodepool user. Useful for using dib with nodepool
$sudo = true,
@@ -333,95 +342,6 @@ class nodepool (
require => File['/etc/init.d/nodepool'],
}
- if $image_log_document_root == $upload_log_document_root {
- # It makes no sense to ask to not export build or upload logs, but
- # then have them log to the same directory that will be exported.
- if (($enable_image_log_via_http and !$enable_upload_log_via_http) or
- ($enable_upload_log_via_http and !$enable_image_log_via_http)
- ) {
- fail('Unexported logs in same directory as exported logs!')
- }
- }
-
- # we only need to create the upload log dir if it is separate to the
- # image log.
- $separate_upload_log_dir =
- $image_log_document_root != $upload_log_document_root
-
- if $enable_image_log_via_http == true or
- $enable_upload_log_via_http == true {
- # Setup apache for log access
- include ::httpd
-
- ::httpd::vhost { $vhost_name:
- port => 80,
- priority => '50',
- docroot => 'MEANINGLESS_ARGUMENT',
- template => 'nodepool/nodepool-log.vhost.erb',
- }
- if ! defined(Httpd::Mod['rewrite']) {
- httpd::mod { 'rewrite': ensure => present }
- }
- if ! defined(Httpd::Mod['proxy']) {
- httpd::mod { 'proxy': ensure => present }
- }
- if ! defined(Httpd::Mod['proxy_http']) {
- httpd::mod { 'proxy_http': ensure => present }
- }
- }
-
- if $image_log_document_root != '/var/log/nodepool' {
- file { $image_log_document_root:
- ensure => directory,
- mode => '0755',
- owner => 'nodepool',
- group => 'nodepool',
- require => [
- User['nodepool'],
- File['/var/log/nodepool'],
- ],
- }
- }
-
- # we only need this if it is different to the image_log
- if $separate_upload_log_dir
- {
- file { $upload_log_document_root:
- ensure => directory,
- mode => '0755',
- owner => 'nodepool',
- group => 'nodepool',
- require => [
- User['nodepool'],
- File['/var/log/nodepool'],
- ],
- }
- }
-
- # run a cleanup on the image log directory to cleanup logs for
- # images that are no longer being built
- if $image_log_periodic_cleanup == true {
- cron { 'image_log_cleanup':
- user => 'nodepool',
- hour => '1',
- minute => '0',
- command => "find ${image_log_document_root} \\( -name '*.log' -o -name '*.log.*' \\) -mtime +7 -execdir rm {} \\;",
- environment => 'PATH=/usr/bin:/bin:/usr/sbin:/sbin',
- }
- }
-
- # run a cleanup on the upload log directory to cleanup logs for
- # providers that are no long uploading
- if $upload_log_periodic_cleanup == true {
- cron { 'upload_log_cleanup':
- user => 'nodepool',
- hour => '1',
- minute => '0',
- command => "find ${upload_log_document_root} \\( -name '*.log' -o -name '*.log.*' \\) -mtime +7 -execdir rm {} \\;",
- environment => 'PATH=/usr/bin:/bin:/usr/sbin:/sbin',
- }
- }
-
if $sudo == true {
$sudo_file_ensure = present
}
diff --git a/manifests/launcher.pp b/manifests/launcher.pp
index 00036be..a35b0b9 100644
--- a/manifests/launcher.pp
+++ b/manifests/launcher.pp
@@ -19,6 +19,10 @@ class nodepool::launcher(
$statsd_prefix = undef,
$nodepool_ssh_public_key = undef,
$launcher_logging_conf_template = 'nodepool/nodepool-launcher.logging.conf.erb',
+ # If true, an apache will be setup to redirect webapp end-points to
+ # the local webapp instance (on port 8005)
+ $enable_webapp = false,
+ $vhost_name = $::fqdn,
) {
if ! defined(File['/home/nodepool/.ssh']) {
@@ -87,4 +91,25 @@ class nodepool::launcher(
File['/etc/nodepool/launcher-logging.conf'],
],
}
+
+ if $enable_webapp == true {
+ include ::httpd
+
+ ::httpd::vhost { $vhost_name:
+ port => 80,
+ priority => '50',
+ docroot => 'MEANINGLESS_ARGUMENT',
+ template => 'nodepool/nodepool-launcher.vhost.erb',
+ }
+ if ! defined(Httpd::Mod['rewrite']) {
+ httpd::mod { 'rewrite': ensure => present }
+ }
+ if ! defined(Httpd::Mod['proxy']) {
+ httpd::mod { 'proxy': ensure => present }
+ }
+ if ! defined(Httpd::Mod['proxy_http']) {
+ httpd::mod { 'proxy_http': ensure => present }
+ }
+ }
+
}
diff --git a/templates/nodepool-builder.vhost.erb b/templates/nodepool-builder.vhost.erb
new file mode 100644
index 0000000..fffc1d6
--- /dev/null
+++ b/templates/nodepool-builder.vhost.erb
@@ -0,0 +1,22 @@
+
+ ServerName <%= scope.lookupvar("nodepool::builder::vhost_name") %>
+
+ DocumentRoot <%= scope.lookupvar("nodepool::builder::build_log_document_root") %>
+ >
+ Options <%= scope.lookupvar("httpd::params::options") %>
+ AllowOverride None
+ Require all granted
+
+
+ ErrorLog /var/log/<%= scope.lookupvar("httpd::params::apache_name") %>/nodepool_error.log
+ LogLevel warn
+ CustomLog /var/log/<%= scope.lookupvar("httpd::params::apache_name") %>/nodepool_access.log combined
+ ServerSignature Off
+
+ AddType text/plain .log
+
+
+ SetOutputFilter DEFLATE
+
+
+
diff --git a/templates/nodepool-launcher.vhost.erb b/templates/nodepool-launcher.vhost.erb
new file mode 100644
index 0000000..3af503a
--- /dev/null
+++ b/templates/nodepool-launcher.vhost.erb
@@ -0,0 +1,19 @@
+
+ ServerName <%= scope.lookupvar("nodepool::launcher::vhost_name") %>
+
+ ErrorLog /var/log/<%= scope.lookupvar("httpd::params::apache_name") %>/nodepool_error.log
+ LogLevel warn
+ CustomLog /var/log/<%= scope.lookupvar("httpd::params::apache_name") %>/nodepool_access.log combined
+ ServerSignature Off
+
+
+ SetOutputFilter DEFLATE
+
+
+ RewriteEngine on
+ RewriteRule ^/image-list$ http://127.0.0.1:8005/image-list [P]
+ RewriteRule ^/dib-image-list$ http://127.0.0.1:8005/dib-image-list [P]
+ RewriteRule ^/image-list.json$ http://127.0.0.1:8005/image-list.json [P]
+ RewriteRule ^/dib-image-list.json$ http://127.0.0.1:8005/dib-image-list.json [P]
+
+
diff --git a/templates/nodepool-log.vhost.erb b/templates/nodepool-log.vhost.erb
deleted file mode 100644
index 17dfb4d..0000000
--- a/templates/nodepool-log.vhost.erb
+++ /dev/null
@@ -1,40 +0,0 @@
-
- ServerName <%= scope.lookupvar("nodepool::vhost_name") %>
-
- DocumentRoot <%= scope.lookupvar("nodepool::image_log_document_root") %>
-
- <% if scope.lookupvar("nodepool::enable_image_log_via_http") -%>
- >
- Options <%= scope.lookupvar("httpd::params::options") %>
- AllowOverride None
- Require all granted
-
- <% end -%>
-
- <% if scope.lookupvar("nodepool::enable_upload_log_via_http") and scope.lookupvar("nodepool::separate_upload_log_dir") -%>
- Alias "/upload" <%= scope.lookupvar("nodepool::upload_log_document_root") %>
- >
- Options <%= scope.lookupvar("httpd::params::options") %>
- AllowOverride None
- Require all granted
-
- <% end -%>
-
- ErrorLog /var/log/<%= scope.lookupvar("httpd::params::apache_name") %>/nodepool_error.log
- LogLevel warn
- CustomLog /var/log/<%= scope.lookupvar("httpd::params::apache_name") %>/nodepool_access.log combined
- ServerSignature Off
-
- AddType text/plain .log
-
- RewriteEngine on
- RewriteRule ^/image-list$ http://127.0.0.1:8005/image-list [P]
- RewriteRule ^/dib-image-list$ http://127.0.0.1:8005/dib-image-list [P]
- RewriteRule ^/image-list.json$ http://127.0.0.1:8005/image-list.json [P]
- RewriteRule ^/dib-image-list.json$ http://127.0.0.1:8005/dib-image-list.json [P]
-
-
- SetOutputFilter DEFLATE
-
-
-