From 9c8ac5c6779026976869234b5688626a8bacad8e Mon Sep 17 00:00:00 2001 From: Alexandru Avadanii Date: Mon, 9 May 2016 21:50:08 +0200 Subject: UX: Fix: rtc-efi blacklist for Ubuntu targets. Previously, rtc-efi module was blacklisted in fuel-library preseed cobbler template, which is not used for Ubuntu target nodes. Fix by instead blacklisting rtc-efi in cloud-init jinja2 template. Change-Id: I325f8d1f411f51d494df7c738f1933445d996ff6 (cherry picked from commit c73afc11396a8a11d14f2fb74ad616297a90fa1d) --- ...Ubuntu-Blacklist-rtc-efi-if-not-supported.patch | 35 ++++++ ...llow-configuring-MySQL-WSREP-SST-provider.patch | 129 +++++++++++++++++++++ ...Ubuntu-Blacklist-rtc-efi-if-not-supported.patch | 51 -------- ...llow-configuring-MySQL-WSREP-SST-provider.patch | 129 --------------------- 4 files changed, 164 insertions(+), 180 deletions(-) create mode 100644 patches/fuel-agent/0010-target-Ubuntu-Blacklist-rtc-efi-if-not-supported.patch create mode 100644 patches/fuel-library/0013-Allow-configuring-MySQL-WSREP-SST-provider.patch delete mode 100644 patches/fuel-library/0013-target-Ubuntu-Blacklist-rtc-efi-if-not-supported.patch delete mode 100644 patches/fuel-library/0014-Allow-configuring-MySQL-WSREP-SST-provider.patch diff --git a/patches/fuel-agent/0010-target-Ubuntu-Blacklist-rtc-efi-if-not-supported.patch b/patches/fuel-agent/0010-target-Ubuntu-Blacklist-rtc-efi-if-not-supported.patch new file mode 100644 index 00000000..b0c32f4f --- /dev/null +++ b/patches/fuel-agent/0010-target-Ubuntu-Blacklist-rtc-efi-if-not-supported.patch @@ -0,0 +1,35 @@ +From: Alexandru Avadanii +Date: Mon, 9 May 2016 21:46:51 +0200 +Subject: [PATCH] target Ubuntu: Blacklist rtc-efi if not supported. + +Older ThunderX and possibly other UEFI-enabled targets do not support +rtc-efi properly, so they end up filling dmesg with useless +complaints about not being able to read system time. + +Target OS (Ubuntu) deployment already has a snippet that blacklists +i2c_piix4 in certain scenarios, so provide a similar test for rtc_efi. +--- + cloud-init-templates/boothook_fuel_7.0_ubuntu.jinja2 | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +diff --git a/cloud-init-templates/boothook_fuel_7.0_ubuntu.jinja2 b/cloud-init-templates/boothook_fuel_7.0_ubuntu.jinja2 +index 253be2d..9758376 100644 +--- a/cloud-init-templates/boothook_fuel_7.0_ubuntu.jinja2 ++++ b/cloud-init-templates/boothook_fuel_7.0_ubuntu.jinja2 +@@ -49,8 +49,14 @@ cloud-init-per instance resolv_conf_head_nameserver /bin/sh -c 'echo nameserver + # configure black module lists + # virt-what should be installed + if [ ! -f /etc/modprobe.d/blacklist-i2c_piix4.conf ]; then +- ( (virt-what | fgrep -q "virtualbox") && echo "blacklist i2c_piix4" >> /etc/modprobe.d/blacklist-i2c_piix4.conf || :) && update-initramfs -u -k all +- modprobe -r i2c_piix4 ++ ( (virt-what | fgrep -q "virtualbox") && \ ++ ( echo "blacklist i2c_piix4" >> /etc/modprobe.d/blacklist-i2c_piix4.conf && \ ++ update-initramfs -u -k all && modprobe -r i2c_piix4 ) || :) ++fi ++if [ ! -f /etc/modprobe.d/blacklist-rtc_efi.conf ]; then ++ ( /bin/cat /sys/class/rtc/rtc0/time > /dev/null 2>&1 ) || \ ++ ( echo "blacklist rtc_efi" >> /target/etc/modprobe.d/blacklist-rtc_efi.conf && \ ++ update-initramfs -u -k all && modprobe -r rtc_efi ) + fi + + cloud-init-per instance conntrack_ipv4 /bin/sh -c 'echo nf_conntrack_ipv4 | tee -a /etc/modules' diff --git a/patches/fuel-library/0013-Allow-configuring-MySQL-WSREP-SST-provider.patch b/patches/fuel-library/0013-Allow-configuring-MySQL-WSREP-SST-provider.patch new file mode 100644 index 00000000..c7000ae8 --- /dev/null +++ b/patches/fuel-library/0013-Allow-configuring-MySQL-WSREP-SST-provider.patch @@ -0,0 +1,129 @@ +From: Stanislaw Kardach +Date: Wed, 20 Apr 2016 14:54:42 -0700 +Subject: [PATCH] Allow configuring MySQL WSREP SST provider + +On some arm64 platforms xtrabackup is broken due to an outdated +MySQL/InnoDB code that it uses which is missing. To work around that +this patch allows choosing which WSREP SST provider to use. Aside of +already supported `xtrabackup-v2` and `mysqldump`, the `rsync` method +has been added as it is comparable to xtrabackup in terms of speed (or +is faster), has been validated to work on arm64 platforms where +xtrabackup is broken and it doesn't rely on db mechanisms to perform the +state transfer. + +This patch is tied to a patch in fuel-web that introduces configuration +options for WSREP SST provider and in case nothing is specified, it +will choose `xtrabackup-v2`. + +Signed-off-by: Stanislaw Kardach +--- + deployment/puppet/galera/manifests/init.pp | 15 ++++++++++++++- + deployment/puppet/mysql/manifests/server.pp | 4 ++++ + .../puppet/osnailyfacter/modular/database/database.pp | 7 +++++++ + 3 files changed, 25 insertions(+), 1 deletion(-) + +diff --git a/deployment/puppet/galera/manifests/init.pp b/deployment/puppet/galera/manifests/init.pp +index 7f25ab3..12ad387 100644 +--- a/deployment/puppet/galera/manifests/init.pp ++++ b/deployment/puppet/galera/manifests/init.pp +@@ -51,7 +51,7 @@ + # [*wsrep_sst_method*] + # (optional) The method for state snapshot transfer between nodes + # Defaults to xtrabackup-v2 +-# xtrabackup, xtrabackup-v2, mysqldump are supported ++# xtrabackup, xtrabackup-v2, mysqldump and rsync are supported + # + # [*use_percona*] + # Boolean. Set this value to true if you want to use percona instead of +@@ -199,6 +199,19 @@ class galera ( + elsif $wsrep_sst_method == 'mysqldump' { + $wsrep_sst_auth = true + } ++ elsif $wsrep_sst_method == 'rsync' { ++ firewall {'101 mysql-rsync': ++ port => 4444, ++ proto => 'tcp', ++ action => 'accept', ++ before => Package['MySQL-server'], ++ } ++ package { 'rsync': ++ ensure => present, ++ before => Package['MySQL-server'], ++ } ++ $wsrep_sst_auth = undef ++ } + else { + $wsrep_sst_auth = undef + warning("Unrecognized wsrep_sst method: ${wsrep_sst_auth}") +diff --git a/deployment/puppet/mysql/manifests/server.pp b/deployment/puppet/mysql/manifests/server.pp +index 4cce092..631ed69 100644 +--- a/deployment/puppet/mysql/manifests/server.pp ++++ b/deployment/puppet/mysql/manifests/server.pp +@@ -42,6 +42,7 @@ class mysql::server ( + $use_syslog = true, + $wait_timeout = $mysql::params::wait_timeout, + $ignore_db_dirs = $mysql::params::ignore_db_dirs, ++ $wsrep_sst_method = 'xtrabackup-v2', + ) inherits mysql::params { + + if ($config_hash['config_file']) { +@@ -226,6 +227,7 @@ class mysql::server ( + gcache_factor => $galera_gcache_factor, + skip_name_resolve => $mysql_skip_name_resolve, + use_syslog => $use_syslog, ++ wsrep_sst_method => $wsrep_sst_method, + wsrep_sst_password => $root_password, + } + +@@ -240,6 +242,7 @@ class mysql::server ( + gcache_factor => $galera_gcache_factor, + skip_name_resolve => $mysql_skip_name_resolve, + use_syslog => $use_syslog, ++ wsrep_sst_method => $wsrep_sst_method, + wsrep_sst_password => $root_password, + use_percona => true, + } +@@ -253,6 +256,7 @@ class mysql::server ( + gcache_factor => $galera_gcache_factor, + skip_name_resolve => $mysql_skip_name_resolve, + use_syslog => $use_syslog, ++ wsrep_sst_method => $wsrep_sst_method, + wsrep_sst_password => $root_password, + use_percona => true, + use_percona_packages => true +diff --git a/deployment/puppet/osnailyfacter/modular/database/database.pp b/deployment/puppet/osnailyfacter/modular/database/database.pp +index d3fb736..d7ca319 100644 +--- a/deployment/puppet/osnailyfacter/modular/database/database.pp ++++ b/deployment/puppet/osnailyfacter/modular/database/database.pp +@@ -1,10 +1,15 @@ + notice('MODULAR: database.pp') + ++$default_wsrep_hash = { ++ 'wsrep_method' => 'xtrabackup-x2', ++} ++ + $network_scheme = hiera_hash('network_scheme', {}) + prepare_network_config($network_scheme) + $use_syslog = hiera('use_syslog', true) + $primary_controller = hiera('primary_controller') + $mysql_hash = hiera_hash('mysql', {}) ++$wsrep_hash = hiera_hash('mysql_wsrep', $default_wsrep_hash) + $management_vip = hiera('management_vip') + $database_vip = hiera('database_vip', $management_vip) + +@@ -17,6 +22,7 @@ $haproxy_stats_url = "http://${database_vip}:${haproxy_stats_port}/;csv" + + $mysql_database_password = $mysql_hash['root_password'] + $enabled = pick($mysql_hash['enabled'], true) ++$wsrep_sst_method = $wsrep_hash['wsrep_method'] + + $galera_node_address = get_network_role_property('mgmt/database', 'ipaddr') + $galera_nodes = values(get_node_to_ipaddr_map_by_network_role(hiera_hash('database_nodes'), 'mgmt/database')) +@@ -78,6 +84,7 @@ if $enabled { + use_syslog => $use_syslog, + config_hash => $config_hash_real, + ignore_db_dirs => $ignore_db_dirs, ++ wsrep_sst_method => $wsrep_sst_method, + } + + class { 'osnailyfacter::mysql_user': diff --git a/patches/fuel-library/0013-target-Ubuntu-Blacklist-rtc-efi-if-not-supported.patch b/patches/fuel-library/0013-target-Ubuntu-Blacklist-rtc-efi-if-not-supported.patch deleted file mode 100644 index cfc1f6cb..00000000 --- a/patches/fuel-library/0013-target-Ubuntu-Blacklist-rtc-efi-if-not-supported.patch +++ /dev/null @@ -1,51 +0,0 @@ -From: Alexandru Avadanii -Date: Sun, 17 Apr 2016 17:53:46 +0200 -Subject: [PATCH] target Ubuntu: Blacklist rtc-efi if not supported. - -Older ThunderX and possibly other UEFI-enabled targets do not support -rtc-efi properly, so they end up filling dmesg with useless -complaints about not being able to read system time. - -Target OS (Ubuntu) deployment already has a snippet that blacklists -i2c_piix4 in certain scenarios, so provide a similar test for rtc_efi. - -update-initramfs is already invoked from i2c_piix4 snippet, so ommit -explicitly calling it in rtc_efi fragment. ---- - deployment/puppet/cobbler/manifests/snippets.pp | 1 + - deployment/puppet/cobbler/templates/preseed/ubuntu-1404.preseed.erb | 1 + - .../puppet/cobbler/templates/snippets/ubuntu_blacklist_rtc_efi.erb | 1 + - 3 files changed, 3 insertions(+) - create mode 100644 deployment/puppet/cobbler/templates/snippets/ubuntu_blacklist_rtc_efi.erb - -diff --git a/deployment/puppet/cobbler/manifests/snippets.pp b/deployment/puppet/cobbler/manifests/snippets.pp -index 46c76d0..5ab9a17 100644 ---- a/deployment/puppet/cobbler/manifests/snippets.pp -+++ b/deployment/puppet/cobbler/manifests/snippets.pp -@@ -58,6 +58,7 @@ class cobbler::snippets { - cobbler_snippet {"centos_static_net":} - cobbler_snippet {"ofed_install_with_sriov":} - cobbler_snippet {"ubuntu_authorized_keys":} -+ cobbler_snippet {"ubuntu_blacklist_rtc_efi":} - cobbler_snippet {"ubuntu_blacklist_i2c_piix4":} - cobbler_snippet {"ubuntu_disable_pxe":} - cobbler_snippet {"ubuntu_puppet_config":} -diff --git a/deployment/puppet/cobbler/templates/preseed/ubuntu-1404.preseed.erb b/deployment/puppet/cobbler/templates/preseed/ubuntu-1404.preseed.erb -index 65c6c69..8e17a0e 100644 ---- a/deployment/puppet/cobbler/templates/preseed/ubuntu-1404.preseed.erb -+++ b/deployment/puppet/cobbler/templates/preseed/ubuntu-1404.preseed.erb -@@ -177,6 +177,7 @@ echo target > /target/etc/nailgun_systemtype && \ - $SNIPPET('ubuntu_authorized_keys') - sed -i -e "/^\s*GSSAPICleanupCredentials yes/d" -e "/^\s*GSSAPIAuthentication yes/d" -e "s/.*PasswordAuthentication\ .*/PasswordAuthentication\ no/g" -e "/UseDNS/d" /target/etc/ssh/sshd_config && \ - echo "UseDNS no" >> /target/etc/ssh/sshd_config && \ -+$SNIPPET('ubuntu_blacklist_rtc_efi') - $SNIPPET('ubuntu_blacklist_i2c_piix4') - $SNIPPET('ubuntu_static_net') - $SNIPPET('ofed_install_with_sriov') -diff --git a/deployment/puppet/cobbler/templates/snippets/ubuntu_blacklist_rtc_efi.erb b/deployment/puppet/cobbler/templates/snippets/ubuntu_blacklist_rtc_efi.erb -new file mode 100644 -index 0000000..902f142 ---- /dev/null -+++ b/deployment/puppet/cobbler/templates/snippets/ubuntu_blacklist_rtc_efi.erb -@@ -0,0 +1 @@ -+( /bin/cat /sys/class/rtc/rtc0/time > /dev/null 2>&1 || echo "blacklist rtc_efi" >> /target/etc/modprobe.d/blacklist-rtc_efi.conf ) && \ diff --git a/patches/fuel-library/0014-Allow-configuring-MySQL-WSREP-SST-provider.patch b/patches/fuel-library/0014-Allow-configuring-MySQL-WSREP-SST-provider.patch deleted file mode 100644 index c7000ae8..00000000 --- a/patches/fuel-library/0014-Allow-configuring-MySQL-WSREP-SST-provider.patch +++ /dev/null @@ -1,129 +0,0 @@ -From: Stanislaw Kardach -Date: Wed, 20 Apr 2016 14:54:42 -0700 -Subject: [PATCH] Allow configuring MySQL WSREP SST provider - -On some arm64 platforms xtrabackup is broken due to an outdated -MySQL/InnoDB code that it uses which is missing. To work around that -this patch allows choosing which WSREP SST provider to use. Aside of -already supported `xtrabackup-v2` and `mysqldump`, the `rsync` method -has been added as it is comparable to xtrabackup in terms of speed (or -is faster), has been validated to work on arm64 platforms where -xtrabackup is broken and it doesn't rely on db mechanisms to perform the -state transfer. - -This patch is tied to a patch in fuel-web that introduces configuration -options for WSREP SST provider and in case nothing is specified, it -will choose `xtrabackup-v2`. - -Signed-off-by: Stanislaw Kardach ---- - deployment/puppet/galera/manifests/init.pp | 15 ++++++++++++++- - deployment/puppet/mysql/manifests/server.pp | 4 ++++ - .../puppet/osnailyfacter/modular/database/database.pp | 7 +++++++ - 3 files changed, 25 insertions(+), 1 deletion(-) - -diff --git a/deployment/puppet/galera/manifests/init.pp b/deployment/puppet/galera/manifests/init.pp -index 7f25ab3..12ad387 100644 ---- a/deployment/puppet/galera/manifests/init.pp -+++ b/deployment/puppet/galera/manifests/init.pp -@@ -51,7 +51,7 @@ - # [*wsrep_sst_method*] - # (optional) The method for state snapshot transfer between nodes - # Defaults to xtrabackup-v2 --# xtrabackup, xtrabackup-v2, mysqldump are supported -+# xtrabackup, xtrabackup-v2, mysqldump and rsync are supported - # - # [*use_percona*] - # Boolean. Set this value to true if you want to use percona instead of -@@ -199,6 +199,19 @@ class galera ( - elsif $wsrep_sst_method == 'mysqldump' { - $wsrep_sst_auth = true - } -+ elsif $wsrep_sst_method == 'rsync' { -+ firewall {'101 mysql-rsync': -+ port => 4444, -+ proto => 'tcp', -+ action => 'accept', -+ before => Package['MySQL-server'], -+ } -+ package { 'rsync': -+ ensure => present, -+ before => Package['MySQL-server'], -+ } -+ $wsrep_sst_auth = undef -+ } - else { - $wsrep_sst_auth = undef - warning("Unrecognized wsrep_sst method: ${wsrep_sst_auth}") -diff --git a/deployment/puppet/mysql/manifests/server.pp b/deployment/puppet/mysql/manifests/server.pp -index 4cce092..631ed69 100644 ---- a/deployment/puppet/mysql/manifests/server.pp -+++ b/deployment/puppet/mysql/manifests/server.pp -@@ -42,6 +42,7 @@ class mysql::server ( - $use_syslog = true, - $wait_timeout = $mysql::params::wait_timeout, - $ignore_db_dirs = $mysql::params::ignore_db_dirs, -+ $wsrep_sst_method = 'xtrabackup-v2', - ) inherits mysql::params { - - if ($config_hash['config_file']) { -@@ -226,6 +227,7 @@ class mysql::server ( - gcache_factor => $galera_gcache_factor, - skip_name_resolve => $mysql_skip_name_resolve, - use_syslog => $use_syslog, -+ wsrep_sst_method => $wsrep_sst_method, - wsrep_sst_password => $root_password, - } - -@@ -240,6 +242,7 @@ class mysql::server ( - gcache_factor => $galera_gcache_factor, - skip_name_resolve => $mysql_skip_name_resolve, - use_syslog => $use_syslog, -+ wsrep_sst_method => $wsrep_sst_method, - wsrep_sst_password => $root_password, - use_percona => true, - } -@@ -253,6 +256,7 @@ class mysql::server ( - gcache_factor => $galera_gcache_factor, - skip_name_resolve => $mysql_skip_name_resolve, - use_syslog => $use_syslog, -+ wsrep_sst_method => $wsrep_sst_method, - wsrep_sst_password => $root_password, - use_percona => true, - use_percona_packages => true -diff --git a/deployment/puppet/osnailyfacter/modular/database/database.pp b/deployment/puppet/osnailyfacter/modular/database/database.pp -index d3fb736..d7ca319 100644 ---- a/deployment/puppet/osnailyfacter/modular/database/database.pp -+++ b/deployment/puppet/osnailyfacter/modular/database/database.pp -@@ -1,10 +1,15 @@ - notice('MODULAR: database.pp') - -+$default_wsrep_hash = { -+ 'wsrep_method' => 'xtrabackup-x2', -+} -+ - $network_scheme = hiera_hash('network_scheme', {}) - prepare_network_config($network_scheme) - $use_syslog = hiera('use_syslog', true) - $primary_controller = hiera('primary_controller') - $mysql_hash = hiera_hash('mysql', {}) -+$wsrep_hash = hiera_hash('mysql_wsrep', $default_wsrep_hash) - $management_vip = hiera('management_vip') - $database_vip = hiera('database_vip', $management_vip) - -@@ -17,6 +22,7 @@ $haproxy_stats_url = "http://${database_vip}:${haproxy_stats_port}/;csv" - - $mysql_database_password = $mysql_hash['root_password'] - $enabled = pick($mysql_hash['enabled'], true) -+$wsrep_sst_method = $wsrep_hash['wsrep_method'] - - $galera_node_address = get_network_role_property('mgmt/database', 'ipaddr') - $galera_nodes = values(get_node_to_ipaddr_map_by_network_role(hiera_hash('database_nodes'), 'mgmt/database')) -@@ -78,6 +84,7 @@ if $enabled { - use_syslog => $use_syslog, - config_hash => $config_hash_real, - ignore_db_dirs => $ignore_db_dirs, -+ wsrep_sst_method => $wsrep_sst_method, - } - - class { 'osnailyfacter::mysql_user': -- cgit 1.2.3-korg