diff --git a/.fixtures.yml b/.fixtures.yml index c53ad41..e47db09 100644 --- a/.fixtures.yml +++ b/.fixtures.yml @@ -1,10 +1,9 @@ fixtures: repositories: "stdlib": "https://github.com/puppetlabs/puppetlabs-stdlib" - "translate": "https://github.com/puppetlabs/puppetlabs-translate" "cron_core": "https://github.com/puppetlabs/puppetlabs-cron_core.git" "facts": "https://github.com/puppetlabs/puppetlabs-facts.git" "puppet_agent": "https://github.com/puppetlabs/puppetlabs-puppet_agent.git" "provision": "https://github.com/puppetlabs/provision.git" symlinks: "mysql": "#{source_dir}" diff --git a/locales/config.yaml b/locales/config.yaml deleted file mode 100644 index e3f7805..0000000 --- a/locales/config.yaml +++ /dev/null @@ -1,26 +0,0 @@ ---- -# This is the project-specific configuration file for setting up -# fast_gettext for your project. -gettext: - # This is used for the name of the .pot and .po files; they will be - # called .pot? - project_name: puppetlabs-mysql - # This is used in comments in the .pot and .po files to indicate what - # project the files belong to and should bea little more desctiptive than - # - package_name: puppetlabs-mysql - # The locale that the default messages in the .pot file are in - default_locale: en - # The email used for sending bug reports. - bugs_address: docs@puppet.com - # The holder of the copyright. - copyright_holder: Puppet, Inc. - # This determines which comments in code should be eligible for translation. - # Any comments that start with this string will be externalized. (Leave - # empty to include all.) - comments_tag: TRANSLATOR - # Patterns for +Dir.glob+ used to find all files that might contain - # translatable content, relative to the project root directory - source_files: - - './lib/**/*.rb' - diff --git a/locales/ja/puppetlabs-mysql.po b/locales/ja/puppetlabs-mysql.po deleted file mode 100644 index b3ace5f..0000000 --- a/locales/ja/puppetlabs-mysql.po +++ /dev/null @@ -1,190 +0,0 @@ -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-09-06T16:20:13+01:00\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: Kojima Ai , 2017\n" -"Language-Team: Japanese (Japan) (https://www.transifex.com/puppet/teams/29089/ja_JP/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ja_JP\n" -"Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Translate Toolkit 2.0.0\n" - -#. ./manifests/bindings/client_dev.pp:12 -msgid "No MySQL client development package configured for %{os}." -msgstr "%{os}向けに設定されたMySQLクライアント開発パッケージはありません。" - -#. ./manifests/bindings/daemon_dev.pp:12 -msgid "No MySQL daemon development package configured for %{os}." -msgstr "%{os}向けに設定されたMySQLデーモン開発パッケージはありません。" - -#. ./manifests/bindings.pp:38 -msgid "" -"::mysql::bindings::java cannot be managed by puppet on %{osfamily} as it is " -"not in official repositories. Please disable java mysql binding." -msgstr "" -"::mysql::bindings::javaは、公式なリポジトリではなく%{osfamily}にあるそのままの状態では、Puppetによる管理はできません。java" -" mysqlバインディングを無効にしてください。" - -#. ./manifests/bindings.pp:40 -msgid "" -"::mysql::bindings::php does not need to be managed by puppet on %{osfamily} " -"as it is included in mysql package by default." -msgstr "" -"::mysql::bindings::phpは、%{osfamily}上にデフォルトでMySQLパッケージに含まれた状態のまま、Puppetで管理する必要はありません。" - -#. ./manifests/bindings.pp:42 -msgid "" -"::mysql::bindings::ruby cannot be managed by puppet on %{osfamily} as it is " -"not in official repositories. Please disable ruby mysql binding." -msgstr "" -"::mysql::bindings::rubyは、公式なリポジトリではなく%{osfamily}にあるそのままの状態では、Puppetによる管理はできません。ruby" -" mysqlバインディングを無効にしてください。" - -#. ./manifests/params.pp:124 -msgid "" -"Unsupported platform: puppetlabs-%{module_name} currently doesn't support " -"%{os}." -msgstr "サポート対象外のプラットフォーム: puppetlabs-%{module_name}は、現在%{os}をサポートしていません" - -#. ./manifests/params.pp:381 -msgid "" -"Unsupported platform: puppetlabs-%{module_name} currently doesn't support " -"%{osfamily} or %{os}." -msgstr "" -"サポート対象外のプラットフォーム: " -"puppetlabs-%{module_name}は、現在%{osfamily}または%{os}をサポートしていません" - -#. ./manifests/params.pp:465 -msgid "" -"Unsupported platform: puppetlabs-%{module_name} only supports RedHat 5.0 and" -" beyond." -msgstr "サポート対象外のプラットフォーム: puppetlabs-%{module_name}は、RedHat 5.0以降のみをサポートしています" - -#. ./manifests/server/backup.pp:28 -msgid "" -"The 'prescript' option is not currently implemented for the %{provider} " -"backup provider." -msgstr "'prescript'オプションは、現在、%{provider}バックアッププロバイダ向けには実装されていません。" - -#. ./manifests/server.pp:48 -msgid "" -"The `old_root_password` attribute is no longer used and will be removed in a" -" future release." -msgstr "`old_root_password`属性は廃止予定であり、今後のリリースで廃止されます。" - -#. metadata.json -#: .summary -msgid "Installs, configures, and manages the MySQL service." -msgstr "MySQLサービスをインストール、設定、管理します。" - -#. metadata.json -#: .description -msgid "MySQL module" -msgstr "MySQLモジュール" - -#: ./lib/puppet/parser/functions/mysql_deepmerge.rb:22 -msgid "" -"mysql_deepmerge(): wrong number of arguments (%{args_length}; must be at " -"least 2)" -msgstr "mysql_deepmerge(): 引数の数が正しくありません(%{args_length}; 2以上にする必要があります)" - -#: ./lib/puppet/parser/functions/mysql_deepmerge.rb:30 -msgid "" -"mysql_deepmerge: unexpected argument type %{arg_class}, only expects hash " -"arguments." -msgstr "mysql_deepmerge: 予期せぬ引数タイプ%{arg_class}です。想定される引数はハッシュ引数のみです。" - -#: ./lib/puppet/parser/functions/mysql_dirname.rb:9 -msgid "" -"mysql_dirname(): Wrong number of arguments given (%{args_length} for 1)" -msgstr "mysql_dirname(): 指定された引数の数が正しくありません(%{args_length}は1)" - -#: ./lib/puppet/parser/functions/mysql_password.rb:11 -msgid "" -"mysql_password(): Wrong number of arguments given (%{args_length} for 1)" -msgstr "mysql_password(): 指定された引数の数が正しくありません(%{args_length}は1)" - -#: ./lib/puppet/parser/functions/mysql_strip_hash.rb:11 -msgid "mysql_strip_hash(): Requires a hash to work." -msgstr "mysql_strip_hash(): 動作するにはハッシュが必要です。" - -#: ./lib/puppet/provider/mysql_datadir/mysql.rb:24 -msgid "Defaults-extra-file %{file} is missing." -msgstr "Defaults-extra-file %{file}が見つかりません" - -#: ./lib/puppet/provider/mysql_datadir/mysql.rb:59 -msgid "ERROR: `Resource` can not be removed." -msgstr "ERROR: `Resource`を削除できませんでした。" - -#: ./lib/puppet/provider/mysql_grant/mysql.rb:19 -msgid "#mysql had an error -> %{inspect}" -msgstr "#mysqlにエラーがありました -> %{inspect}" - -#: ./lib/puppet/provider/mysql_user/mysql.rb:125 -msgid "Only mysql_native_password (*ABCD..XXX) hashes are supported." -msgstr "mysql_native_password (*ABCD...XXX)ハッシュのみサポートされています。" - -#: ./lib/puppet/type/mysql_grant.rb:34 -msgid "`privileges` `parameter` is required." -msgstr "`privileges` `parameter`が必要です。" - -#: ./lib/puppet/type/mysql_grant.rb:35 -msgid "`privileges` `parameter`: PROXY can only be specified by itself." -msgstr "`privileges` `parameter`: PROXYは自身で指定することのみ可能です。" - -#: ./lib/puppet/type/mysql_grant.rb:36 -msgid "`table` `parameter` is required." -msgstr "`table` `parameter`が必要です。" - -#: ./lib/puppet/type/mysql_grant.rb:37 -msgid "`user` `parameter` is required." -msgstr "`user` `parameter`が必要です。" - -#: ./lib/puppet/type/mysql_grant.rb:39 -msgid "`name` `parameter` must match user@host/table format." -msgstr "`name` `parameter`はuser@host/tableの形式と一致している必要があります。" - -#: ./lib/puppet/type/mysql_grant.rb:57 -msgid "" -"PROXY user not supported on mysql versions < 5.5.0. Current version " -"%{version}." -msgstr "PROXYユーザはmysql 5.5.0以前のバージョンではサポートされていません。現在のバージョン%{version}" - -#: ./lib/puppet/type/mysql_grant.rb:67 -msgid "" -"`table` `property` for PROXY should be specified as proxy_user@proxy_host." -msgstr "PROXYの`table` `property`はproxy_user@proxy_hostとして指定されている必要があります。" - -#: ./lib/puppet/type/mysql_grant.rb:96 ./lib/puppet/type/mysql_user.rb:29 -msgid "Invalid database user %{user}." -msgstr "無効なデータベースのユーザ%{user}" - -#: ./lib/puppet/type/mysql_grant.rb:102 ./lib/puppet/type/mysql_user.rb:34 -msgid "MySQL usernames are limited to a maximum of 16 characters." -msgstr "MySQLユーザ名は最大16文字に制限されています。" - -#: ./lib/puppet/type/mysql_grant.rb:103 ./lib/puppet/type/mysql_user.rb:35 -msgid "MySQL usernames are limited to a maximum of 32 characters." -msgstr "MySQLユーザ名は最大32文字に制限されています。" - -#: ./lib/puppet/type/mysql_grant.rb:104 ./lib/puppet/type/mysql_user.rb:36 -msgid "MySQL usernames are limited to a maximum of 80 characters." -msgstr "MySQLユーザ名は最大80文字に制限されています。" - -#: ./lib/puppet/type/mysql_user.rb:82 -msgid "" -"`tls_options` `property`: The values NONE, SSL and X509 cannot be used with " -"other options, you may only pick one of them." -msgstr "" -"`tls_options` `property`: " -"NONE、SSL、X509は他のオプションと同時に使用することはできません。いずれか1つのみ選択可能です。" - -#: ./lib/puppet/type/mysql_user.rb:87 -msgid "Invalid tls option %{option}." -msgstr "無効なtlsオプション%{option}" diff --git a/locales/puppetlabs-mysql.pot b/locales/puppetlabs-mysql.pot deleted file mode 100644 index 610ac97..0000000 --- a/locales/puppetlabs-mysql.pot +++ /dev/null @@ -1,182 +0,0 @@ -"Project-Id-Version: puppetlabs-mysql 3.11.0-50-gd122d86\n" -"\n" -"Report-Msgid-Bugs-To: docs@puppet.com\n" -"POT-Creation-Date: 2017-09-14 14:21+0100\n" -"PO-Revision-Date: 2017-09-14 14:21+0100\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" - -#. metadata.json -#: .summary -msgid "Installs, configures, and manages the MySQL service." -msgstr "" - -#. metadata.json -#: .description -msgid "MySQL module" -msgstr "" - -#. ./manifests/bindings/client_dev.pp:12 -msgid "No MySQL client development package configured for %{os}." -msgstr "" - -#. ./manifests/bindings/daemon_dev.pp:12 -msgid "No MySQL daemon development package configured for %{os}." -msgstr "" - -#. ./manifests/bindings.pp:38 -msgid "" -"::mysql::bindings::java cannot be managed by puppet on %{osfamily} as it is " -"not in official repositories. Please disable java mysql binding." -msgstr "" - -#. ./manifests/bindings.pp:40 -msgid "" -"::mysql::bindings::php does not need to be managed by puppet on %{osfamily} " -"as it is included in mysql package by default." -msgstr "" - -#. ./manifests/bindings.pp:42 -msgid "" -"::mysql::bindings::ruby cannot be managed by puppet on %{osfamily} as it is " -"not in official repositories. Please disable ruby mysql binding." -msgstr "" - -#. ./manifests/params.pp:124 -msgid "" -"Unsupported platform: puppetlabs-%{module_name} currently doesn't support " -"%{os}." -msgstr "" - -#. ./manifests/params.pp:381 -msgid "" -"Unsupported platform: puppetlabs-%{module_name} currently doesn't support " -"%{osfamily} or %{os}." -msgstr "" - -#. ./manifests/params.pp:465 -msgid "" -"Unsupported platform: puppetlabs-%{module_name} only supports RedHat 5.0 and " -"beyond." -msgstr "" - -#. ./manifests/server/backup.pp:28 -msgid "" -"The 'prescript' option is not currently implemented for the %{provider} " -"backup provider." -msgstr "" - -#. ./manifests/server.pp:48 -msgid "" -"The `old_root_password` attribute is no longer used and will be removed in a " -"future release." -msgstr "" - -#. ./manifests/server.pp:122 -msgid "" -"You can\'t specify $options and $override_options simultaneously, see the " -"README section \'Customize server options\'!" -msgstr "" - -#: ./lib/puppet/parser/functions/mysql_deepmerge.rb:22 -msgid "" -"mysql_deepmerge(): wrong number of arguments (%{args_length}; must be at " -"least 2)" -msgstr "" - -#: ./lib/puppet/parser/functions/mysql_deepmerge.rb:30 -msgid "" -"mysql_deepmerge: unexpected argument type %{arg_class}, only expects hash " -"arguments." -msgstr "" - -#: ./lib/puppet/parser/functions/mysql_dirname.rb:9 -msgid "mysql_dirname(): Wrong number of arguments given (%{args_length} for 1)" -msgstr "" - -#: ./lib/puppet/parser/functions/mysql_password.rb:11 -msgid "" -"mysql_password(): Wrong number of arguments given (%{args_length} for 1)" -msgstr "" - -#: ./lib/puppet/parser/functions/mysql_strip_hash.rb:11 -msgid "mysql_strip_hash(): Requires a hash to work." -msgstr "" - -#: ./lib/puppet/provider/mysql_datadir/mysql.rb:24 -msgid "Defaults-extra-file %{file} is missing." -msgstr "" - -#: ./lib/puppet/provider/mysql_datadir/mysql.rb:59 -msgid "ERROR: `Resource` can not be removed." -msgstr "" - -#: ./lib/puppet/provider/mysql_grant/mysql.rb:19 -msgid "#mysql had an error -> %{inspect}" -msgstr "" - -#: ./lib/puppet/provider/mysql_user/mysql.rb:125 -msgid "Only mysql_native_password (*ABCD...XXX) hashes are supported." -msgstr "" - -#: ./lib/puppet/type/mysql_grant.rb:34 -msgid "`privileges` `parameter` is required." -msgstr "" - -#: ./lib/puppet/type/mysql_grant.rb:35 -msgid "`privileges` `parameter`: PROXY can only be specified by itself." -msgstr "" - -#: ./lib/puppet/type/mysql_grant.rb:36 -msgid "`table` `parameter` is required." -msgstr "" - -#: ./lib/puppet/type/mysql_grant.rb:37 -msgid "`user` `parameter` is required." -msgstr "" - -#: ./lib/puppet/type/mysql_grant.rb:39 -msgid "`name` `parameter` must match user@host/table format." -msgstr "" - -#: ./lib/puppet/type/mysql_grant.rb:57 -msgid "" -"PROXY user not supported on mysql versions < 5.5.0. Current version " -"%{version}." -msgstr "" - -#: ./lib/puppet/type/mysql_grant.rb:67 -msgid "" -"`table` `property` for PROXY should be specified as proxy_user@proxy_host." -msgstr "" - -#: ./lib/puppet/type/mysql_grant.rb:96 ./lib/puppet/type/mysql_user.rb:29 -msgid "Invalid database user %{user}." -msgstr "" - -#: ./lib/puppet/type/mysql_grant.rb:102 ./lib/puppet/type/mysql_user.rb:34 -msgid "MySQL usernames are limited to a maximum of 16 characters." -msgstr "" - -#: ./lib/puppet/type/mysql_grant.rb:103 ./lib/puppet/type/mysql_user.rb:35 -msgid "MySQL usernames are limited to a maximum of 32 characters." -msgstr "" - -#: ./lib/puppet/type/mysql_grant.rb:104 ./lib/puppet/type/mysql_user.rb:36 -msgid "MySQL usernames are limited to a maximum of 80 characters." -msgstr "" - -#: ./lib/puppet/type/mysql_user.rb:82 -msgid "" -"`tls_options` `property`: The values NONE, SSL and X509 cannot be used with " -"other options, you may only pick one of them." -msgstr "" - -#: ./lib/puppet/type/mysql_user.rb:87 -msgid "Invalid tls option %{option}." -msgstr "" diff --git a/manifests/backup/xtrabackup.pp b/manifests/backup/xtrabackup.pp index 8d705a8..44daae2 100644 --- a/manifests/backup/xtrabackup.pp +++ b/manifests/backup/xtrabackup.pp @@ -1,132 +1,132 @@ # @summary # "Provider" for Percona XtraBackup/MariaBackup # @api private # class mysql::backup::xtrabackup ( $xtrabackup_package_name = $mysql::params::xtrabackup_package_name, $backupuser = undef, $backuppassword = undef, $backupdir = '', $maxallowedpacket = '1M', $backupmethod = 'xtrabackup', $backupdirmode = '0700', $backupdirowner = 'root', $backupdirgroup = $mysql::params::root_group, $backupcompress = true, $backuprotate = 30, $backupscript_template = 'mysql/xtrabackup.sh.erb', $backup_success_file_path = undef, $ignore_events = true, $delete_before_dump = false, $backupdatabases = [], $file_per_database = false, $include_triggers = true, $include_routines = false, $ensure = 'present', $time = ['23', '5'], $prescript = false, $postscript = false, $execpath = '/usr/bin:/usr/sbin:/bin:/sbin', $optional_args = [], $additional_cron_args = '--backup', $incremental_backups = true, $install_cron = true, $compression_command = undef, $compression_extension = undef, ) inherits mysql::params { ensure_packages($xtrabackup_package_name) if $backupuser and $backuppassword { mysql_user { "${backupuser}@localhost": ensure => $ensure, password_hash => mysql::password($backuppassword), require => Class['mysql::server::root_password'], } mysql_grant { "${backupuser}@localhost/*.*": ensure => $ensure, user => "${backupuser}@localhost", table => '*.*', privileges => ['RELOAD', 'PROCESS', 'LOCK TABLES', 'REPLICATION CLIENT'], require => Mysql_user["${backupuser}@localhost"], } } if $install_cron { if $::osfamily == 'RedHat' and $::operatingsystemmajrelease == '5' { ensure_packages('crontabs') } elsif $::osfamily == 'RedHat' { ensure_packages('cronie') } elsif $::osfamily != 'FreeBSD' { ensure_packages('cron') } } if $incremental_backups { # Warn if old backups are removed too soon. Incremental backups will fail # if the full backup is no longer available. if ($backuprotate.convert_to(Integer) < 7) { - warning(translate('The value for `backuprotate` is too low, it must be set to at least 7 days when using incremental backups.')) + warning('The value for `backuprotate` is too low, it must be set to at least 7 days when using incremental backups.') } # The --target-dir uses a more predictable value for the full backup so # that it can easily be calculated and used in incremental backup jobs. # Besides that it allows to have multiple full backups. cron { 'xtrabackup-weekly': ensure => $ensure, command => "/usr/local/sbin/xtrabackup.sh --target-dir=${backupdir}/$(date +\\%F)_full ${additional_cron_args}", user => 'root', hour => $time[0], minute => $time[1], weekday => '0', require => Package[$xtrabackup_package_name], } } # Wether to use GNU or BSD date format. case $::osfamily { 'FreeBSD','OpenBSD': { $dateformat = '$(date -v-sun +\\%F)_full' } default: { $dateformat = '$(date -d "last sunday" +\\%F)_full' } } $daily_cron_data = ($incremental_backups) ? { true => { 'directories' => "--incremental-basedir=${backupdir}/${dateformat} --target-dir=${backupdir}/$(date +\\%F_\\%H-\\%M-\\%S)", 'weekday' => '1-6', }, false => { 'directories' => "--target-dir=${backupdir}/$(date +\\%F_\\%H-\\%M-\\%S)", 'weekday' => '*', }, } cron { 'xtrabackup-daily': ensure => $ensure, command => "/usr/local/sbin/xtrabackup.sh ${daily_cron_data['directories']} ${additional_cron_args}", user => 'root', hour => $time[0], minute => $time[1], weekday => $daily_cron_data['weekday'], require => Package[$xtrabackup_package_name], } file { $backupdir: ensure => 'directory', mode => $backupdirmode, owner => $backupdirowner, group => $backupdirgroup, } file { 'xtrabackup.sh': ensure => $ensure, path => '/usr/local/sbin/xtrabackup.sh', mode => '0700', owner => 'root', group => $mysql::params::root_group, content => template($backupscript_template), } } diff --git a/manifests/bindings.pp b/manifests/bindings.pp index 9a9eb02..401d8fe 100644 --- a/manifests/bindings.pp +++ b/manifests/bindings.pp @@ -1,129 +1,126 @@ # @summary # Parent class for MySQL bindings. # # @example Install Ruby language bindings # class { 'mysql::bindings': # ruby_enable => true, # ruby_package_ensure => 'present', # ruby_package_name => 'ruby-mysql-2.7.1-1mdv2007.0.sparc.rpm', # ruby_package_provider => 'rpm', # } # @param install_options # Passes `install_options` array to managed package resources. You must pass the [appropriate options](https://docs.puppetlabs.com/references/latest/type.html#package-attribute-install_options) for the package manager(s). # @param java_enable # Specifies whether `::mysql::bindings::java` should be included. Valid values are `true`, `false`. # @param perl_enable # Specifies whether `mysql::bindings::perl` should be included. Valid values are `true`, `false`. # @param php_enable # Specifies whether `mysql::bindings::php` should be included. Valid values are `true`, `false`. # @param python_enable # Specifies whether `mysql::bindings::python` should be included. Valid values are `true`, `false`. # @param ruby_enable # Specifies whether `mysql::bindings::ruby` should be included. Valid values are `true`, `false`. # @param client_dev # Specifies whether `::mysql::bindings::client_dev` should be included. Valid values are `true`', `false`. # @param daemon_dev # Specifies whether `::mysql::bindings::daemon_dev` should be included. Valid values are `true`, `false`. # @param java_package_ensure # Whether the package should be present, absent, or a specific version. Valid values are 'present', 'absent', or 'x.y.z'. Only applies if `java_enable => true`. # @param java_package_name # The name of the Java package to install. Only applies if `java_enable => true`. # @param java_package_provider # The provider to use to install the Java package. Only applies if `java_enable => true`. # @param perl_package_ensure # Whether the package should be present, absent, or a specific version. Valid values are 'present', 'absent', or 'x.y.z'. Only applies if `perl_enable => true`. # @param perl_package_name # The name of the Perl package to install. Only applies if `perl_enable => true`. # @param perl_package_provider # The provider to use to install the Perl package. Only applies if `perl_enable => true`. # @param php_package_ensure # Whether the package should be present, absent, or a specific version. Valid values are 'present', 'absent', or 'x.y.z'. Only applies if `php_enable => true`. # @param php_package_name # The name of the PHP package to install. Only applies if `php_enable => true`. # @param php_package_provider # The provider to use to install the PHP package. Only applies if `php_enable => true`. # @param python_package_ensure # Whether the package should be present, absent, or a specific version. Valid values are 'present', 'absent', or 'x.y.z'. Only applies if `python_enable => true`. # @param python_package_name # The name of the Python package to install. Only applies if `python_enable => true`. # @param python_package_provider # The provider to use to install the Python package. Only applies if `python_enable => true`. # @param ruby_package_ensure # Whether the package should be present, absent, or a specific version. Valid values are 'present', 'absent', or 'x.y.z'. Only applies if `ruby_enable => true`. # @param ruby_package_name # The name of the Ruby package to install. Only applies if `ruby_enable => true`. # @param ruby_package_provider # What provider should be used to install the package. # @param client_dev_package_ensure # Whether the package should be present, absent, or a specific version. Valid values are 'present', 'absent', or 'x.y.z'. Only applies if `client_dev => true`. # @param client_dev_package_name # The name of the client_dev package to install. Only applies if `client_dev => true`. # @param client_dev_package_provider # The provider to use to install the client_dev package. Only applies if `client_dev => true`. # @param daemon_dev_package_ensure # Whether the package should be present, absent, or a specific version. Valid values are 'present', 'absent', or 'x.y.z'. Only applies if `daemon_dev => true`. # @param daemon_dev_package_name # The name of the daemon_dev package to install. Only applies if `daemon_dev => true`. # @param daemon_dev_package_provider # The provider to use to install the daemon_dev package. Only applies if `daemon_dev => true`. # class mysql::bindings ( $install_options = undef, # Boolean to determine if we should include the classes. $java_enable = false, $perl_enable = false, $php_enable = false, $python_enable = false, $ruby_enable = false, $client_dev = false, $daemon_dev = false, # Settings for the various classes. $java_package_ensure = $mysql::params::java_package_ensure, $java_package_name = $mysql::params::java_package_name, $java_package_provider = $mysql::params::java_package_provider, $perl_package_ensure = $mysql::params::perl_package_ensure, $perl_package_name = $mysql::params::perl_package_name, $perl_package_provider = $mysql::params::perl_package_provider, $php_package_ensure = $mysql::params::php_package_ensure, $php_package_name = $mysql::params::php_package_name, $php_package_provider = $mysql::params::php_package_provider, $python_package_ensure = $mysql::params::python_package_ensure, $python_package_name = $mysql::params::python_package_name, $python_package_provider = $mysql::params::python_package_provider, $ruby_package_ensure = $mysql::params::ruby_package_ensure, $ruby_package_name = $mysql::params::ruby_package_name, $ruby_package_provider = $mysql::params::ruby_package_provider, $client_dev_package_ensure = $mysql::params::client_dev_package_ensure, $client_dev_package_name = $mysql::params::client_dev_package_name, $client_dev_package_provider = $mysql::params::client_dev_package_provider, $daemon_dev_package_ensure = $mysql::params::daemon_dev_package_ensure, $daemon_dev_package_name = $mysql::params::daemon_dev_package_name, $daemon_dev_package_provider = $mysql::params::daemon_dev_package_provider ) inherits mysql::params { case $::osfamily { 'Archlinux': { - if $java_enable { fail(translate('::mysql::bindings::java cannot be managed by puppet on %{osfamily} - as it is not in official repositories. Please disable java mysql binding.', - { 'osfamily' => $::osfamily })) } + if $java_enable { fail("::mysql::bindings::java cannot be managed by puppet on ${osfamily} + as it is not in official repositories. Please disable java mysql binding.") } if $perl_enable { include 'mysql::bindings::perl' } - if $php_enable { warning(translate('::mysql::bindings::php does not need to be managed by puppet on %{osfamily} - as it is included in mysql package by default.', - { 'osfamily' => $::osfamily })) } + if $php_enable { warning("::mysql::bindings::php does not need to be managed by puppet on ${osfamily} + as it is included in mysql package by default.") } if $python_enable { include 'mysql::bindings::python' } - if $ruby_enable { fail(translate('::mysql::bindings::ruby cannot be managed by puppet on %{osfamily} - as it is not in official repositories. Please disable ruby mysql binding.', - { 'osfamily' => $::osfamily })) } + if $ruby_enable { fail("::mysql::bindings::ruby cannot be managed by puppet on %{osfamily} + as it is not in official repositories. Please disable ruby mysql binding.") } } default: { if $java_enable { include 'mysql::bindings::java' } if $perl_enable { include 'mysql::bindings::perl' } if $php_enable { include 'mysql::bindings::php' } if $python_enable { include 'mysql::bindings::python' } if $ruby_enable { include 'mysql::bindings::ruby' } } } if $client_dev { include 'mysql::bindings::client_dev' } if $daemon_dev { include 'mysql::bindings::daemon_dev' } } diff --git a/manifests/bindings/client_dev.pp b/manifests/bindings/client_dev.pp index b112ea3..e9e762b 100644 --- a/manifests/bindings/client_dev.pp +++ b/manifests/bindings/client_dev.pp @@ -1,17 +1,17 @@ # @summary # Private class for installing client development bindings # # @api private # class mysql::bindings::client_dev { if $mysql::bindings::client_dev_package_name { package { 'mysql-client_dev': ensure => $mysql::bindings::client_dev_package_ensure, install_options => $mysql::bindings::install_options, name => $mysql::bindings::client_dev_package_name, provider => $mysql::bindings::client_dev_package_provider, } } else { - warning(translate('No MySQL client development package configured for %{os}.', { 'os' => $::operatingsystem })) + warning("No MySQL client development package configured for ${os}.") } } diff --git a/manifests/bindings/daemon_dev.pp b/manifests/bindings/daemon_dev.pp index 1a61a6f..8f4e11f 100644 --- a/manifests/bindings/daemon_dev.pp +++ b/manifests/bindings/daemon_dev.pp @@ -1,17 +1,17 @@ # @summary # Private class for installing daemon development bindings # # @api private # class mysql::bindings::daemon_dev { if $mysql::bindings::daemon_dev_package_name { package { 'mysql-daemon_dev': ensure => $mysql::bindings::daemon_dev_package_ensure, install_options => $mysql::bindings::install_options, name => $mysql::bindings::daemon_dev_package_name, provider => $mysql::bindings::daemon_dev_package_provider, } } else { - warning(translate('No MySQL daemon development package configured for %{os}.', { 'os' => $::operatingsystem })) + warning("No MySQL daemon development package configured for ${os}.") } } diff --git a/manifests/params.pp b/manifests/params.pp index 61625ec..0bb1755 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -1,584 +1,582 @@ # @summary # Params class. # # @api private # class mysql::params { $manage_config_file = true $config_file_mode = '0644' $purge_conf_dir = false $restart = false $root_password = 'UNSET' $install_secret_file = '/.mysql_secret' $server_package_ensure = 'present' $server_package_manage = true $server_service_manage = true $server_service_enabled = true $client_package_ensure = 'present' $client_package_manage = true $create_root_user = true $create_root_my_cnf = true $create_root_login_file = false $login_file = undef $exec_path = '' # mysql::bindings $bindings_enable = false $java_package_ensure = 'present' $java_package_provider = undef $perl_package_ensure = 'present' $perl_package_provider = undef $php_package_ensure = 'present' $php_package_provider = undef $python_package_ensure = 'present' $python_package_provider = undef $ruby_package_ensure = 'present' $ruby_package_provider = undef $client_dev_package_ensure = 'present' $client_dev_package_provider = undef $daemon_dev_package_ensure = 'present' $daemon_dev_package_provider = undef $xtrabackup_package_name_default = 'percona-xtrabackup' case $::osfamily { 'RedHat': { case $::operatingsystem { 'Fedora': { if versioncmp($::operatingsystemrelease, '19') >= 0 or $::operatingsystemrelease == 'Rawhide' { $provider = 'mariadb' } else { $provider = 'mysql' } $python_package_name = 'MySQL-python' } 'Amazon': { if versioncmp($::operatingsystemrelease, '2') >= 0 { $provider = 'mariadb' } else { $provider = 'mysql' } } /^(RedHat|CentOS|Scientific|OracleLinux)$/: { if versioncmp($::operatingsystemmajrelease, '7') >= 0 { $provider = 'mariadb' if versioncmp($::operatingsystemmajrelease, '8') >= 0 { $xtrabackup_package_name_override = 'percona-xtrabackup-24' } } else { $provider = 'mysql' $xtrabackup_package_name_override = 'percona-xtrabackup-20' } if versioncmp($::operatingsystemmajrelease, '8') >= 0 { $java_package_name = 'mariadb-java-client' $python_package_name = 'python3-PyMySQL' } else { $java_package_name = 'mysql-connector-java' $python_package_name = 'MySQL-python' } } default: { $provider = 'mysql' } } if $provider == 'mariadb' { $client_package_name = 'mariadb' $server_package_name = 'mariadb-server' $server_service_name = 'mariadb' $log_error = '/var/log/mariadb/mariadb.log' $config_file = '/etc/my.cnf.d/server.cnf' # mariadb package by default has !includedir set in my.cnf to /etc/my.cnf.d $includedir = undef $pidfile = '/var/run/mariadb/mariadb.pid' $daemon_dev_package_name = 'mariadb-devel' } else { $client_package_name = 'mysql' $server_package_name = 'mysql-server' $server_service_name = 'mysqld' $log_error = '/var/log/mysqld.log' $config_file = '/etc/my.cnf' $includedir = '/etc/my.cnf.d' $pidfile = '/var/run/mysqld/mysqld.pid' $daemon_dev_package_name = 'mysql-devel' } $basedir = '/usr' $datadir = '/var/lib/mysql' $root_group = 'root' $mysql_group = 'mysql' $mycnf_owner = undef $mycnf_group = undef $socket = '/var/lib/mysql/mysql.sock' $ssl_ca = '/etc/mysql/cacert.pem' $ssl_cert = '/etc/mysql/server-cert.pem' $ssl_key = '/etc/mysql/server-key.pem' $tmpdir = '/tmp' $managed_dirs = undef # mysql::bindings $perl_package_name = 'perl-DBD-MySQL' $php_package_name = 'php-mysql' $ruby_package_name = 'ruby-mysql' $client_dev_package_name = undef } 'Suse': { case $::operatingsystem { 'OpenSuSE': { if versioncmp( $::operatingsystemmajrelease, '12' ) >= 0 { $client_package_name = 'mariadb-client' $server_package_name = 'mariadb' # First service start fails if this is set. Runs fine without # it being set, in any case. Leaving it as-is for the mysql. $basedir = undef } else { $client_package_name = 'mysql-community-server-client' $server_package_name = 'mysql-community-server' $basedir = '/usr' } } 'SLES','SLED': { if versioncmp($::operatingsystemrelease, '12') >= 0 { $client_package_name = 'mariadb-client' $server_package_name = 'mariadb' $basedir = undef } else { $client_package_name = 'mysql-client' $server_package_name = 'mysql' $basedir = '/usr' } } default: { - fail(translate('Unsupported platform: puppetlabs-%{module_name} currently doesn\'t support %{os}.', - { 'module_name' => $module_name, 'os' => $::operatingsystem })) + fail("Unsupported platform: puppetlabs-${module_name} currently doesn\'t support ${::operatingsystem}.") } } $config_file = '/etc/my.cnf' $includedir = '/etc/my.cnf.d' $datadir = '/var/lib/mysql' $log_error = $::operatingsystem ? { /OpenSuSE/ => '/var/log/mysql/mysqld.log', /(SLES|SLED)/ => '/var/log/mysqld.log', } $pidfile = $::operatingsystem ? { /OpenSuSE/ => '/var/run/mysql/mysqld.pid', /(SLES|SLED)/ => '/var/lib/mysql/mysqld.pid', } $root_group = 'root' $mysql_group = 'mysql' $mycnf_owner = undef $mycnf_group = undef $server_service_name = 'mysql' $xtrabackup_package_name_override = 'xtrabackup' if $::operatingsystem =~ /(SLES|SLED)/ { if versioncmp( $::operatingsystemmajrelease, '12' ) >= 0 { $socket = '/run/mysql/mysql.sock' } else { $socket = '/var/lib/mysql/mysql.sock' } } else { $socket = '/var/run/mysql/mysql.sock' } $ssl_ca = '/etc/mysql/cacert.pem' $ssl_cert = '/etc/mysql/server-cert.pem' $ssl_key = '/etc/mysql/server-key.pem' $tmpdir = '/tmp' $managed_dirs = undef # mysql::bindings $java_package_name = 'mysql-connector-java' $perl_package_name = 'perl-DBD-mysql' $php_package_name = 'apache2-mod_php53' $python_package_name = 'python-mysql' $ruby_package_name = $::operatingsystem ? { /OpenSuSE/ => 'rubygem-mysql', /(SLES|SLED)/ => 'ruby-mysql', } $client_dev_package_name = 'libmysqlclient-devel' $daemon_dev_package_name = 'mysql-devel' } 'Debian': { if $::operatingsystem == 'Debian' and versioncmp($::operatingsystemrelease, '9') >= 0 { $provider = 'mariadb' } else { $provider = 'mysql' } if $provider == 'mariadb' { $client_package_name = 'mariadb-client' $server_package_name = 'mariadb-server' $server_service_name = 'mariadb' $client_dev_package_name = 'libmariadbclient-dev' $daemon_dev_package_name = 'libmariadbd-dev' } else { $client_package_name = 'mysql-client' $server_package_name = 'mysql-server' $server_service_name = 'mysql' $client_dev_package_name = 'libmysqlclient-dev' $daemon_dev_package_name = 'libmysqld-dev' } $basedir = '/usr' $config_file = '/etc/mysql/my.cnf' $includedir = '/etc/mysql/conf.d' $datadir = '/var/lib/mysql' $log_error = '/var/log/mysql/error.log' $pidfile = '/var/run/mysqld/mysqld.pid' $root_group = 'root' $mysql_group = 'adm' $mycnf_owner = undef $mycnf_group = undef $socket = '/var/run/mysqld/mysqld.sock' $ssl_ca = '/etc/mysql/cacert.pem' $ssl_cert = '/etc/mysql/server-cert.pem' $ssl_key = '/etc/mysql/server-key.pem' $tmpdir = '/tmp' $managed_dirs = ['tmpdir','basedir','datadir','innodb_data_home_dir','innodb_log_group_home_dir','innodb_undo_directory','innodb_tmpdir'] # mysql::bindings if ($::operatingsystem == 'Debian' and versioncmp($::operatingsystemrelease, '10') >= 0) or ($::operatingsystem == 'Ubuntu' and versioncmp($::operatingsystemrelease, '20.04') >= 0) { $java_package_name = 'libmariadb-java' } else { $java_package_name = 'libmysql-java' } $perl_package_name = 'libdbd-mysql-perl' if ($::operatingsystem == 'Ubuntu' and versioncmp($::operatingsystemrelease, '16.04') >= 0) or ($::operatingsystem == 'Debian' and versioncmp($::operatingsystemrelease, '9') >= 0) { $php_package_name = 'php-mysql' } else { $php_package_name = 'php5-mysql' } if ($::operatingsystem == 'Ubuntu' and versioncmp($::operatingsystemrelease, '16.04') < 0) or ($::operatingsystem == 'Debian') { $xtrabackup_package_name_override = 'percona-xtrabackup-24' } if ($::operatingsystem == 'Ubuntu' and versioncmp($::operatingsystemrelease, '20.04') >= 0) { $python_package_name = 'python3-mysqldb' } else { $python_package_name = 'python-mysqldb' } $ruby_package_name = $::lsbdistcodename ? { 'jessie' => 'ruby-mysql', 'stretch' => 'ruby-mysql2', 'buster' => 'ruby-mysql2', 'trusty' => 'ruby-mysql', 'xenial' => 'ruby-mysql', 'bionic' => 'ruby-mysql2', 'focal' => 'ruby-mysql2', default => 'libmysql-ruby', } } 'Archlinux': { $daemon_dev_package_name = undef $client_dev_package_name = undef $includedir = undef $client_package_name = 'mariadb-clients' $server_package_name = 'mariadb' $basedir = '/usr' $config_file = '/etc/mysql/my.cnf' $datadir = '/var/lib/mysql' $log_error = '/var/log/mysqld.log' $pidfile = '/var/run/mysqld/mysqld.pid' $root_group = 'root' $mysql_group = 'mysql' $mycnf_owner = undef $mycnf_group = undef $server_service_name = 'mysqld' $socket = '/var/lib/mysql/mysql.sock' $ssl_ca = '/etc/mysql/cacert.pem' $ssl_cert = '/etc/mysql/server-cert.pem' $ssl_key = '/etc/mysql/server-key.pem' $tmpdir = '/tmp' $managed_dirs = undef # mysql::bindings $java_package_name = 'mysql-connector-java' $perl_package_name = 'perl-dbd-mysql' $php_package_name = undef $python_package_name = 'mysql-python' $ruby_package_name = 'mysql-ruby' } 'Gentoo': { $client_package_name = 'virtual/mysql' $includedir = undef $server_package_name = 'virtual/mysql' $basedir = '/usr' $config_file = '/etc/mysql/my.cnf' $datadir = '/var/lib/mysql' $log_error = '/var/log/mysql/mysqld.err' $pidfile = '/run/mysqld/mysqld.pid' $root_group = 'root' $mysql_group = 'mysql' $mycnf_owner = undef $mycnf_group = undef $server_service_name = 'mysql' $socket = '/run/mysqld/mysqld.sock' $ssl_ca = '/etc/mysql/cacert.pem' $ssl_cert = '/etc/mysql/server-cert.pem' $ssl_key = '/etc/mysql/server-key.pem' $tmpdir = '/tmp' $managed_dirs = undef # mysql::bindings $java_package_name = 'dev-java/jdbc-mysql' $perl_package_name = 'dev-perl/DBD-mysql' $php_package_name = undef $python_package_name = 'dev-python/mysql-python' $ruby_package_name = 'dev-ruby/mysql-ruby' } 'FreeBSD': { $client_package_name = 'databases/mysql57-client' $server_package_name = 'databases/mysql57-server' $basedir = '/usr/local' $config_file = '/usr/local/etc/my.cnf' $includedir = '/usr/local/etc/my.cnf.d' $datadir = '/var/db/mysql' $log_error = '/var/log/mysqld.log' $pidfile = '/var/run/mysql.pid' $root_group = 'wheel' $mysql_group = 'mysql' $mycnf_owner = undef $mycnf_group = undef $server_service_name = 'mysql-server' $socket = '/var/db/mysql/mysql.sock' $ssl_ca = undef $ssl_cert = undef $ssl_key = undef $tmpdir = '/tmp' $managed_dirs = undef # mysql::bindings $java_package_name = 'databases/mysql-connector-java' $perl_package_name = 'p5-DBD-mysql' $php_package_name = 'php5-mysql' $python_package_name = 'databases/py-MySQLdb' $ruby_package_name = 'databases/ruby-mysql' # The libraries installed by these packages are included in client and server packages, no installation required. $client_dev_package_name = undef $daemon_dev_package_name = undef } 'OpenBSD': { $client_package_name = 'mariadb-client' $server_package_name = 'mariadb-server' $basedir = '/usr/local' $config_file = '/etc/my.cnf' $includedir = undef $datadir = '/var/mysql' $log_error = "/var/mysql/${::hostname}.err" $pidfile = '/var/mysql/mysql.pid' $root_group = 'wheel' $mysql_group = '_mysql' $mycnf_owner = undef $mycnf_group = undef $server_service_name = 'mysqld' $socket = '/var/run/mysql/mysql.sock' $ssl_ca = undef $ssl_cert = undef $ssl_key = undef $tmpdir = '/tmp' $managed_dirs = undef # mysql::bindings $java_package_name = undef $perl_package_name = 'p5-DBD-mysql' $php_package_name = 'php-mysql' $python_package_name = 'py-mysql' $ruby_package_name = 'ruby-mysql' # The libraries installed by these packages are included in client and server packages, no installation required. $client_dev_package_name = undef $daemon_dev_package_name = undef } 'Solaris': { $client_package_name = 'database/mysql-55/client' $server_package_name = 'database/mysql-55' $basedir = undef $config_file = '/etc/mysql/5.5/my.cnf' $datadir = '/var/mysql/5.5/data' $log_error = "/var/mysql/5.5/data/${::hostname}.err" $pidfile = "/var/mysql/5.5/data/${::hostname}.pid" $root_group = 'bin' $server_service_name = 'application/database/mysql:version_55' $socket = '/tmp/mysql.sock' $ssl_ca = undef $ssl_cert = undef $ssl_key = undef $tmpdir = '/tmp' $managed_dirs = undef # mysql::bindings $java_package_name = undef $perl_package_name = undef $php_package_name = 'web/php-53/extension/php-mysql' $python_package_name = 'library/python/python-mysql' $ruby_package_name = undef # The libraries installed by these packages are included in client and server packages, no installation required. $client_dev_package_name = undef $daemon_dev_package_name = undef } default: { case $::operatingsystem { 'Alpine': { $client_package_name = 'mariadb-client' $server_package_name = 'mariadb' $basedir = '/usr' $config_file = '/etc/mysql/my.cnf' $datadir = '/var/lib/mysql' $log_error = '/var/log/mysqld.log' $pidfile = '/run/mysqld/mysqld.pid' $root_group = 'root' $mysql_group = 'mysql' $mycnf_owner = undef $mycnf_group = undef $server_service_name = 'mariadb' $socket = '/run/mysqld/mysqld.sock' $ssl_ca = '/etc/mysql/cacert.pem' $ssl_cert = '/etc/mysql/server-cert.pem' $ssl_key = '/etc/mysql/server-key.pem' $tmpdir = '/tmp' $managed_dirs = undef $java_package_name = undef $perl_package_name = 'perl-dbd-mysql' $php_package_name = 'php7-mysqlnd' $python_package_name = 'py-mysqldb' $ruby_package_name = undef $client_dev_package_name = undef $daemon_dev_package_name = undef } 'Amazon': { $client_package_name = 'mysql' $server_package_name = 'mysql-server' $basedir = '/usr' $config_file = '/etc/my.cnf' $includedir = '/etc/my.cnf.d' $datadir = '/var/lib/mysql' $log_error = '/var/log/mysqld.log' $pidfile = '/var/run/mysqld/mysqld.pid' $root_group = 'root' $mysql_group = 'mysql' $mycnf_owner = undef $mycnf_group = undef $server_service_name = 'mysqld' $socket = '/var/lib/mysql/mysql.sock' $ssl_ca = '/etc/mysql/cacert.pem' $ssl_cert = '/etc/mysql/server-cert.pem' $ssl_key = '/etc/mysql/server-key.pem' $tmpdir = '/tmp' $managed_dirs = undef # mysql::bindings $java_package_name = 'mysql-connector-java' $perl_package_name = 'perl-DBD-MySQL' $php_package_name = 'php-mysql' $python_package_name = 'MySQL-python' $ruby_package_name = 'ruby-mysql' # The libraries installed by these packages are included in client and server packages, no installation required. $client_dev_package_name = undef $daemon_dev_package_name = undef } default: { - fail(translate('Unsupported platform: puppetlabs-%{module_name} currently doesn\'t support %{osfamily} or %{os}.', - { 'module_name' => $module_name, 'os' => $::operatingsystem, 'osfamily' => $::osfamily })) + fail("Unsupported platform: puppetlabs-${module_name} currently doesn\'t support ${::osfamily} or ${::operatingsystem}.") } } } } case $::operatingsystem { 'Ubuntu': { # lint:ignore:only_variable_string if versioncmp("${::operatingsystemmajrelease}", '14.10') > 0 { # lint:endignore $server_service_provider = 'systemd' } else { $server_service_provider = 'upstart' } } 'Alpine': { $server_service_provider = 'rc-service' } 'FreeBSD': { $server_service_provider = 'freebsd' } default: { $server_service_provider = undef } } $default_options = { 'client' => { 'port' => '3306', 'socket' => $mysql::params::socket, }, 'mysqld_safe' => { 'nice' => '0', 'log-error' => $mysql::params::log_error, 'socket' => $mysql::params::socket, }, 'mysqld-5.0' => { 'myisam-recover' => 'BACKUP', }, 'mysqld-5.1' => { 'myisam-recover' => 'BACKUP', }, 'mysqld-5.5' => { 'myisam-recover' => 'BACKUP', 'query_cache_limit' => '1M', 'query_cache_size' => '16M', }, 'mysqld-5.6' => { 'myisam-recover-options' => 'BACKUP', 'query_cache_limit' => '1M', 'query_cache_size' => '16M', }, 'mysqld-5.7' => { 'myisam-recover-options' => 'BACKUP', 'query_cache_limit' => '1M', 'query_cache_size' => '16M', }, 'mysqld' => { 'basedir' => $mysql::params::basedir, 'bind-address' => '127.0.0.1', 'datadir' => $mysql::params::datadir, 'expire_logs_days' => '10', 'key_buffer_size' => '16M', 'log-error' => $mysql::params::log_error, 'max_allowed_packet' => '16M', 'max_binlog_size' => '100M', 'max_connections' => '151', 'pid-file' => $mysql::params::pidfile, 'port' => '3306', 'skip-external-locking' => true, 'socket' => $mysql::params::socket, 'ssl' => false, 'ssl-ca' => $mysql::params::ssl_ca, 'ssl-cert' => $mysql::params::ssl_cert, 'ssl-key' => $mysql::params::ssl_key, 'ssl-disable' => false, 'thread_cache_size' => '8', 'thread_stack' => '256K', 'tmpdir' => $mysql::params::tmpdir, 'user' => 'mysql', }, 'mysqldump' => { 'max_allowed_packet' => '16M', 'quick' => true, 'quote-names' => true, }, 'isamchk' => { 'key_buffer_size' => '16M', }, } if defined('$xtrabackup_package_name_override') { $xtrabackup_package_name = pick($xtrabackup_package_name_override, $xtrabackup_package_name_default) } else { $xtrabackup_package_name = $xtrabackup_package_name_default } ## Additional graceful failures if $::osfamily == 'RedHat' and $::operatingsystemmajrelease == '4' and $::operatingsystem != 'Amazon' { - fail(translate('Unsupported platform: puppetlabs-%{module_name} only supports RedHat 5.0 and beyond.', { 'module_name' => $module_name })) + fail("Unsupported platform: puppetlabs-${module_name} only supports RedHat 5.0 and beyond.") } } diff --git a/manifests/server.pp b/manifests/server.pp index 031b8ca..461cb6f 100644 --- a/manifests/server.pp +++ b/manifests/server.pp @@ -1,178 +1,178 @@ # @summary # Installs and configures the MySQL server. # # @example Install MySQL Server # class { '::mysql::server': # package_name => 'mysql-server', # package_ensure => '5.7.1+mysql~trusty', # root_password => 'strongpassword', # remove_default_accounts => true, # } # # @param config_file # The location, as a path, of the MySQL configuration file. # @param config_file_mode # The MySQL configuration file's permissions mode. # @param includedir # The location, as a path, of !includedir for custom configuration overrides. # @param install_options # Passes [install_options](https://docs.puppetlabs.com/references/latest/type.html#package-attribute-install_options) array to managed package resources. You must pass the appropriate options for the specified package manager # @param install_secret_file # Path to secret file containing temporary root password. # @param manage_config_file # Whether the MySQL configuration file should be managed. Valid values are `true`, `false`. Defaults to `true`. # @param options # A hash of options structured like the override_options, but not merged with the default options. Use this if you don't want your options merged with the default options. # @param override_options # Specifies override options to pass into MySQL. Structured like a hash in the my.cnf file: See above for usage details. # @param package_ensure # Whether the package exists or should be a specific version. Valid values are 'present', 'absent', or 'x.y.z'. Defaults to 'present'. # @param package_manage # Whether to manage the MySQL server package. Defaults to `true`. # @param package_name # The name of the MySQL server package to install. # @param package_provider # Define a specific provider for package install. # @param package_source # The location of the package source (require for some package provider) # @param purge_conf_dir # Whether the `includedir` directory should be purged. Valid values are `true`, `false`. Defaults to `false`. # @param remove_default_accounts # Specifies whether to automatically include `mysql::server::account_security`. Valid values are `true`, `false`. Defaults to `false`. # @param restart # Whether the service should be restarted when things change. Valid values are `true`, `false`. Defaults to `false`. # @param root_group # The name of the group used for root. Can be a group name or a group ID. See more about the [group](https://docs.puppetlabs.com/references/latest/type.html#file-attribute-group). # @param mysql_group # The name of the group of the MySQL daemon user. Can be a group name or a group ID. See more about the [group](https://docs.puppetlabs.com/references/latest/type.html#file-attribute-group). # @param mycnf_owner # Name or user-id who owns the mysql-config-file. # @param mycnf_group # Name or group-id which owns the mysql-config-file. # @param root_password # The MySQL root password. Puppet attempts to set the root password and update `/root/.my.cnf` with it. This is required if `create_root_user` or `create_root_my_cnf` are true. If `root_password` is 'UNSET', then `create_root_user` and `create_root_my_cnf` are assumed to be false --- that is, the MySQL root user and `/root/.my.cnf` are not created. Password changes are supported; however, the old password must be set in `/root/.my.cnf`. Effectively, Puppet uses the old password, configured in `/root/my.cnf`, to set the new password in MySQL, and then updates `/root/.my.cnf` with the new password. # @param service_enabled # Specifies whether the service should be enabled. Valid values are `true`, `false`. Defaults to `true`. # @param service_manage # Specifies whether the service should be managed. Valid values are `true`, `false`. Defaults to `true`. # @param service_name # The name of the MySQL server service. Defaults are OS dependent, defined in 'params.pp'. # @param service_provider # The provider to use to manage the service. For Ubuntu, defaults to 'upstart'; otherwise, default is undefined. # @param create_root_user # Whether root user should be created. Valid values are `true`, `false`. Defaults to `true`. This is useful for a cluster setup with Galera. The root user has to be created only once. You can set this parameter true on one node and set it to false on the remaining nodes. # @param create_root_my_cnf # Whether to create `/root/.my.cnf`. Valid values are `true`, `false`. Defaults to `true`. `create_root_my_cnf` allows creation of `/root/.my.cnf` independently of `create_root_user`. You can use this for a cluster setup with Galera where you want `/root/.my.cnf` to exist on all nodes. # @param users # Optional hash of users to create, which are passed to [mysql_user](#mysql_user). # @param grants # Optional hash of grants, which are passed to [mysql_grant](#mysql_grant). # @param databases # Optional hash of databases to create, which are passed to [mysql_database](#mysql_database). # @param enabled # _Deprecated_ # @param manage_service # _Deprecated_ # @param old_root_password # This parameter no longer does anything. It exists only for backwards compatibility. See the `root_password` parameter above for details on changing the root password. # class mysql::server ( $config_file = $mysql::params::config_file, $config_file_mode = $mysql::params::config_file_mode, $includedir = $mysql::params::includedir, $install_options = undef, $install_secret_file = $mysql::params::install_secret_file, $manage_config_file = $mysql::params::manage_config_file, Mysql::Options $options = {}, $override_options = {}, $package_ensure = $mysql::params::server_package_ensure, $package_manage = $mysql::params::server_package_manage, $package_name = $mysql::params::server_package_name, $package_provider = undef, $package_source = undef, $purge_conf_dir = $mysql::params::purge_conf_dir, $remove_default_accounts = false, $restart = $mysql::params::restart, $root_group = $mysql::params::root_group, $managed_dirs = $mysql::params::managed_dirs, $mysql_group = $mysql::params::mysql_group, $mycnf_owner = $mysql::params::mycnf_owner, $mycnf_group = $mysql::params::mycnf_group, $root_password = $mysql::params::root_password, $service_enabled = $mysql::params::server_service_enabled, $service_manage = $mysql::params::server_service_manage, $service_name = $mysql::params::server_service_name, $service_provider = $mysql::params::server_service_provider, $create_root_user = $mysql::params::create_root_user, $create_root_my_cnf = $mysql::params::create_root_my_cnf, $create_root_login_file = $mysql::params::create_root_login_file, $login_file = $mysql::params::login_file, $users = {}, $grants = {}, $databases = {}, # Deprecated parameters $enabled = undef, $manage_service = undef, $old_root_password = undef ) inherits mysql::params { # Deprecated parameters. if $enabled { crit('This parameter has been renamed to service_enabled.') $real_service_enabled = $enabled } else { $real_service_enabled = $service_enabled } if $manage_service { crit('This parameter has been renamed to service_manage.') $real_service_manage = $manage_service } else { $real_service_manage = $service_manage } if $old_root_password { - warning(translate('The `old_root_password` attribute is no longer used and will be removed in a future release.')) + warning('The `old_root_password` attribute is no longer used and will be removed in a future release.') } if ! empty($options) and ! empty($override_options) { - fail(translate('You can\'t specify $options and $override_options simultaneously, see the README section \'Customize server options\'!')) + fail('You can\'t specify $options and $override_options simultaneously, see the README section \'Customize server options\'!') } # If override_options are set, create a merged together set of options. Rightmost hashes win over left. # If options are set, just use them. $_options = empty($options) ? { true => mysql::normalise_and_deepmerge($mysql::params::default_options, $override_options), false => $options, } Class['mysql::server::root_password'] -> Mysql::Db <| |> include 'mysql::server::config' include 'mysql::server::install' include 'mysql::server::managed_dirs' include 'mysql::server::installdb' include 'mysql::server::service' include 'mysql::server::root_password' include 'mysql::server::providers' if $remove_default_accounts { class { 'mysql::server::account_security': require => Anchor['mysql::server::end'], } } anchor { 'mysql::server::start': } anchor { 'mysql::server::end': } if $restart { Class['mysql::server::config'] ~> Class['mysql::server::service'] } Anchor['mysql::server::start'] -> Class['mysql::server::config'] -> Class['mysql::server::install'] -> Class['mysql::server::managed_dirs'] -> Class['mysql::server::installdb'] -> Class['mysql::server::service'] -> Class['mysql::server::root_password'] -> Class['mysql::server::providers'] -> Anchor['mysql::server::end'] } diff --git a/manifests/server/backup.pp b/manifests/server/backup.pp index 0088590..6fab65c 100644 --- a/manifests/server/backup.pp +++ b/manifests/server/backup.pp @@ -1,141 +1,140 @@ # @summary # Create and manage a MySQL backup. # # @example Create a basic MySQL backup: # class { 'mysql::server': # root_password => 'password' # } # class { 'mysql::server::backup': # backupuser => 'myuser', # backuppassword => 'mypassword', # backupdir => '/tmp/backups', # } # class { 'mysql::server::backup': # backupmethod => 'mariabackup', # provider => 'xtrabackup', # backupdir => '/tmp/backups', # } # # @param backupuser # MySQL user to create with backup administrator privileges. # @param backuppassword # Password to create for `backupuser`. # @param backupdir # Directory to store backup. # @param backupdirmode # Permissions applied to the backup directory. This parameter is passed directly to the file resource. # @param backupdirowner # Owner for the backup directory. This parameter is passed directly to the file resource. # @param backupdirgroup # Group owner for the backup directory. This parameter is passed directly to the file resource. # @param backupcompress # Whether or not to compress the backup (when using the mysqldump or xtrabackup provider) # @param backupmethod # The execution binary for backing up. ex. mysqldump, xtrabackup, mariabackup # @param backup_success_file_path # Specify a path where upon successfull backup a file should be created for checking purposes. # @param backuprotate # Backup rotation interval in 24 hour periods. # @param ignore_events # Ignore the mysql.event table. # @param delete_before_dump # Whether to delete old .sql files before backing up. Setting to true deletes old files before backing up, while setting to false deletes them after backup. # @param backupdatabases # Databases to backup (required if using xtrabackup provider). By default `[]` will back up all databases. # @param file_per_database # Use file per database mode creating one file per database backup. # @param include_routines # Dump stored routines (procedures and functions) from dumped databases when doing a `file_per_database` backup. # @param include_triggers # Dump triggers for each dumped table when doing a `file_per_database` backup. # @param incremental_backups # A flag to activate/deactivate incremental backups. Currently only supported by the xtrabackup provider. # @param ensure # @param time # An array of two elements to set the backup time. Allows ['23', '5'] (i.e., 23:05) or ['3', '45'] (i.e., 03:45) for HH:MM times. # @param prescript # A script that is executed before the backup begins. # @param postscript # A script that is executed when the backup is finished. This could be used to sync the backup to a central store. This script can be either a single line that is directly executed or a number of lines supplied as an array. It could also be one or more externally managed (executable) files. # @param execpath # Allows you to set a custom PATH should your MySQL installation be non-standard places. Defaults to `/usr/bin:/usr/sbin:/bin:/sbin`. # @param provider # Sets the server backup implementation. Valid values are: # @param maxallowedpacket # Defines the maximum SQL statement size for the backup dump script. The default value is 1MB, as this is the default MySQL Server value. # @param optional_args # Specifies an array of optional arguments which should be passed through to the backup tool. (Supported by the xtrabackup and mysqldump providers.) # @param install_cron # Manage installation of cron package # @param compression_command # Configure the command used to compress the backup (when using the mysqldump provider). Make sure the command exists # on the target system. Packages for it are NOT automatically installed. # @param compression_extension # Configure the file extension for the compressed backup (when using the mysqldump provider) class mysql::server::backup ( $backupuser = undef, $backuppassword = undef, $backupdir = undef, $backupdirmode = '0700', $backupdirowner = 'root', $backupdirgroup = $mysql::params::root_group, $backupcompress = true, $backuprotate = 30, $backupmethod = undef, $backup_success_file_path = '/tmp/mysqlbackup_success', $ignore_events = true, $delete_before_dump = false, $backupdatabases = [], $file_per_database = false, $include_routines = false, $include_triggers = false, $ensure = 'present', $time = ['23', '5'], $prescript = false, $postscript = false, $execpath = '/usr/bin:/usr/sbin:/bin:/sbin', $provider = 'mysqldump', $maxallowedpacket = '1M', $optional_args = [], $incremental_backups = true, $install_cron = true, $compression_command = undef, $compression_extension = undef ) inherits mysql::params { if $prescript and $provider =~ /(mysqldump|mysqlbackup)/ { - warning(translate("The 'prescript' option is not currently implemented for the %{provider} backup provider.", - { 'provider' => $provider })) + warning("The 'prescript' option is not currently implemented for the ${provider} backup provider.") } create_resources('class', { "mysql::backup::${provider}" => { 'backupuser' => $backupuser, 'backuppassword' => $backuppassword, 'backupdir' => $backupdir, 'backupdirmode' => $backupdirmode, 'backupdirowner' => $backupdirowner, 'backupdirgroup' => $backupdirgroup, 'backupcompress' => $backupcompress, 'backuprotate' => $backuprotate, 'backupmethod' => $backupmethod, 'backup_success_file_path' => $backup_success_file_path, 'ignore_events' => $ignore_events, 'delete_before_dump' => $delete_before_dump, 'backupdatabases' => $backupdatabases, 'file_per_database' => $file_per_database, 'include_routines' => $include_routines, 'include_triggers' => $include_triggers, 'ensure' => $ensure, 'time' => $time, 'prescript' => $prescript, 'postscript' => $postscript, 'execpath' => $execpath, 'maxallowedpacket' => $maxallowedpacket, 'optional_args' => $optional_args, 'incremental_backups' => $incremental_backups, 'install_cron' => $install_cron, 'compression_command' => $compression_command, 'compression_extension' => $compression_extension, } }) } diff --git a/metadata.json b/metadata.json index 13acb65..26b6648 100644 --- a/metadata.json +++ b/metadata.json @@ -1,90 +1,86 @@ { "name": "puppetlabs-mysql", "version": "11.0.0", "author": "puppetlabs", "summary": "Installs, configures, and manages the MySQL service.", "license": "Apache-2.0", "source": "git://github.com/puppetlabs/puppetlabs-mysql", "project_page": "http://github.com/puppetlabs/puppetlabs-mysql", "issues_url": "https://tickets.puppetlabs.com/browse/MODULES", "dependencies": [ { "name": "puppetlabs/stdlib", "version_requirement": ">= 3.2.0 < 8.0.0" }, - { - "name": "puppetlabs/translate", - "version_requirement": ">= 1.0.0 < 3.0.0" - }, { "name": "puppetlabs/resource_api", "version_requirement": ">= 1.0.0 < 2.0.0" } ], "operatingsystem_support": [ { "operatingsystem": "RedHat", "operatingsystemrelease": [ "6", "7", "8" ] }, { "operatingsystem": "CentOS", "operatingsystemrelease": [ "6", "7", "8" ] }, { "operatingsystem": "OracleLinux", "operatingsystemrelease": [ "6", "7" ] }, { "operatingsystem": "Scientific", "operatingsystemrelease": [ "6", "7" ] }, { "operatingsystem": "SLES", "operatingsystemrelease": [ "12", "15" ] }, { "operatingsystem": "Debian", "operatingsystemrelease": [ "8", "9", "10" ] }, { "operatingsystem": "Ubuntu", "operatingsystemrelease": [ "14.04", "16.04", "18.04", "20.04" ] } ], "requirements": [ { "name": "puppet", "version_requirement": ">= 6.0.0 < 8.0.0" } ], "description": "MySQL module", "template-url": "https://github.com/puppetlabs/pdk-templates#main", "template-ref": "heads/main-0-g44cc7ed", "pdk-version": "1.18.1" }