Merge "Enable build logs on builder, web app on launchers"
This commit is contained in:
commit
026afd3957
@ -17,7 +17,10 @@
|
|||||||
class nodepool::builder(
|
class nodepool::builder(
|
||||||
$statsd_host = undef,
|
$statsd_host = undef,
|
||||||
$nodepool_ssh_public_key = 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',
|
$builder_logging_conf_template = 'nodepool/nodepool-builder.logging.conf.erb',
|
||||||
$environment = {},
|
$environment = {},
|
||||||
$build_workers = '1',
|
$build_workers = '1',
|
||||||
@ -104,4 +107,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'],
|
||||||
|
],
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -25,14 +25,23 @@ class nodepool (
|
|||||||
$git_source_repo = 'https://git.openstack.org/openstack-infra/nodepool',
|
$git_source_repo = 'https://git.openstack.org/openstack-infra/nodepool',
|
||||||
$revision = 'master',
|
$revision = 'master',
|
||||||
$statsd_host = undef,
|
$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,
|
$vhost_name = $::fqdn,
|
||||||
$image_log_document_root = '/var/log/nodepool/image',
|
$image_log_periodic_cleanup = undef,
|
||||||
$image_log_periodic_cleanup = false,
|
$upload_log_document_root = undef,
|
||||||
$enable_image_log_via_http = false,
|
$upload_log_periodic_cleanup = undef,
|
||||||
$upload_log_document_root = '/var/log/nodepool/upload',
|
$enable_upload_log_via_http = undef,
|
||||||
$upload_log_periodic_cleanup = false,
|
# /end
|
||||||
# note : not currently supported
|
|
||||||
$enable_upload_log_via_http = false,
|
|
||||||
$environment = {},
|
$environment = {},
|
||||||
# enable sudo for nodepool user. Useful for using dib with nodepool
|
# enable sudo for nodepool user. Useful for using dib with nodepool
|
||||||
$sudo = true,
|
$sudo = true,
|
||||||
@ -333,95 +342,6 @@ class nodepool (
|
|||||||
require => File['/etc/init.d/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 {
|
if $sudo == true {
|
||||||
$sudo_file_ensure = present
|
$sudo_file_ensure = present
|
||||||
}
|
}
|
||||||
|
@ -19,6 +19,10 @@ class nodepool::launcher(
|
|||||||
$statsd_prefix = undef,
|
$statsd_prefix = undef,
|
||||||
$nodepool_ssh_public_key = undef,
|
$nodepool_ssh_public_key = undef,
|
||||||
$launcher_logging_conf_template = 'nodepool/nodepool-launcher.logging.conf.erb',
|
$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']) {
|
if ! defined(File['/home/nodepool/.ssh']) {
|
||||||
@ -87,4 +91,25 @@ class nodepool::launcher(
|
|||||||
File['/etc/nodepool/launcher-logging.conf'],
|
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 }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
22
templates/nodepool-builder.vhost.erb
Normal file
22
templates/nodepool-builder.vhost.erb
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
<VirtualHost *:80>
|
||||||
|
ServerName <%= scope.lookupvar("nodepool::builder::vhost_name") %>
|
||||||
|
|
||||||
|
DocumentRoot <%= scope.lookupvar("nodepool::builder::build_log_document_root") %>
|
||||||
|
<Directory <%= scope.lookupvar("nodepool::builder::build_log_document_root") %>>
|
||||||
|
Options <%= scope.lookupvar("httpd::params::options") %>
|
||||||
|
AllowOverride None
|
||||||
|
Require all granted
|
||||||
|
</Directory>
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
<IfModule mod_deflate.c>
|
||||||
|
SetOutputFilter DEFLATE
|
||||||
|
</IfModule>
|
||||||
|
|
||||||
|
</VirtualHost>
|
19
templates/nodepool-launcher.vhost.erb
Normal file
19
templates/nodepool-launcher.vhost.erb
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
<VirtualHost *:80>
|
||||||
|
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
|
||||||
|
|
||||||
|
<IfModule mod_deflate.c>
|
||||||
|
SetOutputFilter DEFLATE
|
||||||
|
</IfModule>
|
||||||
|
|
||||||
|
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]
|
||||||
|
|
||||||
|
</VirtualHost>
|
@ -1,40 +0,0 @@
|
|||||||
<VirtualHost *:80>
|
|
||||||
ServerName <%= scope.lookupvar("nodepool::vhost_name") %>
|
|
||||||
|
|
||||||
DocumentRoot <%= scope.lookupvar("nodepool::image_log_document_root") %>
|
|
||||||
|
|
||||||
<% if scope.lookupvar("nodepool::enable_image_log_via_http") -%>
|
|
||||||
<Directory <%= scope.lookupvar("nodepool::image_log_document_root") %>>
|
|
||||||
Options <%= scope.lookupvar("httpd::params::options") %>
|
|
||||||
AllowOverride None
|
|
||||||
Require all granted
|
|
||||||
</Directory>
|
|
||||||
<% 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") %>
|
|
||||||
<Directory <%= scope.lookupvar("nodepool::upload_log_document_root") %> >
|
|
||||||
Options <%= scope.lookupvar("httpd::params::options") %>
|
|
||||||
AllowOverride None
|
|
||||||
Require all granted
|
|
||||||
</Directory>
|
|
||||||
<% 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]
|
|
||||||
|
|
||||||
<IfModule mod_deflate.c>
|
|
||||||
SetOutputFilter DEFLATE
|
|
||||||
</IfModule>
|
|
||||||
|
|
||||||
</VirtualHost>
|
|
Loading…
Reference in New Issue
Block a user