Update cookbooks for Ubuntu 16.04 TLS
This commit is contained in:
@@ -1,250 +0,0 @@
|
||||
require 'chef/provider/lwrp_base'
|
||||
require_relative 'helpers'
|
||||
|
||||
class Chef
|
||||
class Provider
|
||||
class MysqlServiceBase < Chef::Provider::LWRPBase
|
||||
use_inline_resources if defined?(use_inline_resources)
|
||||
|
||||
def whyrun_supported?
|
||||
true
|
||||
end
|
||||
|
||||
# Mix in helpers from libraries/helpers.rb
|
||||
include MysqlCookbook::Helpers
|
||||
|
||||
# Service related methods referred to in the :create and :delete
|
||||
# actions need to be implemented in the init system subclasses.
|
||||
#
|
||||
# create_stop_system_service
|
||||
# delete_stop_service
|
||||
|
||||
# All other methods are found in libraries/helpers.rb
|
||||
#
|
||||
# etc_dir, run_dir, log_dir, etc
|
||||
|
||||
action :create do
|
||||
# Yum, Apt, etc. From helpers.rb
|
||||
configure_package_repositories
|
||||
|
||||
# Software installation
|
||||
package "#{new_resource.name} :create #{server_package_name}" do
|
||||
package_name server_package_name
|
||||
version parsed_version if node['platform'] == 'smartos'
|
||||
version new_resource.package_version
|
||||
action new_resource.package_action
|
||||
end
|
||||
|
||||
create_stop_system_service
|
||||
|
||||
# Apparmor
|
||||
configure_apparmor
|
||||
|
||||
# System users
|
||||
group "#{new_resource.name} :create mysql" do
|
||||
group_name 'mysql'
|
||||
action :create
|
||||
end
|
||||
|
||||
user "#{new_resource.name} :create mysql" do
|
||||
username 'mysql'
|
||||
gid 'mysql'
|
||||
action :create
|
||||
end
|
||||
|
||||
# Yak shaving secion. Account for random errata.
|
||||
#
|
||||
# Turns out that mysqld is hard coded to try and read
|
||||
# /etc/mysql/my.cnf, and its presence causes problems when
|
||||
# setting up multiple services.
|
||||
file "#{new_resource.name} :create #{prefix_dir}/etc/mysql/my.cnf" do
|
||||
path "#{prefix_dir}/etc/mysql/my.cnf"
|
||||
action :delete
|
||||
end
|
||||
|
||||
file "#{new_resource.name} :create #{prefix_dir}/etc/my.cnf" do
|
||||
path "#{prefix_dir}/etc/my.cnf"
|
||||
action :delete
|
||||
end
|
||||
|
||||
# mysql_install_db is broken on 5.6.13
|
||||
link "#{new_resource.name} :create #{prefix_dir}/usr/share/my-default.cnf" do
|
||||
target_file "#{prefix_dir}/usr/share/my-default.cnf"
|
||||
to "#{etc_dir}/my.cnf"
|
||||
action :create
|
||||
end
|
||||
|
||||
# Support directories
|
||||
directory "#{new_resource.name} :create #{etc_dir}" do
|
||||
path etc_dir
|
||||
owner new_resource.run_user
|
||||
group new_resource.run_group
|
||||
mode '0750'
|
||||
recursive true
|
||||
action :create
|
||||
end
|
||||
|
||||
directory "#{new_resource.name} :create #{include_dir}" do
|
||||
path include_dir
|
||||
owner new_resource.run_user
|
||||
group new_resource.run_group
|
||||
mode '0750'
|
||||
recursive true
|
||||
action :create
|
||||
end
|
||||
|
||||
directory "#{new_resource.name} :create #{run_dir}" do
|
||||
path run_dir
|
||||
owner new_resource.run_user
|
||||
group new_resource.run_group
|
||||
mode '0755'
|
||||
recursive true
|
||||
action :create
|
||||
end
|
||||
|
||||
directory "#{new_resource.name} :create #{log_dir}" do
|
||||
path log_dir
|
||||
owner new_resource.run_user
|
||||
group new_resource.run_group
|
||||
mode '0750'
|
||||
recursive true
|
||||
action :create
|
||||
end
|
||||
|
||||
directory "#{new_resource.name} :create #{parsed_data_dir}" do
|
||||
path parsed_data_dir
|
||||
owner new_resource.run_user
|
||||
group new_resource.run_group
|
||||
mode '0750'
|
||||
recursive true
|
||||
action :create
|
||||
end
|
||||
|
||||
# Main configuration file
|
||||
template "#{new_resource.name} :create #{etc_dir}/my.cnf" do
|
||||
path "#{etc_dir}/my.cnf"
|
||||
source 'my.cnf.erb'
|
||||
cookbook 'mysql'
|
||||
owner new_resource.run_user
|
||||
group new_resource.run_group
|
||||
mode '0600'
|
||||
variables(
|
||||
config: new_resource,
|
||||
error_log: error_log,
|
||||
include_dir: include_dir,
|
||||
lc_messages_dir: lc_messages_dir,
|
||||
pid_file: pid_file,
|
||||
socket_file: socket_file,
|
||||
tmp_dir: tmp_dir,
|
||||
data_dir: parsed_data_dir
|
||||
)
|
||||
action :create
|
||||
end
|
||||
|
||||
# initialize database and create initial records
|
||||
bash "#{new_resource.name} :create initial records" do
|
||||
code init_records_script
|
||||
returns [0, 1, 2] # facepalm
|
||||
not_if "/usr/bin/test -f #{parsed_data_dir}/mysql/user.frm"
|
||||
action :run
|
||||
end
|
||||
end
|
||||
|
||||
action :delete do
|
||||
# Stop the service before removing support directories
|
||||
delete_stop_service
|
||||
|
||||
directory "#{new_resource.name} :delete #{etc_dir}" do
|
||||
path etc_dir
|
||||
recursive true
|
||||
action :delete
|
||||
end
|
||||
|
||||
directory "#{new_resource.name} :delete #{run_dir}" do
|
||||
path run_dir
|
||||
recursive true
|
||||
action :delete
|
||||
end
|
||||
|
||||
directory "#{new_resource.name} :delete #{log_dir}" do
|
||||
path log_dir
|
||||
recursive true
|
||||
action :delete
|
||||
end
|
||||
end
|
||||
|
||||
#
|
||||
# Platform specific bits
|
||||
#
|
||||
def configure_apparmor
|
||||
# Do not add these resource if inside a container
|
||||
# Only valid on Ubuntu
|
||||
|
||||
unless ::File.exist?('/.dockerenv') || ::File.exist?('/.dockerinit')
|
||||
if node['platform'] == 'ubuntu'
|
||||
# Apparmor
|
||||
package "#{new_resource.name} :create apparmor" do
|
||||
package_name 'apparmor'
|
||||
action :install
|
||||
end
|
||||
|
||||
directory "#{new_resource.name} :create /etc/apparmor.d/local/mysql" do
|
||||
path '/etc/apparmor.d/local/mysql'
|
||||
owner 'root'
|
||||
group 'root'
|
||||
mode '0755'
|
||||
recursive true
|
||||
action :create
|
||||
end
|
||||
|
||||
template "#{new_resource.name} :create /etc/apparmor.d/local/usr.sbin.mysqld" do
|
||||
path '/etc/apparmor.d/local/usr.sbin.mysqld'
|
||||
cookbook 'mysql'
|
||||
source 'apparmor/usr.sbin.mysqld-local.erb'
|
||||
owner 'root'
|
||||
group 'root'
|
||||
mode '0644'
|
||||
action :create
|
||||
notifies :restart, "service[#{new_resource.name} :create apparmor]", :immediately
|
||||
end
|
||||
|
||||
template "#{new_resource.name} :create /etc/apparmor.d/usr.sbin.mysqld" do
|
||||
path '/etc/apparmor.d/usr.sbin.mysqld'
|
||||
cookbook 'mysql'
|
||||
source 'apparmor/usr.sbin.mysqld.erb'
|
||||
owner 'root'
|
||||
group 'root'
|
||||
mode '0644'
|
||||
action :create
|
||||
notifies :restart, "service[#{new_resource.name} :create apparmor]", :immediately
|
||||
end
|
||||
|
||||
template "#{new_resource.name} :create /etc/apparmor.d/local/mysql/#{new_resource.instance}" do
|
||||
path "/etc/apparmor.d/local/mysql/#{new_resource.instance}"
|
||||
cookbook 'mysql'
|
||||
source 'apparmor/usr.sbin.mysqld-instance.erb'
|
||||
owner 'root'
|
||||
group 'root'
|
||||
mode '0644'
|
||||
variables(
|
||||
data_dir: parsed_data_dir,
|
||||
mysql_name: mysql_name,
|
||||
log_dir: log_dir,
|
||||
run_dir: run_dir,
|
||||
pid_file: pid_file,
|
||||
socket_file: socket_file
|
||||
)
|
||||
action :create
|
||||
notifies :restart, "service[#{new_resource.name} :create apparmor]", :immediately
|
||||
end
|
||||
|
||||
service "#{new_resource.name} :create apparmor" do
|
||||
service_name 'apparmor'
|
||||
action :nothing
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user