Merge pull request #851 from puppetlabs/3.8.x

Mergeback 3.8.x
This commit is contained in:
Hunter Haugen 2016-05-31 13:54:26 -07:00
commit 52477c0d43
6 changed files with 102 additions and 47 deletions

View file

@ -1,6 +1,6 @@
fixtures: fixtures:
repositories: repositories:
"stdlib": "https://github.com/puppetlabs/puppetlabs-stdlib" "stdlib": "https://github.com/puppetlabs/puppetlabs-stdlib"
"staging": "https://github.com/nanliu/puppet-staging" "staging": "https://github.com/voxpupuli/puppet-staging"
symlinks: symlinks:
"mysql": "#{source_dir}" "mysql": "#{source_dir}"

View file

@ -1,3 +1,36 @@
## Supported Release 3.8.0
###Summary
This release adds Percona 5.7 support and compatibility with Ubuntu 16.04, in addition to various bugfixes.
#### Features
- Adds support for Percona 5.7
- Adds support for Ubuntu 16.04 (Xenial)
#### Known Limitations
- The mysqlbackup.sh script will not work on MySQL 5.7.0 and up.
#### Bugfixes
- Use mysql_install_db only with uniq defaults-extra-file
- Updates mysqlbackup.sh to ensure backup directory exist
- Loosen MariaDB recognition to fix it on Debian 8
- Allow mysql::backup::mysqldump to access root_group in tests
- Fixed problem with ignoring parameters from global configs
- Fixes ordering issue that initialized mysqld before config is set
- (MODULES-1256) Fix parameters on OpenSUSE 12
- Fixes install errors on Debian-based OS by configuring the base of includedir
- Configure the configfile location for mariadb
- Default mysqld_type return value should be 'mysql' if another type is not detected
- Make sure that bzip2 is installed before setting up the cron tab job using mysqlbackup.sh
- Fixes path issue on FreeBSD
- Check that /var/lib/mysql actually contains files
- Removes mysql regex when checking type
- (MODULES-2111) Add the system database to user related actions
- Updates default group for logfiles on Debian-based OS to 'adm'
- Fixes an issue with Amazon linux major release 4 installation
- Fixes 'mysql_install_db' script support on Gentoo
- Removes erroneous anchors to mysql::client from mysql::db
- Adds path to be able to find MySQL 5.5 installation on CentOS
## Supported Release 3.7.0 ## Supported Release 3.7.0
###Summary ###Summary

View file

