Repository URL to install this package:
|
Version:
0.0.1-1 ▾
|
zendcddemo-chef-cookbooks
/
zendcddemo-files
/
chef
/
cookbooks
/
mysql
/
libraries
/
provider_mysql_service_debian.rb
|
|---|
require 'chef/provider/lwrp_base'
require 'shellwords'
class Chef
class Provider
class MysqlService
class Debian < Chef::Provider::MysqlService
use_inline_resources if defined?(use_inline_resources)
def whyrun_supported?
true
end
action :create do
converge_by 'debian pattern' do
##################
prefix_dir = '/usr'
run_dir = '/var/run/mysqld'
pid_file = '/var/run/mysqld/mysql.pid'
socket_file = '/var/run/mysqld/mysqld.sock'
include_dir = '/etc/mysql/conf.d'
##################
package 'debconf-utils' do
action :install
end
directory '/var/cache/local/preseeding' do
owner 'root'
group 'root'
mode '0755'
action :create
recursive true
end
template '/var/cache/local/preseeding/mysql-server.seed' do
cookbook 'mysql'
source 'debian/mysql-server.seed.erb'
owner 'root'
group 'root'
mode '0600'
variables(:config => new_resource)
action :create
notifies :run, 'execute[preseed mysql-server]', :immediately
end
execute 'preseed mysql-server' do
command '/usr/bin/debconf-set-selections /var/cache/local/preseeding/mysql-server.seed'
action :nothing
end
# package automatically initializes database and starts service.
# ... because that's totally super convenient.
package new_resource.package_name do
action :install
end
# service
service 'mysql' do
provider Chef::Provider::Service::Init::Debian
supports :restart => true
action [:start, :enable]
end
execute 'assign-root-password' do
cmd = "#{prefix_dir}/bin/mysqladmin"
cmd << ' -u root password '
cmd << Shellwords.escape(new_resource.server_root_password)
command cmd
action :run
only_if "#{prefix_dir}/bin/mysql -u root -e 'show databases;'"
end
template '/etc/mysql_grants.sql' do
cookbook 'mysql'
source 'grants/grants.sql.erb'
owner 'root'
group 'root'
mode '0600'
variables(:config => new_resource)
action :create
notifies :run, 'execute[install-grants]'
end
if new_resource.server_root_password.empty?
pass_string = ''
else
pass_string = '-p' + Shellwords.escape(new_resource.server_root_password)
end
execute 'install-grants' do
cmd = "#{prefix_dir}/bin/mysql"
cmd << ' -u root '
cmd << "#{pass_string} < /etc/mysql_grants.sql"
command cmd
action :nothing
end
template '/etc/mysql/debian.cnf' do
cookbook 'mysql'
source 'debian/debian.cnf.erb'
owner 'root'
group 'root'
mode '0600'
variables(:config => new_resource)
action :create
end
#
directory include_dir do
owner 'mysql'
group 'mysql'
mode '0750'
recursive true
action :create
end
directory run_dir do
owner 'mysql'
group 'mysql'
mode '0755'
action :create
recursive true
end
directory new_resource.data_dir do
owner 'mysql'
group 'mysql'
mode '0750'
recursive true
action :create
end
template '/etc/mysql/my.cnf' do
if new_resource.template_source.nil?
source "#{new_resource.version}/my.cnf.erb"
cookbook 'mysql'
else
source new_resource.template_source
end
owner 'mysql'
group 'mysql'
mode '0600'
variables(
:data_dir => new_resource.data_dir,
:pid_file => pid_file,
:socket_file => socket_file,
:port => new_resource.port,
:include_dir => include_dir
)
action :create
notifies :run, 'bash[move mysql data to datadir]'
notifies :restart, 'service[mysql]'
end
bash 'move mysql data to datadir' do
user 'root'
code <<-EOH
service mysql stop \
&& mv /var/lib/mysql/* #{new_resource.data_dir}
EOH
creates "#{new_resource.data_dir}/ibdata1"
creates "#{new_resource.data_dir}/ib_logfile0"
creates "#{new_resource.data_dir}/ib_logfile1"
action :nothing
end
end
end
action :restart do
converge_by 'debian pattern' do
service 'mysql' do
provider Chef::Provider::Service::Init::Debian
supports :restart => true
action :restart
end
end
end
action :reload do
converge_by 'debian pattern' do
service 'mysql' do
provider Chef::Provider::Service::Init::Debian
action :reload
end
end
end
end
end
end
end
Chef::Platform.set :platform => :debian, :resource => :mysql_service, :provider => Chef::Provider::MysqlService::Debian