diff options
-rw-r--r-- | manifests/profile/base/nova/api.pp | 6 | ||||
-rw-r--r-- | manifests/profile/pacemaker/apache.pp | 48 | ||||
-rw-r--r-- | manifests/profile/pacemaker/keystone.pp | 3 | ||||
-rw-r--r-- | templates/database/clustercheck.erb | 56 | ||||
-rw-r--r-- | templates/database/debian.cnf.erb | 13 | ||||
-rwxr-xr-x | templates/database/etc_initd_mysql_Debian | 202 | ||||
-rwxr-xr-x | templates/database/etc_initd_mysql_RedHat | 48 | ||||
-rw-r--r-- | templates/database/mysql.conf.erb | 69 | ||||
-rw-r--r-- | templates/database/mysqlchk.erb | 23 |
9 files changed, 57 insertions, 411 deletions
diff --git a/manifests/profile/base/nova/api.pp b/manifests/profile/base/nova/api.pp index 9c7d295..285e0b7 100644 --- a/manifests/profile/base/nova/api.pp +++ b/manifests/profile/base/nova/api.pp @@ -49,5 +49,11 @@ class tripleo::profile::base::nova::api ( } include ::nova::network::neutron } + + if $step >= 5 { + if hiera('nova_enable_db_purge', true) { + include ::nova::cron::archive_deleted_rows + } + } } diff --git a/manifests/profile/pacemaker/apache.pp b/manifests/profile/pacemaker/apache.pp new file mode 100644 index 0000000..f23d3e7 --- /dev/null +++ b/manifests/profile/pacemaker/apache.pp @@ -0,0 +1,48 @@ +# Copyright 2016 Red Hat, Inc. +# +# 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: tripleo::profile::pacemaker::apache +# +# Apache Pacemaker HA profile for tripleo +# +# === Parameters +# +# [*bootstrap_node*] +# (Optional) The hostname of the node responsible for bootstrapping tasks +# Defaults to hiera('bootstrap_nodeid') +# +# [*step*] +# (Optional) The current step in deployment. See tripleo-heat-templates +# for more details. +# Defaults to hiera('step') +# +class tripleo::profile::pacemaker::apache ( + $bootstrap_node = hiera('bootstrap_nodeid'), + $step = hiera('step'), +) { + + if $::hostname == downcase($bootstrap_node) { + $pacemaker_master = true + } else { + $pacemaker_master = false + } + + if $step >= 5 and $pacemaker_master { + include ::apache::params + pacemaker::resource::service { $::apache::params::service_name: + clone_params => 'interleave=true', + verify_on_create => true, + } + } +} diff --git a/manifests/profile/pacemaker/keystone.pp b/manifests/profile/pacemaker/keystone.pp index 5a3701b..e8e12a3 100644 --- a/manifests/profile/pacemaker/keystone.pp +++ b/manifests/profile/pacemaker/keystone.pp @@ -76,6 +76,9 @@ class tripleo::profile::pacemaker::keystone ( require => [Pacemaker::Resource::Ocf['rabbitmq'], Pacemaker::Resource::Ocf['openstack-core']], } + File['/etc/keystone/ssl/certs/ca.pem'] -> Pacemaker::Resource::Service[$::apache::params::service_name] + File['/etc/keystone/ssl/private/signing_key.pem'] -> Pacemaker::Resource::Service[$::apache::params::service_name] + File['/etc/keystone/ssl/certs/signing_cert.pem'] -> Pacemaker::Resource::Service[$::apache::params::service_name] } } diff --git a/templates/database/clustercheck.erb b/templates/database/clustercheck.erb deleted file mode 100644 index cc3231b..0000000 --- a/templates/database/clustercheck.erb +++ /dev/null @@ -1,56 +0,0 @@ -#!/bin/bash -# Managed by puppet -# -# Script to make a proxy (ie HAProxy) capable of monitoring Galera cluster -# -# Author: Olaf van Zandwijk <olaf.vanzandwijk@nedap.com> -# Mehdi Abaakouk <mehdi.abaakouk@enovance.com> -# -# Documentation and download: https://github.com/olafz/percona-clustercheck -# -# Based on the original script from Unai Rodriguez -# -MYSQL_USERNAME='<%= @galera_clustercheck_dbuser %>' -MYSQL_PASSWORD='<%= @galera_clustercheck_dbpassword %>' - -TIMEOUT=10 -ERR_FILE="/dev/null" -AVAILABLE_WHEN_DONOR=0 - -MYSQL_CMDLINE="mysql -nNE --connect-timeout=$TIMEOUT --user=${MYSQL_USERNAME} --password=${MYSQL_PASSWORD} " - -mysql_get_status(){ - ( $MYSQL_CMDLINE -e "SHOW STATUS LIKE '$1';" | tail -1 ) 2>>${ERR_FILE} -} -mysql_get_var(){ - ( $MYSQL_CMDLINE -e "SHOW GLOBAL VARIABLES LIKE '$1';" | tail -1 ) 2>>${ERR_FILE} -} - -http_response(){ - status=$1 - shift - msg="$@" - if [ "$status" == 200 ]; then - /bin/echo -en "HTTP/1.1 200 OK\r\n" - else - /bin/echo -en "HTTP/1.1 503 Service Unavailable\r\n" - fi - /bin/echo -en "Content-Type: text/plain\r\n" - /bin/echo -en "\r\n" - /bin/echo -en "$msg\r\n" - /bin/echo -en "\r\n" -} - - -WSREP_LOCAL_STATE=$(mysql_get_status wsrep_local_state) -WSREP_READY=$(mysql_get_status wsrep_ready) -WSREP_CONNECTED=$(mysql_get_status wsrep_connected) -READY_ONLY=$(mysql_get_var read_only) - -case ${AVAILABLE_WHEN_DONOR}-${WSREP_LOCAL_STATE}-${WSREP_READY}-${WSREP_CONNECTED}-${READY_ONLY} in - 1-2-ON-ON-OFF|0-4-ON-ON-OFF) http_response 200 "Mariadb Cluster Node is synced, ready and connected." ;; - *-*-OFF-*-*) http_response 503 "Mariadb Cluster Node is not ready." ;; - *-*-*-OFF-*) http_response 503 "Mariadb Cluster Node is not connected" ;; - *-*-*-*-ON) http_response 503 "Mariadb Cluster Node is readonly" ;; - *) http_response 503 "Mariadb Cluster Node is not synced" ;; -esac diff --git a/templates/database/debian.cnf.erb b/templates/database/debian.cnf.erb deleted file mode 100644 index ddcc442..0000000 --- a/templates/database/debian.cnf.erb +++ /dev/null @@ -1,13 +0,0 @@ -# Managed by Puppet -# -[client] -host = localhost -user = debian-sys-maint -password = <%= @mysql_sys_maint_password %> -socket = /var/run/mysqld/mysqld.sock -[mysql_upgrade] -host = localhost -user = debian-sys-maint -password = <%= @mysql_sys_maint_password %> -socket = /var/run/mysqld/mysqld.sock -basedir = /usr diff --git a/templates/database/etc_initd_mysql_Debian b/templates/database/etc_initd_mysql_Debian deleted file mode 100755 index 292251f..0000000 --- a/templates/database/etc_initd_mysql_Debian +++ /dev/null @@ -1,202 +0,0 @@ -#!/bin/bash -# -### BEGIN INIT INFO -# Provides: mysql-bootstrap -# Required-Start: $remote_fs $syslog -# Required-Stop: $remote_fs $syslog -# Should-Start: $network $named $time -# Should-Stop: $network $named $time -# Default-Start: 2 3 4 5 -# Default-Stop: 0 1 6 -# Short-Description: Start and stop the mysql database server daemon -# Description: Controls the main MariaDB database server daemon "mysqld" -# and its wrapper script "mysqld_safe". -### END INIT INFO -# -# Managed by Puppet -# -MYSQLD_STARTUP_TIMEOUT=${MYSQLD_STARTUP_TIMEOUT:-60} -[ -e /etc/mysql/my.cnf ] && \ - MYSQLD_DATA_DIR=$(awk -F= '/^datadir/{print $2}' /etc/mysql/my.cnf | sed -e 's/^ *//') -MYSQLD_DATA_DIR=${MYSQLD_DATA_DIR:-<%= scope.lookupvar('::mysql::datadir') %>} -set -e -set -u -${DEBIAN_SCRIPT_DEBUG:+ set -v -x} - -test -x /usr/sbin/mysqld || exit 0 - -. /lib/lsb/init-functions - -SELF=$(cd $(dirname $0); pwd -P)/$(basename $0) -CONF=/etc/mysql/my.cnf -MYADMIN="/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf" - -# priority can be overriden and "-s" adds output to stderr -ERR_LOGGER="logger -p daemon.err -t /etc/init.d/mysql -i" - -# Safeguard (relative paths, core dumps..) -cd / -umask 077 - -# mysqladmin likes to read /root/.my.cnf. This is usually not what I want -# as many admins e.g. only store a password without a username there and -# so break my scripts. -export HOME=/etc/mysql/ - -## Fetch a particular option from mysql's invocation. -# -# Usage: void mysqld_get_param option -mysqld_get_param() { - /usr/sbin/mysqld --print-defaults \ - | tr " " "\n" \ - | grep -- "--$1" \ - | tail -n 1 \ - | cut -d= -f2 -} - -## Do some sanity checks before even trying to start mysqld. -sanity_checks() { - # check for config file - if [ ! -r /etc/mysql/my.cnf ]; then - log_warning_msg "$0: WARNING: /etc/mysql/my.cnf cannot be read. See README.Debian.gz" - echo "WARNING: /etc/mysql/my.cnf cannot be read. See README.Debian.gz" | $ERR_LOGGER - fi - - # check for diskspace shortage - datadir=`mysqld_get_param datadir` - if LC_ALL=C BLOCKSIZE= df --portability $datadir/. | tail -n 1 | awk '{ exit ($4>4096) }'; then - log_failure_msg "$0: ERROR: The partition with $datadir is too full!" - echo "ERROR: The partition with $datadir is too full!" | $ERR_LOGGER - exit 1 - fi -} - -## Checks if there is a server running and if so if it is accessible. -# -# check_alive insists on a pingable server -# check_dead also fails if there is a lost mysqld in the process list -# -# Usage: boolean mysqld_status [check_alive|check_dead] [warn|nowarn] -mysqld_status () { - ping_output=`$MYADMIN ping 2>&1`; ping_alive=$(( ! $? )) - - ps_alive=0 - pidfile=`mysqld_get_param pid-file` - if [ -f "$pidfile" ] && ps `cat $pidfile` >/dev/null 2>&1; then ps_alive=1; fi - - if [ "$1" = "check_alive" -a $ping_alive = 1 ] || - [ "$1" = "check_dead" -a $ping_alive = 0 -a $ps_alive = 0 ]; then - return 0 # EXIT_SUCCESS - else - if [ "$2" = "warn" ]; then - echo -e "$ps_alive processes alive and '$MYADMIN ping' resulted in\n$ping_output\n" | $ERR_LOGGER -p daemon.debug - fi - return 1 # EXIT_FAILURE - fi -} - -# -# main() -# - -case "${1:-''}" in - 'start') - sanity_checks; - # Start daemon - log_daemon_msg "Starting MariaDB database server" "mysqld" - if mysqld_status check_alive nowarn; then - log_progress_msg "already running" - log_end_msg 0 - else - # Could be removed during boot - test -e /var/run/mysqld || install -m 755 -o mysql -g root -d /var/run/mysqld - - # Start MariaDB! in a Galera setup we want to use - # new-cluster only when the galera cluster hasn't been - # bootstraped - if [ -e ${MYSQLD_DATA_DIR}/grastate.dat ]; then - # normal boot - /usr/bin/mysqld_safe "${@:2}" > /dev/null 2>&1 & - else - # bootstrap boot - log_progress_msg " (Galera bootstrap) " - /usr/bin/mysqld_safe "${@:2}" --wsrep-new-cluster > /dev/null 2>&1 & - fi - - # 6s was reported in #352070 to be too few when using ndbcluster - for i in $(seq 1 "${MYSQLD_STARTUP_TIMEOUT:-30}"); do - sleep 1 - if mysqld_status check_alive nowarn ; then break; fi - log_progress_msg "." - done - if mysqld_status check_alive warn; then - log_end_msg 0 - # Now start mysqlcheck or whatever the admin wants. - output=$(/etc/mysql/debian-start) - [ -n "$output" ] && log_action_msg "$output" - else - log_end_msg 1 - log_failure_msg "Please take a look at the syslog" - fi - fi - ;; - - 'stop') - # * As a passwordless mysqladmin (e.g. via ~/.my.cnf) must be possible - # at least for cron, we can rely on it here, too. (although we have - # to specify it explicit as e.g. sudo environments points to the normal - # users home and not /root) - log_daemon_msg "Stopping MariaDB database server" "mysqld" - if ! mysqld_status check_dead nowarn; then - set +e - shutdown_out=`$MYADMIN shutdown 2>&1`; r=$? - set -e - if [ "$r" -ne 0 ]; then - log_end_msg 1 - [ "$VERBOSE" != "no" ] && log_failure_msg "Error: $shutdown_out" - log_daemon_msg "Killing MariaDB database server by signal" "mysqld" - killall -15 mysqld - server_down= - for i in `seq 1 600`; do - sleep 1 - if mysqld_status check_dead nowarn; then server_down=1; break; fi - done - if test -z "$server_down"; then killall -9 mysqld; fi - fi - fi - - if ! mysqld_status check_dead warn; then - log_end_msg 1 - log_failure_msg "Please stop MariaDB manually and read /usr/share/doc/mariadb-server-5.5/README.Debian.gz!" - exit -1 - else - log_end_msg 0 - fi - ;; - - 'restart') - set +e; $SELF stop; set -e - $SELF start - ;; - - 'reload'|'force-reload') - log_daemon_msg "Reloading MariaDB database server" "mysqld" - $MYADMIN reload - log_end_msg 0 - ;; - - 'status') - if mysqld_status check_alive nowarn; then - log_action_msg "$($MYADMIN version)" - else - log_action_msg "MariaDB is stopped." - exit 3 - fi - ;; - - *) - echo "Usage: $SELF start|stop|restart|reload|force-reload|status" - exit 1 - ;; -esac - diff --git a/templates/database/etc_initd_mysql_RedHat b/templates/database/etc_initd_mysql_RedHat deleted file mode 100755 index 5efdde2..0000000 --- a/templates/database/etc_initd_mysql_RedHat +++ /dev/null @@ -1,48 +0,0 @@ -# It's not recommended to modify this file in-place, because it will be -# overwritten during package upgrades. If you want to customize, the -# best way is to create a file "/etc/systemd/system/mariadb.service", -# containing -# .include /lib/systemd/system/mariadb.service -# ...make your changes here... -# or create a file "/etc/systemd/system/mariadb.service.d/foo.conf", -# which doesn't need to include ".include" call and which will be parsed -# after the file mariadb.service itself is parsed. -# -# For more info about custom unit files, see systemd.unit(5) or -# http://fedoraproject.org/wiki/Systemd#How_do_I_customize_a_unit_file.2F_add_a_custom_unit_file.3F -# For example, if you want to increase mysql's open-files-limit to 10000, -# you need to increase systemd's LimitNOFILE setting, so create a file named -# "/etc/systemd/system/mariadb.service.d/limits.conf" containing: -# [Service] -# LimitNOFILE=10000 -# Note: /usr/lib/... is recommended in the .include line though /lib/... -# still works. -# Don't forget to reload systemd daemon after you change unit configuration: -# root> systemctl --system daemon-reload -# -# Managed by Puppet -# - -[Unit] -Description=MariaDB database server -After=syslog.target -After=network.target - -[Service] -Type=simple -User=mysql -Group=mysql -ExecStartPre=/usr/libexec/mariadb-prepare-db-dir %n -# Note: we set --basedir to prevent probes that might trigger SELinux alarms, -# per bug #547485 -ExecStart=/usr/bin/mysqld_safe --wsrep-new-cluster --basedir=/usr -ExecStartPost=/usr/libexec/mariadb-wait-ready $MAINPID - -# Give a reasonable amount of time for the server to start up/shut down -TimeoutSec=60 - -# Place temp files in a secure directory, not /tmp -PrivateTmp=true - -[Install] -WantedBy=multi-user.target diff --git a/templates/database/mysql.conf.erb b/templates/database/mysql.conf.erb deleted file mode 100644 index a997a7b..0000000 --- a/templates/database/mysql.conf.erb +++ /dev/null @@ -1,69 +0,0 @@ -# MANAGED BY PUPPET -# -[mysqld] -bind-address = <%= @bind_address %> -default_storage_engine = innodb -collation_server = utf8_general_ci -init_connect = 'SET NAMES utf8' -character_set_server = utf8 -max_connections = 1000 -skip_name_resolve = 1 -connect_timeout = 5 -wait_timeout = 600 -max_allowed_packet = 64M -thread_cache_size = 128 -sort_buffer_size = 4M -bulk_insert_buffer_size = 16M -tmp_table_size = 512M -max_heap_table_size = 128M -query_cache_type = 0 -myisam_recover = BACKUP -key_buffer_size = 16M -open_files_limit = 65535 -table_open_cache = 1024 -table_definition_cache = 500 -myisam_sort_buffer_size = 512M -concurrent_insert = 2 -read_buffer_size = 2M -read_rnd_buffer_size = 1M -slow_query_log = 1 -slow_query_log_file = /var/log/mysql/slow.log -log_error = /var/log/mysql/error.log -long_query_time = 1 -log_slow_verbosity = query_plan -innodb_buffer_pool_size = 512M -innodb_flush_log_at_trx_commit = 1 -innodb_lock_wait_timeout = 50 -innodb_thread_concurrency = 48 -innodb_file_per_table = 1 -innodb_open_files = 65535 -innodb_io_capacity = 1000 -innodb_file_format = Barracuda -innodb_file_format_max = Barracuda -innodb_max_dirty_pages_pct = 50 -binlog_format = ROW -innodb_autoinc_lock_mode = 2 -innodb_locks_unsafe_for_binlog = 1 -wsrep_provider = "<%= @wsrep_provider %>" -wsrep_cluster_name = "galera_cluster" -wsrep_cluster_address = "gcomm://<%= @gcomm_definition %>" -wsrep_sst_auth = root:<%= @mysql_root_password %> -wsrep_drupal_282555_workaround = 0 -wsrep_sst_method = rsync -wsrep_node_address = "<%= @bind_address %>" -wsrep_node_incoming_address = "<%= @bind_address %>" -# This is the minimal value (proc*2) -wsrep_slave_threads = "<%= @processorcount.to_i * 2 %>" - -# Thoses TWEAK assume that the galera cluster is used in master/slave mode -wsrep_provider_options = "gcache.size=<%= @galera_gcache %>;gcs.fc_master_slave=1;gcs.fc_limit=256;gcs.fc_factor=0.9" - -# this value here are used by /usr/bin/innobackupex -# and wsrep_sst_xtrabackup take only one configuration file and use the last one -# (/etc/mysql/my.cnf is not used) -datadir = /var/lib/mysql -tmpdir = /tmp/ -innodb_flush_method = O_DIRECT -innodb_log_buffer_size = 32M -innodb_log_file_size = 256M -innodb_log_files_in_group = 2 diff --git a/templates/database/mysqlchk.erb b/templates/database/mysqlchk.erb deleted file mode 100644 index f9fea1d..0000000 --- a/templates/database/mysqlchk.erb +++ /dev/null @@ -1,23 +0,0 @@ -# Managed by puppet -# -# default: on -# description: mysqlchk -service mysqlchk -{ -# this is a config for xinetd, place it in /etc/xinetd.d/ - disable = no - flags = REUSE - socket_type = stream - port = 9200 - wait = no - user = nobody - server = /usr/bin/clustercheck - log_on_failure += USERID - log_on_success = - #FIXME(sbadia) Security: Restrict this parameter to HAProxy pool. - only_from = 0.0.0.0/0 - bind = <%= @galera_clustercheck_ipaddress %> - # recommended to put the IPs that need - # to connect exclusively (security purposes) - per_source = UNLIMITED -} |