@ -11,7 +11,7 @@
* [Customize configuration](#create-custom-configuration) * [Customize configuration](#create-custom-configuration)
* [Work with an existing server](#work-with-an-existing-server) * [Work with an existing server](#work-with-an-existing-server)
* [Specify passwords](#specify-passwords) * [Specify passwords](#specify-passwords)
* [Install Percona server on Centos](#install-percona-server-on-centos) * [Install Percona server on CentOS](#install-percona-server-on-centos)
4. [Reference - An under-the-hood peek at what the module is doing and how](#reference) 4. [Reference - An under-the-hood peek at what the module is doing and how](#reference)
5. [Limitations - OS compatibility, etc.](#limitations) 5. [Limitations - OS compatibility, etc.](#limitations)
6. [Development - Guide for contributing to the module](#development) 6. [Development - Guide for contributing to the module](#development)
@ -167,18 +167,16 @@ mysql::db { 'mydb':
} }
``` ```
### Install Percona server on Centos ### Install Percona server on CentOS
This example shows how to do a minimal installation of a Percona server on a This example shows how to do a minimal installation of a Percona server on a
Centos (has been tested on Puppet 4.4 / Centos 7 / Percona Server 5.7) CentOS system.
including the Percona server, client and bindingsi (including perl and python ones). This sets up the Percona server, client, and bindings (including Perl and Python bindings). You can customize this usage and update the version as needed.
Of course, you will probably want to customize it a bit more. and update the This usage has been tested on Puppet 4.4 / CentOS 7 / Percona Server 5.7.
version to the one you will want to have (trying to keep a coherence between
those)
**Note:** The installation of the yum repository is not part of this package **Note:** The installation of the yum repository is not part of this package
and is here only to show a full example of how you can install this. and is here only to show a full example of how you can install.
```puppet ```puppet
yumrepo { 'percona': yumrepo { 'percona':
@ -207,16 +205,15 @@ class {'mysql::server':
} }
} }
# Note: this is not needed in our case as installing Percona-Server-server-57 # Note: Installing Percona-Server-server-57 also installs Percona-Server-client-57.
# also installs Percona-Server-client-57. It is only here to show how to # This shows how to install the Percona MySQL client on its own
# install the Percona MySQL client
class {'mysql::client': class {'mysql::client':
package_name => 'Percona-Server-client-57', package_name => 'Percona-Server-client-57',
package_ensure => '5.7.11-4.1.el7', package_ensure => '5.7.11-4.1.el7',
} }
# Note: those package are normally installed along with Percona-Server-server-57 # These packages are normally installed along with Percona-Server-server-57
# so it's mostly here for the example in case you need to install the bindings. # If you needed to install the bindings, however, you could do so with this code
class { 'mysql::bindings': class { 'mysql::bindings':
client_dev_package_name => 'Percona-Server-shared-57', client_dev_package_name => 'Percona-Server-shared-57',
client_dev_package_ensure => '5.7.11-4.1.el7', client_dev_package_ensure => '5.7.11-4.1.el7',
@ -908,14 +905,16 @@ loopback interfaces. Because those nodes aren't connected to the outside world,
This module has been tested on: This module has been tested on:
* RedHat Enterprise Linux 5, 6, 7 * RedHat Enterprise Linux 5, 6, 7
* Debian 6, 7 * Debian 6, 7, 8
* CentOS 5, 6, 7 * CentOS 5, 6, 7
* Ubuntu 10.04, 12.04, 14.04 * Ubuntu 10.04, 12.04, 14.04, 16.04
* Scientific Linux 5, 6 * Scientific Linux 5, 6
* SLES 11 * SLES 11
Testing on other platforms has been minimal and cannot be guaranteed. Testing on other platforms has been minimal and cannot be guaranteed.
**Note:** The mysqlbackup.sh does not work and is not supported on MySQL 5.7 and greater.
## Development ## Development
Puppet Labs modules on the Puppet Forge are open projects, and community Puppet Labs modules on the Puppet Forge are open projects, and community

View file

@ -1,6 +1,6 @@
{ {
"name": "puppetlabs-mysql", "name": "puppetlabs-mysql",
"version": "3.7.0", "version": "3.8.0",
"author": "Puppet Labs", "author": "Puppet Labs",
"summary": "Installs, configures, and manages the MySQL service.", "summary": "Installs, configures, and manages the MySQL service.",
"license": "Apache-2.0", "license": "Apache-2.0",
@ -9,7 +9,7 @@
"issues_url": "https://tickets.puppetlabs.com/browse/MODULES", "issues_url": "https://tickets.puppetlabs.com/browse/MODULES",
"dependencies": [ "dependencies": [
{"name":"puppetlabs/stdlib","version_requirement":">= 3.2.0 < 5.0.0"}, {"name":"puppetlabs/stdlib","version_requirement":">= 3.2.0 < 5.0.0"},
{"name":"nanliu/staging","version_requirement":">= 1.0.1 < 2.0.0"} {"name":"puppet/staging","version_requirement":">= 1.0.1 < 2.0.0"}
], ],
"operatingsystem_support": [ "operatingsystem_support": [
{ {
@ -70,10 +70,6 @@
} }
], ],
"requirements": [ "requirements": [
{
"name": "pe",
"version_requirement": ">= 3.0.0 < 2015.4.0"
},
{ {
"name": "puppet", "name": "puppet",
"version_requirement": ">= 3.0.0 < 5.0.0" "version_requirement": ">= 3.0.0 < 5.0.0"

View file

@ -47,28 +47,40 @@ describe 'mysql::server::backup class' do
describe 'mysqlbackup.sh' do describe 'mysqlbackup.sh' do
it 'should run mysqlbackup.sh with no errors' do it 'should run mysqlbackup.sh with no errors' do
shell("/usr/local/sbin/mysqlbackup.sh") do |r| pre_run
expect(r.stderr).to eq("") if ! version_is_greater_than('5.7.0')
shell("/usr/local/sbin/mysqlbackup.sh") do |r|
expect(r.stderr).to eq("")
end
end end
end end
it 'should dump all databases to single file' do it 'should dump all databases to single file' do
shell('ls -l /tmp/backups/mysql_backup_*-*.sql.bz2 | wc -l') do |r| pre_run
expect(r.stdout).to match(/1/) if ! version_is_greater_than('5.7.0')
expect(r.exit_code).to be_zero shell('ls -l /tmp/backups/mysql_backup_*-*.sql.bz2 | wc -l') do |r|
expect(r.stdout).to match(/1/)
expect(r.exit_code).to be_zero
end
end end
end end
context 'should create one file per database per run' do context 'should create one file per database per run' do
it 'executes mysqlbackup.sh a second time' do it 'executes mysqlbackup.sh a second time' do
shell('sleep 1') pre_run
shell('/usr/local/sbin/mysqlbackup.sh') if ! version_is_greater_than('5.7.0')
shell('sleep 1')
shell('/usr/local/sbin/mysqlbackup.sh')
end
end end
it 'creates at least one backup tarball' do it 'creates at least one backup tarball' do
shell('ls -l /tmp/backups/mysql_backup_*-*.sql.bz2 | wc -l') do |r| pre_run
expect(r.stdout).to match(/2/) if ! version_is_greater_than('5.7.0')
expect(r.exit_code).to be_zero shell('ls -l /tmp/backups/mysql_backup_*-*.sql.bz2 | wc -l') do |r|
expect(r.stdout).to match(/2/)
expect(r.exit_code).to be_zero
end
end end
end end
end end
@ -110,31 +122,43 @@ describe 'mysql::server::backup class' do
describe 'mysqlbackup.sh' do describe 'mysqlbackup.sh' do
it 'should run mysqlbackup.sh with no errors without root credentials' do it 'should run mysqlbackup.sh with no errors without root credentials' do
shell("HOME=/tmp/dontreadrootcredentials /usr/local/sbin/mysqlbackup.sh") do |r| pre_run
expect(r.stderr).to eq("") if ! version_is_greater_than('5.7.0')
shell("HOME=/tmp/dontreadrootcredentials /usr/local/sbin/mysqlbackup.sh") do |r|
expect(r.stderr).to eq("")
end
end end
end end
it 'should create one file per database' do it 'should create one file per database' do
['backup1', 'backup2'].each do |database| pre_run
shell("ls -l /tmp/backups/mysql_backup_#{database}_*-*.sql.bz2 | wc -l") do |r| if ! version_is_greater_than('5.7.0')
expect(r.stdout).to match(/1/) ['backup1', 'backup2'].each do |database|
expect(r.exit_code).to be_zero shell("ls -l /tmp/backups/mysql_backup_#{database}_*-*.sql.bz2 | wc -l") do |r|
expect(r.stdout).to match(/1/)
expect(r.exit_code).to be_zero
end
end end
end end
end end
context 'should create one file per database per run' do context 'should create one file per database per run' do
it 'executes mysqlbackup.sh a second time' do it 'executes mysqlbackup.sh a second time' do
shell('sleep 1') pre_run
shell('HOME=/tmp/dontreadrootcredentials /usr/local/sbin/mysqlbackup.sh') if ! version_is_greater_than('5.7.0')
shell('sleep 1')
shell('HOME=/tmp/dontreadrootcredentials /usr/local/sbin/mysqlbackup.sh')
end
end end
it 'has one file per database per run' do it 'has one file per database per run' do
['backup1', 'backup2'].each do |database| pre_run
shell("ls -l /tmp/backups/mysql_backup_#{database}_*-*.sql.bz2 | wc -l") do |r| if ! version_is_greater_than('5.7.0')
expect(r.stdout).to match(/2/) ['backup1', 'backup2'].each do |database|
expect(r.exit_code).to be_zero shell("ls -l /tmp/backups/mysql_backup_#{database}_*-*.sql.bz2 | wc -l") do |r|
expect(r.stdout).to match(/2/)
expect(r.exit_code).to be_zero
end
end end
end end
end end
@ -179,8 +203,11 @@ describe 'mysql::server::backup class' do
end end
it 'should run mysqlbackup.sh with no errors' do it 'should run mysqlbackup.sh with no errors' do
shell("/usr/local/sbin/mysqlbackup.sh") do |r| pre_run
expect(r.stderr).to eq("") if ! version_is_greater_than('5.7.0')
shell("/usr/local/sbin/mysqlbackup.sh") do |r|
expect(r.stderr).to eq("")
end
end end
end end
end end

View file

@ -49,7 +49,7 @@ RSpec.configure do |c|
else else
on host, puppet('module','install','puppetlabs-stdlib','--version','3.2.0') on host, puppet('module','install','puppetlabs-stdlib','--version','3.2.0')
on host, puppet('module','install','stahnma/epel') on host, puppet('module','install','stahnma/epel')
on host, puppet('module','install','nanliu/staging') on host, puppet('module','install','puppet/staging')
end end
end end
end end