Puppet 未設定 MySQL

Puppet 未設定 MySQL

我有一個使用模組的以下 Puppet 類別puppetlabs/mysql

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',
}
}

那裡發生的事情是

  • mariadb-server 已正確安裝
  • 未設定 db 的 root 密碼
  • /root/.my.cnf我有password='TESTOWY'
  • 既沒有創建新用戶也沒有創建資料庫

當然,運行代理不會產生任何錯誤。在這種情況下如何開始調試呢?運行課程的通知沒有顯示任何有趣的內容:

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'

答案1

我正在使用centos 5,mariadb 不在主倉庫中,所以我沒有指定package_name,我測試了你的類別並且可以工作,我添加的唯一的東西是mysql::server類別中的 require ,我使用 mysql::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']
  }
}

傀儡執行輸出。

=> 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[[email protected]]/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[[email protected]]/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

答案2

您的 mysql::server 類別應該有一個包含版本的 package_name 屬性。

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

使用 例如apt-cache search mariadb-server查看套件名稱,假設您已經新增了提供您想要的內容的儲存庫版本。 mariadb 的不同版本系列有單獨的儲存庫。

相關內容