我有以下使用模块的 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 正在正确安装
- 未设置数据库的 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 不在主 repo 中,所以我没有指定package_name
,我测试了你的课程并且可以工作,我添加的唯一东西是在mysql::server
课程中需要的,我使用 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']
}
}
Puppet 执行输出。
=> 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}",
...
}
使用 egapt-cache search mariadb-server
查看包名称,假设您已经添加了提供所需内容的存储库版本。不同版本的 mariadb 系列有单独的存储库。