0

I have a following Puppet class using puppetlabs/mysql module:

class hg_playground::makowals::brains::db {

class { '::mysql::client':
    package_name => 'mariadb',
}

$override_options = {
    'mysqld' => {
        'log-bin' => '',
        'server-id' => $mysql_server_id,
  }
}
class { '::mysql::server':
    package_name => 'mariadb-server',
    root_password           => 'TESTOWY',
    remove_default_accounts => true,
    override_options        => $override_options,
}

mysql_user { 'slave_user@localhost':
    ensure => 'present',
    password_hash => mysql_password('master_replication'),
}

mysql_grant { 'slave_user@localhost/*.*':
    ensure => 'present',
    options => ['GRANT'],
    privileges => ['REPLICATION SLAVE'],
    table => '*.*',
    user => 'slave_user@localhost',
}

mysql_database { 'somedb':
    ensure => 'present',
}
}

What happens in there is

  • mariadb-server is being installed correctly
  • root password to db IS NOT set
  • in /root/.my.cnf I have password='TESTOWY'
  • neither new user nor database are not created

Of course running agent does not produce any errors. How to start debugging in this situation? Notices from running the class don't show anything interesting:

notice  /Stage[main]/Mysql::Server::Install/Package[mysql-server]/ensure    created
notice  /Stage[main]/Mysql::Server::Config/File[mysql-config-file]/content  content changed '{md5}54dc3e561e817f9c0a376a58383eb013' to '{md5}ff09a4033f718f08f69da17f0aa86652'
notice  /Stage[main]/Mysql::Server::Service/Service[mysqld]/ensure  ensure changed 'stopped' to 'running'
notice  /Stage[main]/Mysql::Server::Root_password/File[/root/.my.cnf]/ensure    defined content as '{md5}042e1a46bc15a260a349dbbe1bac8e71'

2 Answers2

0

I'm using centos 5 and mariadb is not in main repo, so I don't specified package_name and I tested your class and works, the only thing that I added is require in mysql::server class and I used mysql::db class for create the DB.

class hg_playground::makowals::brains::db {
class { '::mysql::client':
    package_name => 'mariadb',
}

$override_options = {
    'mysqld' => {
        'log-bin' => '',
        'server-id' => $mysql_server_id,
  }
}
class { '::mysql::server':
    package_name => 'mariadb-server',
    root_password           => 'TESTOWY',
    remove_default_accounts => true,
    override_options        => $override_options,
}

mysql_user { 'slave_user@localhost':
    ensure => 'present',
    password_hash => mysql_password('master_replication'),
}

mysql_grant { 'slave_user@localhost/*.*':
    ensure => 'present',
    options => ['GRANT'],
    privileges => ['REPLICATION SLAVE'],
    table => '*.*',
    user => 'slave_user@localhost',
}

mysql_database { 'somedb':
    ensure => 'present',
    require => Class['mysql::server']
  }
}

Puppet execution output.

=> default: Notice: Compiled catalog for centos7.example.com in environment testing in 2.97 seconds
==> default: Notice: /Stage[main]/Mysql::Client::Install/Package[mysql_client]/ensure: created
==> default: Notice: /Stage[main]/Mysql::Server::Install/Package[mysql-server]/ensure: created
==> default: Notice: /Stage[main]/Mysql::Server::Config/File[mysql-config-file]/content: content changed '{md5}54dc3e561e817f9c0a376a58383eb013' to '{md5}40a2060d1d62cb5c3f33e5e74be19889'
==> default: Notice: /Stage[main]/Mysql::Server::Installdb/Exec[mysql_install_db]/returns: executed successfully
==> default: Notice: /Stage[main]/Mysql::Server::Service/Service[mysqld]/ensure: ensure changed 'stopped' to 'running'
==> default: Notice: /Stage[main]/Mysql::Server::Root_password/Mysql_user[root@localhost]/password_hash: defined 'password_hash' as '*416F1598B4E5F9CD0DBFC2E35867FA1F96EBF4F5'
==> default: Notice: /Stage[main]/Mysql::Server::Root_password/File[/root/.my.cnf]/ensure: defined content as '{md5}cd27be3d51dcd48e92de9df7e894accb'
==> default: Notice: /Stage[main]/Mysql::Server::Account_security/Mysql_user[root@127.0.0.1]/ensure: removed
==> default: Notice: /Stage[main]/Mysql::Server::Account_security/Mysql_user[root@::1]/ensure: removed
==> default: Notice: /Stage[main]/Mysql::Server::Account_security/Mysql_user[@localhost]/ensure: removed
==> default: Notice: /Stage[main]/Mysql::Server::Account_security/Mysql_user[root@centos7.example.com]/ensure: removed
==> default: Notice: /Stage[main]/Mysql::Server::Account_security/Mysql_user[@centos7.example.com]/ensure: removed
==> default: Notice: /Stage[main]/Mysql::Server::Account_security/Mysql_database[test]/ensure: removed
==> default: Notice: /Stage[main]/Hg_playground::Makowals::Brains::Db/Mysql_user[slave_user@localhost]/ensure: created
==> default: Notice: /Stage[main]/Hg_playground::Makowals::Brains::Db/Mysql_grant[slave_user@localhost/*.*]/privileges: privileges changed ['USAGE'] to 'REPLICATION SLAVE'
==> default: Notice: /Stage[main]/Hg_playground::Makowals::Brains::Db/Mysql_grant[slave_user@localhost/*.*]/options: defined 'options' as 'GRANT'
==> default: Notice: /Stage[main]/Hg_playground::Makowals::Brains::Db/Mysql_database[somedb]/ensure: created
c4f4t0r
  • 5,301
  • 3
  • 31
  • 42
0

Your mysql::server class should have a package_name attribute that includes a version.

class{ 'mysql::server':
  package_name     => "mariadb-server-${mariadb_version}",
  ...
}

Use e.g. apt-cache search mariadb-server to look at what the package name looks like, assuming you have already taken care of adding a repository version that provides what you want. There's separate repositories for different version families of mariadb.

mc0e
  • 5,866
  • 18
  • 31