module-puppetlabs-mysql/lib/puppet/provider/mysql_datadir/mysql.rb

70 lines
2.5 KiB
Ruby

require File.expand_path(File.join(File.dirname(__FILE__), '..', 'mysql'))
Puppet::Type.type(:mysql_datadir).provide(:mysql, :parent => Puppet::Provider::Mysql) do
desc 'manage data directories for mysql instances'
initvars
# Make sure we find mysqld on CentOS
ENV['PATH']=ENV['PATH'] + ':/usr/libexec'
commands :mysqld => 'mysqld'
commands :mysql_install_db => 'mysql_install_db'
def create
name = @resource[:name]
insecure = @resource.value(:insecure) || true
defaults_extra_file = @resource.value(:defaults_extra_file)
user = @resource.value(:user) || "mysql"
basedir = @resource.value(:basedir) || "/usr"
datadir = @resource.value(:datadir) || @resource[:name]
unless defaults_extra_file.nil?
if File.exist?(defaults_extra_file)
defaults_extra_file="--defaults-extra-file=#{defaults_extra_file}"
else
raise ArgumentError, "Defaults-extra-file #{defaults_extra_file} is missing"
end
end
if insecure == true
initialize="--initialize-insecure"
else
initialize="--initialize"
end
if mysqld_version.nil?
debug("Installing MySQL data directory with mysql_install_db --basedir=#{basedir} #{defaults_extra_file} --datadir=#{datadir} --user=#{user}")
mysql_install_db(["--basedir=#{basedir}",defaults_extra_file, "--datadir=#{datadir}", "--user=#{user}"].compact)
else
if mysqld_type == "mysql" and Puppet::Util::Package.versioncmp(mysqld_version, '5.7.6') >= 0
debug("Initializing MySQL data directory >= 5.7.6 with 'mysqld #{defaults_extra_file} #{initialize} --basedir=#{basedir} --datadir=#{datadir} --user=#{user}'")
mysqld([defaults_extra_file,initialize,"--basedir=#{basedir}","--datadir=#{datadir}", "--user=#{user}", "--log_error=/var/tmp/mysqld_initialize.log"].compact)
else
debug("Installing MySQL data directory with mysql_install_db --basedir=#{basedir} #{defaults_extra_file} --datadir=#{datadir} --user=#{user}")
mysql_install_db(["--basedir=#{basedir}",defaults_extra_file, "--datadir=#{datadir}", "--user=#{user}"].compact)
end
end
exists?
end
def destroy
name = @resource[:name]
raise ArgumentError, "ERROR: Resource can not be removed"
end
def exists?
datadir = @resource[:datadir]
File.directory?("#{datadir}/mysql")
end
##
## MySQL datadir properties
##
# Generates method for all properties of the property_hash
mk_resource_methods
end