From 4938153ae685786d8debef67c4c76fbb27df8da4 Mon Sep 17 00:00:00 2001 From: Mikhail S Medvedev Date: Wed, 28 Jan 2015 00:16:21 -0600 Subject: [PATCH] Split out nodepool module The spec: http://specs.openstack.org/openstack-infra/infra-specs/specs/puppet-modules.html Depends-On: Ib47ebbe6eddfcab3476e3ece952482a03ee5cbd6 Change-Id: I6992979d0e779c0ab85dbaca019224f4efdf5f58 --- modules.env | 1 + modules/nodepool/files/nodepool-sudo.sudo | 1 - modules/nodepool/files/nodepool.init | 159 --------- modules/nodepool/files/ssh.config | 3 - modules/nodepool/manifests/init.pp | 313 ------------------ .../nodepool/templates/nodepool-log.vhost.erb | 22 -- .../nodepool/templates/nodepool.default.erb | 8 - .../templates/nodepool.logging.conf.erb | 56 ---- 8 files changed, 1 insertion(+), 562 deletions(-) delete mode 100644 modules/nodepool/files/nodepool-sudo.sudo delete mode 100755 modules/nodepool/files/nodepool.init delete mode 100644 modules/nodepool/files/ssh.config delete mode 100644 modules/nodepool/manifests/init.pp delete mode 100644 modules/nodepool/templates/nodepool-log.vhost.erb delete mode 100644 modules/nodepool/templates/nodepool.default.erb delete mode 100644 modules/nodepool/templates/nodepool.logging.conf.erb diff --git a/modules.env b/modules.env index ccecebbdfb..bbea152d8b 100644 --- a/modules.env +++ b/modules.env @@ -62,6 +62,7 @@ INTEGRATION_MODULES["https://git.openstack.org/openstack-infra/puppet-kibana"]=" INTEGRATION_MODULES["https://git.openstack.org/openstack-infra/puppet-lodgeit"]="origin/master" INTEGRATION_MODULES["https://git.openstack.org/openstack-infra/puppet-logstash"]="origin/master" INTEGRATION_MODULES["https://git.openstack.org/openstack-infra/puppet-meetbot"]="origin/master" +INTEGRATION_MODULES["https://git.openstack.org/openstack-infra/puppet-nodepool"]="origin/master" INTEGRATION_MODULES["https://git.openstack.org/openstack-infra/puppet-jenkins"]="origin/master" INTEGRATION_MODULES["https://git.openstack.org/openstack-infra/puppet-pip"]="origin/master" INTEGRATION_MODULES["https://git.openstack.org/openstack-infra/puppet-github"]="origin/master" diff --git a/modules/nodepool/files/nodepool-sudo.sudo b/modules/nodepool/files/nodepool-sudo.sudo deleted file mode 100644 index 5651f1beaa..0000000000 --- a/modules/nodepool/files/nodepool-sudo.sudo +++ /dev/null @@ -1 +0,0 @@ -nodepool ALL=(ALL) NOPASSWD:ALL diff --git a/modules/nodepool/files/nodepool.init b/modules/nodepool/files/nodepool.init deleted file mode 100755 index 3d8d729028..0000000000 --- a/modules/nodepool/files/nodepool.init +++ /dev/null @@ -1,159 +0,0 @@ -#! /bin/sh -### BEGIN INIT INFO -# Provides: nodepool -# Required-Start: $remote_fs $syslog -# Required-Stop: $remote_fs $syslog -# Default-Start: 2 3 4 5 -# Default-Stop: 0 1 6 -# Short-Description: Nodepool -# Description: Trunk gating system -### END INIT INFO - -# Do NOT "set -e" - -# PATH should only include /usr/* if it runs after the mountnfs.sh script -PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin -DESC="Nodepool" -NAME=nodepool -DAEMON=/usr/local/bin/nodepoold -PIDFILE=/var/run/$NAME/$NAME.pid -SCRIPTNAME=/etc/init.d/$NAME -USER=nodepool - -# Exit if the package is not installed -[ -x "$DAEMON" ] || exit 0 - -# Read configuration variable file if it is present -[ -r /etc/default/$NAME ] && . /etc/default/$NAME - -# Load the VERBOSE setting and other rcS variables -. /lib/init/vars.sh - -# Define LSB log_* functions. -# Depend on lsb-base (>= 3.0-6) to ensure that this file is present. -. /lib/lsb/init-functions - -# -# Function that starts the daemon/service -# -do_start() -{ - # Return - # 0 if daemon has been started - # 1 if daemon was already running - # 2 if daemon could not be started - - mkdir -p /var/run/$NAME - chown $USER /var/run/$NAME - ulimit -n 8192 - start-stop-daemon --start --quiet --pidfile $PIDFILE -c $USER --exec $DAEMON --test > /dev/null \ - || return 1 - start-stop-daemon --start --quiet --pidfile $PIDFILE -c $USER --exec $DAEMON -- \ - $DAEMON_ARGS \ - || return 2 - # Add code here, if necessary, that waits for the process to be ready - # to handle requests from services started subsequently which depend - # on this one. As a last resort, sleep for some time. -} - -# -# Function that stops the daemon/service -# -do_stop() -{ - # Return - # 0 if daemon has been stopped - # 1 if daemon was already stopped - # 2 if daemon could not be stopped - # other if a failure occurred - start-stop-daemon --stop --signal 9 --pidfile $PIDFILE - RETVAL="$?" - [ "$RETVAL" = 2 ] && return 2 - rm -f /var/run/$NAME/* - return "$RETVAL" -} - -# -# Function that stops the daemon/service -# -do_graceful_stop() -{ - PID=`cat $PIDFILE` - kill -USR1 $PID - - # wait until really stopped - if [ -n "${PID:-}" ]; then - i=0 - while kill -0 "${PID:-}" 2> /dev/null; do - if [ $i -eq '0' ]; then - echo -n " ... waiting " - else - echo -n "." - fi - i=$(($i+1)) - sleep 1 - done - fi - - rm -f /var/run/$NAME/* -} - -# -# Function that sends a SIGHUP to the daemon/service -# -do_reload() { - # - # If the daemon can reload its configuration without - # restarting (for example, when it is sent a SIGHUP), - # then implement that here. - # - start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME - return 0 -} - -case "$1" in - start) - [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME" - do_start - case "$?" in - 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; - 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; - esac - ;; - stop) - [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" - do_stop - case "$?" in - 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; - 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; - esac - ;; - status) - status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $? - ;; - reload|force-reload) - # - # If do_reload() is not implemented then leave this commented out - # and leave 'force-reload' as an alias for 'restart'. - # - log_daemon_msg "Reloading $DESC" "$NAME" - do_reload - log_end_msg $? - ;; - restart) - # - # If the "reload" option is implemented then remove the - # 'force-reload' alias - # - log_daemon_msg "Restarting $DESC" "$NAME" - do_graceful_stop - do_start - ;; - *) - #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2 - echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2 - exit 3 - ;; -esac - -: diff --git a/modules/nodepool/files/ssh.config b/modules/nodepool/files/ssh.config deleted file mode 100644 index bccc9c965a..0000000000 --- a/modules/nodepool/files/ssh.config +++ /dev/null @@ -1,3 +0,0 @@ -UserKnownHostsFile=/dev/null -StrictHostKeyChecking=no -LogLevel=ERROR diff --git a/modules/nodepool/manifests/init.pp b/modules/nodepool/manifests/init.pp deleted file mode 100644 index 090726fbfd..0000000000 --- a/modules/nodepool/manifests/init.pp +++ /dev/null @@ -1,313 +0,0 @@ -# Copyright 2012-2013 Hewlett-Packard Development Company, L.P. -# Copyright 2012 Antoine "hashar" Musso -# Copyright 2012 Wikimedia Foundation Inc. -# Copyright 2013 OpenStack Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -# == Class: nodepool -# -class nodepool ( - $mysql_root_password, - $mysql_password, - $nodepool_ssh_private_key = '', - $git_source_repo = 'https://git.openstack.org/openstack-infra/nodepool', - $revision = 'master', - $statsd_host = '', - $vhost_name = $::fqdn, - $image_log_document_root = '/var/log/nodepool/image', - $enable_image_log_via_http = false, - $environment = {}, - # enable sudo for nodepool user. Useful for using dib with nodepool - $sudo = true, - $scripts_dir = '', - $elements_dir = '', -) { - - # needed by python-keystoneclient, has system bindings - # Zuul and Nodepool both need it, so make it conditional - if ! defined(Package['python-lxml']) { - package { 'python-lxml': - ensure => present, - } - } - - # required by the nodepool diskimage-builder element scripts - if ! defined(Package['python-yaml']) { - package { 'python-yaml': - ensure => present, - } - } - - class { 'mysql::server': - config_hash => { - 'root_password' => $mysql_root_password, - 'default_engine' => 'InnoDB', - 'bind_address' => '127.0.0.1', - } - } - - include mysql::server::account_security - include mysql::python - - mysql::db { 'nodepool': - user => 'nodepool', - password => $mysql_password, - host => 'localhost', - grant => ['all'], - charset => 'utf8', - require => [ - Class['mysql::server'], - Class['mysql::server::account_security'], - ], - } - - $packages = [ - 'build-essential', - 'libffi-dev', - 'libssl-dev', - 'kpartx', - 'qemu-utils', - 'libgmp-dev', # transitive dep of paramiko - # debootstrap is needed for building Debian images - 'debootstrap', - ] - - package { $packages: - ensure => present, - } - - file { '/etc/mysql/conf.d/max_connections.cnf': - ensure => present, - content => "[server]\nmax_connections = 8192\n", - mode => '0444', - owner => 'root', - group => 'root', - } - - user { 'nodepool': - ensure => present, - home => '/home/nodepool', - shell => '/bin/bash', - gid => 'nodepool', - managehome => true, - require => Group['nodepool'], - } - - group { 'nodepool': - ensure => present, - } - - vcsrepo { '/opt/nodepool': - ensure => latest, - provider => git, - revision => $revision, - source => $git_source_repo, - } - - package { 'diskimage-builder': - ensure => latest, - provider => pip, - require => [ - Class['pip'], - Package['python-yaml'], - ], - } - - include pip - exec { 'install_nodepool' : - command => 'pip install /opt/nodepool', - path => '/usr/local/bin:/usr/bin:/bin/', - refreshonly => true, - subscribe => Vcsrepo['/opt/nodepool'], - require => [ - Class['pip'], - Package['build-essential'], - Package['libffi-dev'], - Package['libssl-dev'], - Package['python-lxml'], - Package['libgmp-dev'], - ], - } - - file { '/etc/nodepool': - ensure => directory, - } - - if ($scripts_dir != '') { - file { '/etc/nodepool/scripts': - ensure => directory, - owner => 'root', - group => 'root', - mode => '0755', - recurse => true, - purge => true, - force => true, - require => File['/etc/nodepool'], - source => $scripts_dir, - } - } - - if ($elements_dir != '') { - file { '/etc/nodepool/elements': - ensure => directory, - owner => 'root', - group => 'root', - mode => '0755', - recurse => true, - purge => true, - force => true, - require => File['/etc/nodepool'], - source => $elements_dir - } - } - - file { '/etc/default/nodepool': - ensure => present, - content => template('nodepool/nodepool.default.erb'), - mode => '0444', - owner => 'root', - group => 'root', - } - - # used for storage of d-i-b images in non-ephemeral partition - file { '/opt/nodepool_dib': - ensure => directory, - mode => '0755', - owner => 'nodepool', - group => 'nodepool', - require => User['nodepool'], - } - - # used for storage of d-i-b cached data - file { '/opt/dib_cache': - ensure => directory, - mode => '0755', - owner => 'nodepool', - group => 'nodepool', - require => User['nodepool'], - } - - # used as TMPDIR during d-i-b image builds - file { '/opt/dib_tmp': - ensure => directory, - mode => '0755', - owner => 'nodepool', - group => 'nodepool', - require => User['nodepool'], - } - - file { '/var/log/nodepool': - ensure => directory, - mode => '0755', - owner => 'nodepool', - group => 'nodepool', - require => User['nodepool'], - } - - file { '/var/run/nodepool': - ensure => directory, - mode => '0755', - owner => 'nodepool', - group => 'nodepool', - require => User['nodepool'], - } - - file { '/home/nodepool/.ssh': - ensure => directory, - mode => '0500', - owner => 'nodepool', - group => 'nodepool', - require => User['nodepool'], - } - - file { '/home/nodepool/.ssh/id_rsa': - ensure => present, - content => $nodepool_ssh_private_key, - mode => '0400', - owner => 'nodepool', - group => 'nodepool', - require => File['/home/nodepool/.ssh'], - } - - file { '/home/nodepool/.ssh/config': - ensure => present, - source => 'puppet:///modules/nodepool/ssh.config', - mode => '0440', - owner => 'nodepool', - group => 'nodepool', - require => File['/home/nodepool/.ssh'], - } - - file { '/etc/nodepool/logging.conf': - ensure => present, - mode => '0444', - owner => 'root', - group => 'root', - content => template('nodepool/nodepool.logging.conf.erb'), - } - - file { '/etc/init.d/nodepool': - ensure => present, - mode => '0555', - owner => 'root', - group => 'root', - source => 'puppet:///modules/nodepool/nodepool.init', - } - - service { 'nodepool': - name => 'nodepool', - enable => true, - hasrestart => true, - require => File['/etc/init.d/nodepool'], - } - - if $enable_image_log_via_http == true { - # Setup apache for image log access - include apache - - apache::vhost { $vhost_name: - port => 80, - priority => '50', - docroot => 'MEANINGLESS_ARGUMENT', - template => 'nodepool/nodepool-log.vhost.erb', - } - - 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'], - ], - } - } - } - - if $sudo == true { - $sudo_file_ensure = present - } - else { - $sudo_file_ensure = absent - } - file { '/etc/sudoers.d/nodepool-sudo': - ensure => $sudo_file_ensure, - source => 'puppet:///modules/nodepool/nodepool-sudo.sudo', - owner => 'root', - group => 'root', - mode => '0440', - } -} diff --git a/modules/nodepool/templates/nodepool-log.vhost.erb b/modules/nodepool/templates/nodepool-log.vhost.erb deleted file mode 100644 index 700ecbc983..0000000000 --- a/modules/nodepool/templates/nodepool-log.vhost.erb +++ /dev/null @@ -1,22 +0,0 @@ - - ServerName <%= scope.lookupvar("nodepool::vhost_name") %> - - DocumentRoot <%= scope.lookupvar("nodepool::image_log_document_root") %> - > - Options <%= scope.lookupvar("apache::params::options") %> - AllowOverride None - Require all granted - - - ErrorLog /var/log/<%= scope.lookupvar("apache::params::apache_name") %>/nodepool_error.log - LogLevel warn - CustomLog /var/log/<%= scope.lookupvar("apache::params::apache_name") %>/nodepool_access.log combined - ServerSignature Off - - AddType text/plain .log - - - SetOutputFilter DEFLATE - - - diff --git a/modules/nodepool/templates/nodepool.default.erb b/modules/nodepool/templates/nodepool.default.erb deleted file mode 100644 index a0be88dde9..0000000000 --- a/modules/nodepool/templates/nodepool.default.erb +++ /dev/null @@ -1,8 +0,0 @@ -<% if scope.lookupvar("nodepool::statsd_host") != "" -%> -export STATSD_HOST=<%= scope.lookupvar("nodepool::statsd_host") %> -export STATSD_PORT=8125 -<% end -%> -<% scope.lookupvar("nodepool::environment").keys.sort.each do |key| -%> -export <%= key %>='<%= scope.lookupvar("nodepool::environment")[key] %>' -<% end -%> -DAEMON_ARGS="-c /etc/nodepool/nodepool.yaml -l /etc/nodepool/logging.conf" diff --git a/modules/nodepool/templates/nodepool.logging.conf.erb b/modules/nodepool/templates/nodepool.logging.conf.erb deleted file mode 100644 index e14c553fe1..0000000000 --- a/modules/nodepool/templates/nodepool.logging.conf.erb +++ /dev/null @@ -1,56 +0,0 @@ -[loggers] -keys=root,nodepool,requests,image - -[handlers] -keys=console,debug,normal,image - -[formatters] -keys=simple - -[logger_root] -level=WARNING -handlers=console - -[logger_requests] -level=WARNING -handlers=debug,normal -qualname=requests - -[logger_nodepool] -level=DEBUG -handlers=debug,normal -qualname=nodepool - -[logger_image] -level=INFO -handlers=image -qualname=nodepool.image.build -propagate=0 - -[handler_console] -level=WARNING -class=StreamHandler -formatter=simple -args=(sys.stdout,) - -[handler_debug] -level=DEBUG -class=logging.handlers.TimedRotatingFileHandler -formatter=simple -args=('/var/log/nodepool/debug.log', 'H', 8, 30,) - -[handler_normal] -level=INFO -class=logging.handlers.TimedRotatingFileHandler -formatter=simple -args=('/var/log/nodepool/nodepool.log', 'H', 8, 30,) - -[handler_image] -level=INFO -class=logging.handlers.TimedRotatingFileHandler -formatter=simple -args=('<%= @image_log_document_root %>/image.log', 'H', 8, 30,) - -[formatter_simple] -format=%(asctime)s %(levelname)s %(name)s: %(message)s -datefmt=