view modules/website/manifests/mysql.pp @ 400:f354100b688a

Switch to Ubuntu-standard PHP FPM socket dir Ubuntu puts /tmp and /run on tmpfs, which gets wiped each reboot. While these directories *can* be nuked, they aren't on other platforms. Using the old paths, Puppet had to recreate the directory each boot. Using the new paths, Ubuntu handles creation within the systemd config. CentOS should just create once, migrate and work.
author IBBoard <dev@ibboard.co.uk>
date Wed, 20 Apr 2022 19:11:39 +0100
parents 687aa581eef0
children ab9311e91aca
line wrap: on
line source

class website::mysql (
  $mysqluser,
  $mysqlpassword,
  $mysqlsuffix    = '',
  $phpsuffix      = '',
  $phpmysqlsuffix = '',
  $mysqlprefix    = 'mysql')
  {
  if $osfamily == 'RedHat' {
    $client_package_suffix = ''
  }
  elsif $osfamily == 'Debian' {
    $client_package_suffix = '-client'
  }
  
  class { 'mysql::client':
    package_name    => "${mysqlprefix}${mysqlsuffix}${client_package_suffix}",
    bindings_enable => false, #Deal with bindings manually
  }
  class { 'mysql::bindings':
    php_enable       => true,
    php_package_name => "php${phpsuffix}-mysql${phpmysqlsuffix}",
  }
  $mysqld_base_settings = {
    'query_cache_size' => '64M',
    'join_buffer_size' => '524288', #512K
    'tmp_table_size'   => '64M',
    'max_heap_table_size' => '64M',
    'table_open_cache' => '64',
    'log-queries-not-using-indexes' => '1',
    # Set a sensible default character set
    'character-set-server' => 'utf8',
    'collation-server' => 'utf8_general_ci',
    # Settings for best MySQL 4-byte Unicode support
    'innodb_file_per_table' => '1',
  }

  if $operatingsystem == 'CentOS' and versioncmp($operatingsystemrelease, '8') < 0 {
    $mysqld_settings = $mysqld_base_settings + {
      'innodb_file_format' => 'barracuda',
      'innodb_large_prefix' => 'true',
    }
  }
  else {
    $mysqld_settings = $mysqld_base_settings
  }


  class { 'mysql::server':
    package_name => "${mysqlprefix}${mysqlsuffix}-server",
    override_options => {
      'mysqld' => $mysqld_settings
    },
  }
  $username = strip($mysqluser)
  $password = strip($mysqlpassword)
  $configured_marker = "/etc/.${mysqlprefix}.is-configured"
  exec { 'Rename root MySQL user for security':
    command  => "mysql -uroot -e 'GRANT ALL ON *.* TO \"$username\"@\"localhost\" IDENTIFIED BY \"$password\"; DELETE FROM mysql.user WHERE User = \"root\" AND plugin != \"unix_socket\"; DELETE FROM mysql.user WHERE User = \"\"; FLUSH PRIVILEGES;' && touch $configured_marker",
    provider => shell,
    creates  => $configured_marker,
    require  => Class['mysql::server'],
  }
}