diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 800b5bc58..9e243b3b0 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -59,7 +59,7 @@ jobs: if: ${{ github.repository_owner == 'puppetlabs' }} run: | if [ '${{ github.repository_owner }}' == 'puppetlabs' ]; then - echo "::set-output name=matrix::{'platforms':[{'label':'AlmaLinux-8','provider':'provision::docker','image':'litmusimage/almalinux:8'},{'label':'CentOS-7','provider':'provision::docker','image':'litmusimage/centos:7'},{'label':'CentOS-8','provider':'provision::docker','image':'litmusimage/centos:stream8'},{'label':'Debian-10','provider':'provision::provision_service','image':'debian-10'},{'label':'Debian-11','provider':'provision::provision_service','image':'debian-11'},{'label':'Debian-9','provider':'provision::provision_service','image':'debian-9'},{'label':'OracleLinux-6','provider':'provision::docker','image':'litmusimage/oraclelinux:6'},{'label':'OracleLinux-7','provider':'provision::docker','image':'litmusimage/oraclelinux:7'},{'label':'RedHat-7','provider':'provision::provision_service','image':'rhel-7'},{'label':'RedHat-8','provider':'provision::provision_service','image':'rhel-8'},{'label':'Rocky-8','provider':'provision::docker','image':'litmusimage/rockylinux:8'},{'label':'SLES-12','provider':'provision::provision_service','image':'sles-12'},{'label':'SLES-15','provider':'provision::provision_service','image':'sles-15'},{'label':'Scientific-6','provider':'provision::docker','image':'litmusimage/scientificlinux:6'},{'label':'Scientific-7','provider':'provision::docker','image':'litmusimage/scientificlinux:7'},{'label':'Ubuntu-18.04','provider':'provision::docker','image':'litmusimage/ubuntu:18.04'},{'label':'Ubuntu-20.04','provider':'provision::provision_service','image':'ubuntu-2004-lts'}],'collection':['puppet6-nightly','puppet7-nightly']}" + echo "::set-output name=matrix::{'platforms':[{'label':'AlmaLinux-8','provider':'provision::docker','image':'litmusimage/almalinux:8'},{'label':'CentOS-7','provider':'provision::docker','image':'litmusimage/centos:7'},{'label':'CentOS-8','provider':'provision::docker','image':'litmusimage/centos:stream8'},{'label':'Debian-10','provider':'provision::provision_service','image':'debian-10'},{'label':'Debian-11','provider':'provision::provision_service','image':'debian-11'},{'label':'Debian-9','provider':'provision::provision_service','image':'debian-9'},{'label':'OracleLinux-6','provider':'provision::docker','image':'litmusimage/oraclelinux:6'},{'label':'OracleLinux-7','provider':'provision::docker','image':'litmusimage/oraclelinux:7'},{'label':'RedHat-7','provider':'provision::provision_service','image':'rhel-7'},{'label':'RedHat-8','provider':'provision::provision_service','image':'rhel-8'},{'label':'Rocky-8','provider':'provision::docker','image':'litmusimage/rockylinux:8'},{'label':'SLES-12','provider':'provision::provision_service','image':'sles-12'},{'label':'SLES-15','provider':'provision::provision_service','image':'sles-15'},{'label':'Scientific-6','provider':'provision::docker','image':'litmusimage/scientificlinux:6'},{'label':'Scientific-7','provider':'provision::docker','image':'litmusimage/scientificlinux:7'},{'label':'Ubuntu-18.04','provider':'provision::docker','image':'litmusimage/ubuntu:18.04'},{'label':'Ubuntu-20.04','provider':'provision::provision_service','image':'ubuntu-2004-lts'},{'label':'Ubuntu-22.04','provider':'provision::provision_service','image':'ubuntu-2204-lts'}],'collection':['puppet6-nightly','puppet7-nightly']}" else echo "::set-output name=matrix::{}" fi diff --git a/.github/workflows/pr_test.yml b/.github/workflows/pr_test.yml index 1988bc819..65afb85d3 100644 --- a/.github/workflows/pr_test.yml +++ b/.github/workflows/pr_test.yml @@ -61,7 +61,7 @@ jobs: id: get-matrix run: | if [ '${{ github.repository_owner }}' == 'puppetlabs' ]; then - echo "::set-output name=matrix::{'platforms':[{'label':'AlmaLinux-8','provider':'provision::docker','image':'litmusimage/almalinux:8'},{'label':'CentOS-7','provider':'provision::docker','image':'litmusimage/centos:7'},{'label':'CentOS-8','provider':'provision::docker','image':'litmusimage/centos:stream8'},{'label':'Debian-10','provider':'provision::provision_service','image':'debian-10'},{'label':'Debian-11','provider':'provision::provision_service','image':'debian-11'},{'label':'Debian-9','provider':'provision::provision_service','image':'debian-9'},{'label':'OracleLinux-6','provider':'provision::docker','image':'litmusimage/oraclelinux:6'},{'label':'OracleLinux-7','provider':'provision::docker','image':'litmusimage/oraclelinux:7'},{'label':'RedHat-7','provider':'provision::provision_service','image':'rhel-7'},{'label':'RedHat-8','provider':'provision::provision_service','image':'rhel-8'},{'label':'Rocky-8','provider':'provision::docker','image':'litmusimage/rockylinux:8'},{'label':'SLES-12','provider':'provision::provision_service','image':'sles-12'},{'label':'SLES-15','provider':'provision::provision_service','image':'sles-15'},{'label':'Scientific-6','provider':'provision::docker','image':'litmusimage/scientificlinux:6'},{'label':'Scientific-7','provider':'provision::docker','image':'litmusimage/scientificlinux:7'},{'label':'Ubuntu-18.04','provider':'provision::docker','image':'litmusimage/ubuntu:18.04'},{'label':'Ubuntu-20.04','provider':'provision::provision_service','image':'ubuntu-2004-lts'}],'collection':['puppet6','puppet7']}" + echo "::set-output name=matrix::{'platforms':[{'label':'AlmaLinux-8','provider':'provision::docker','image':'litmusimage/almalinux:8'},{'label':'CentOS-7','provider':'provision::docker','image':'litmusimage/centos:7'},{'label':'CentOS-8','provider':'provision::docker','image':'litmusimage/centos:stream8'},{'label':'Debian-10','provider':'provision::provision_service','image':'debian-10'},{'label':'Debian-11','provider':'provision::provision_service','image':'debian-11'},{'label':'Debian-9','provider':'provision::provision_service','image':'debian-9'},{'label':'OracleLinux-6','provider':'provision::docker','image':'litmusimage/oraclelinux:6'},{'label':'OracleLinux-7','provider':'provision::docker','image':'litmusimage/oraclelinux:7'},{'label':'RedHat-7','provider':'provision::provision_service','image':'rhel-7'},{'label':'RedHat-8','provider':'provision::provision_service','image':'rhel-8'},{'label':'Rocky-8','provider':'provision::docker','image':'litmusimage/rockylinux:8'},{'label':'SLES-12','provider':'provision::provision_service','image':'sles-12'},{'label':'SLES-15','provider':'provision::provision_service','image':'sles-15'},{'label':'Scientific-6','provider':'provision::docker','image':'litmusimage/scientificlinux:6'},{'label':'Scientific-7','provider':'provision::docker','image':'litmusimage/scientificlinux:7'},{'label':'Ubuntu-18.04','provider':'provision::docker','image':'litmusimage/ubuntu:18.04'},{'label':'Ubuntu-20.04','provider':'provision::provision_service','image':'ubuntu-2004-lts'},{'label':'Ubuntu-22.04','provider':'provision::provision_service','image':'ubuntu-2204-lts'}],'collection':['puppet6','puppet7']}" else echo "::set-output name=matrix::{}" fi diff --git a/manifests/backup/xtrabackup.pp b/manifests/backup/xtrabackup.pp index c0ad9373a..0c8b20886 100644 --- a/manifests/backup/xtrabackup.pp +++ b/manifests/backup/xtrabackup.pp @@ -50,7 +50,8 @@ require => Class['mysql::server::root_password'], } - if $::osfamily == 'debian' and $::operatingsystemmajrelease == '11' { + if ($facts['os']['name'] == 'Debian' and versioncmp($facts['os']['release']['major'], '11') >= 0) or + ($facts['os']['name'] == 'Ubuntu' and versioncmp($facts['os']['release']['major'], '22.04') >= 0) { mysql_grant { "${backupuser}@localhost/*.*": ensure => $ensure, user => "${backupuser}@localhost", diff --git a/metadata.json b/metadata.json index 6b5a1e92e..5f8afa91d 100644 --- a/metadata.json +++ b/metadata.json @@ -63,7 +63,8 @@ "operatingsystem": "Ubuntu", "operatingsystemrelease": [ "18.04", - "20.04" + "20.04", + "22.04" ] }, { diff --git a/spec/acceptance/00_mysql_server_spec.rb b/spec/acceptance/00_mysql_server_spec.rb index c9aa691ef..0e2c86a23 100644 --- a/spec/acceptance/00_mysql_server_spec.rb +++ b/spec/acceptance/00_mysql_server_spec.rb @@ -38,7 +38,9 @@ class { 'mysql::server': }, databases => { 'somedb' => { - ensure => 'present', + ensure => 'present', + charset => '#{fetch_charset}', + collate => '#{fetch_charset}_general_ci', }, } } diff --git a/spec/acceptance/01_mysql_db_spec.rb b/spec/acceptance/01_mysql_db_spec.rb index 15930a62f..b00b68277 100644 --- a/spec/acceptance/01_mysql_db_spec.rb +++ b/spec/acceptance/01_mysql_db_spec.rb @@ -14,6 +14,8 @@ class { 'mysql::server': mysql::db { 'spec1': user => 'root1', password => 'password', + charset => '#{fetch_charset}', + collate => '#{fetch_charset}_general_ci', } MANIFEST end @@ -42,6 +44,8 @@ class { 'mysql::server': override_options => { 'root_password' => 'password' } } user => 'root1', password => 'password', sql => '/tmp/spec.sql', + charset => '#{fetch_charset}', + collate => '#{fetch_charset}_general_ci', } MANIFEST end @@ -66,6 +70,8 @@ class { 'mysql::server': override_options => { 'root_password' => 'password' } } user => 'root1', password => 'password', dbname => 'realdb', + charset => '#{fetch_charset}', + collate => '#{fetch_charset}_general_ci', } MANIFEST end diff --git a/spec/acceptance/04_mysql_backup_spec.rb b/spec/acceptance/04_mysql_backup_spec.rb index 0e174cb95..6e00a8e94 100644 --- a/spec/acceptance/04_mysql_backup_spec.rb +++ b/spec/acceptance/04_mysql_backup_spec.rb @@ -12,6 +12,8 @@ class { 'mysql::server': root_password => 'password' } ]: user => 'backup', password => 'secret', + charset => '#{fetch_charset}', + collate => '#{fetch_charset}_general_ci', } class { 'mysql::server::backup': @@ -72,6 +74,8 @@ class { 'mysql::server': root_password => 'password' } ]: user => 'backup', password => 'secret', + charset => '#{fetch_charset}', + collate => '#{fetch_charset}_general_ci', } class { 'mysql::server::backup': @@ -136,14 +140,16 @@ class { 'mysql::server': root_password => 'password' } ]: user => 'backup', password => 'secret', + charset => '#{fetch_charset}', + collate => '#{fetch_charset}_general_ci', } case $facts['os']['family'] { /Debian/: { $source_url = "http://repo.percona.com/apt/percona-release_latest.${facts['os']['distro']['codename']}_all.deb" file { '/tmp/percona-release_latest.deb': - ensure => present, - source => $source_url, + ensure => present, + source => $source_url, } ensure_packages('gnupg') ensure_packages('gnupg2') @@ -256,6 +262,8 @@ class { 'mysql::server': root_password => 'password' } ]: user => 'backup', password => 'secret', + charset => '#{fetch_charset}', + collate => '#{fetch_charset}_general_ci', } case $facts['os']['family'] { /Debian/: { diff --git a/spec/acceptance/types/mysql_database_spec.rb b/spec/acceptance/types/mysql_database_spec.rb index ac980fc3c..4f2485703 100644 --- a/spec/acceptance/types/mysql_database_spec.rb +++ b/spec/acceptance/types/mysql_database_spec.rb @@ -15,7 +15,9 @@ class { 'mysql::server': } describe 'creating database' do pp = <<-MANIFEST mysql_database { 'spec_db': - ensure => present, + ensure => present, + charset => '#{fetch_charset}', + collate => '#{fetch_charset}_general_ci', } MANIFEST it 'works without errors' do @@ -37,8 +39,8 @@ class { 'mysql::server': } collate => 'latin1_swedish_ci', } mysql_database { 'spec_utf8': - charset => 'utf8', - collate => 'utf8_general_ci', + charset => '#{fetch_charset}', + collate => '#{fetch_charset}_general_ci', } MANIFEST it 'creates two db of different types idempotently' do @@ -54,7 +56,7 @@ class { 'mysql::server': } it 'finds utf8 db #stdout' do run_shell("mysql -NBe \"SHOW VARIABLES LIKE '%_database'\" spec_utf8") do |r| - expect(r.stdout).to match(%r{^character_set_database\tutf8(mb3)?\ncollation_database\tutf8_general_ci$}) + expect(r.stdout).to match(%r{^character_set_database\tutf8(mb3)?\ncollation_database\tutf8(mb3)?_general_ci$}) expect(r.stderr).to be_empty end end diff --git a/spec/acceptance/types/mysql_grant_spec.rb b/spec/acceptance/types/mysql_grant_spec.rb index 4608670a3..e39eace53 100644 --- a/spec/acceptance/types/mysql_grant_spec.rb +++ b/spec/acceptance/types/mysql_grant_spec.rb @@ -273,7 +273,9 @@ class { 'mysql::server': $dbSubnet = '10.10.10.%' mysql_database { 'foo': - ensure => present, + ensure => present, + charset => '#{fetch_charset}', + collate => '#{fetch_charset}_general_ci', } exec { 'mysql-create-table': @@ -685,6 +687,7 @@ class { 'mysql::server': override_options => { 'root_password' => 'password' } } user => 'root1', password => 'password', sql => '/tmp/grant_spec_table.sql', + charset => '#{fetch_charset}', } MANIFEST it 'creates table' do diff --git a/spec/classes/mysql_backup_xtrabackup_spec.rb b/spec/classes/mysql_backup_xtrabackup_spec.rb index d542aa96d..4eef6b083 100644 --- a/spec/classes/mysql_backup_xtrabackup_spec.rb +++ b/spec/classes/mysql_backup_xtrabackup_spec.rb @@ -106,7 +106,8 @@ class { 'mysql::server': } user: 'backupuser@localhost', table: '*.*', privileges: - if facts[:osfamily] == 'Debian' && Puppet::Util::Package.versioncmp(facts[:operatingsystemmajrelease], '11') == 0 + if (facts[:operatingsystem] == 'Debian' && Puppet::Util::Package.versioncmp(facts[:operatingsystemmajrelease], '11') >= 0) || + (facts[:operatingsystem] == 'Ubuntu' && Puppet::Util::Package.versioncmp(facts[:operatingsystemmajrelease], '22') >= 0) ['BINLOG MONITOR', 'RELOAD', 'PROCESS', 'LOCK TABLES'] else ['RELOAD', 'PROCESS', 'LOCK TABLES', 'REPLICATION CLIENT'] diff --git a/spec/spec_helper_acceptance_local.rb b/spec/spec_helper_acceptance_local.rb index 189350be4..c5c9cc9b9 100644 --- a/spec/spec_helper_acceptance_local.rb +++ b/spec/spec_helper_acceptance_local.rb @@ -32,6 +32,14 @@ def export_locales LitmusHelper.instance.run_shell('. ~/.bashrc') end +def fetch_charset + @charset ||= if os[:family] == 'ubuntu' && os[:release] =~ %r{^22\.04} + 'utf8mb3' + else + 'utf8' + end +end + RSpec.configure do |c| c.before :suite do if os[:family] == 'debian' || os[:family] == 'ubuntu'