class mysql::server( $rootpw = hiera('mysql::server::rootpw', '') ){ include mysql package { "mysql-server": ensure => installed, } service { "mysql": ensure => running, enable => true, hasrestart => true, hasstatus => true, require => Package["mysql-server"], } case $rootpw { '': { fail("You need to define a mysql root password! Please set mysql::server::rootpw config") } } file { '/usr/local/sbin/setmysqlpass.sh': content => template('mysql/setmysqlpass.sh.erb'), require => Service['mysql'], owner => root, group => root, mode => 0500, } exec { 'set_mysql_rootpw': command => "/usr/local/sbin/setmysqlpass.sh", require => [ File['/usr/local/sbin/setmysqlpass.sh'], Package[mysql-server] ], refreshonly => true, user => root, } mysql::cnf { "root": home => "/root", passwd => $rootpw, } define mysql::cnf($home, $passwd) { file { "$home/.my.cnf": content => template('mysql/my.cnf.erb'), require => Service['mysql'], owner => root, group => root, mode => 0400, notify => Exec['set_mysql_rootpw'], } } }