Update cookbooks and add wordpress cookbook
This commit is contained in:
@@ -103,11 +103,11 @@ class Chef
|
||||
require 'mysql2'
|
||||
@test_client ||=
|
||||
Mysql2::Client.new(
|
||||
host: new_resource.connection[:host],
|
||||
socket: new_resource.connection[:socket],
|
||||
username: new_resource.connection[:username],
|
||||
password: new_resource.connection[:password],
|
||||
port: new_resource.connection[:port]
|
||||
host: new_resource.connection[:host],
|
||||
socket: new_resource.connection[:socket],
|
||||
username: new_resource.connection[:username],
|
||||
password: new_resource.connection[:password],
|
||||
port: new_resource.connection[:port]
|
||||
)
|
||||
end
|
||||
|
||||
@@ -121,11 +121,11 @@ class Chef
|
||||
require 'mysql2'
|
||||
@repair_client ||=
|
||||
Mysql2::Client.new(
|
||||
host: new_resource.connection[:host],
|
||||
socket: new_resource.connection[:socket],
|
||||
username: new_resource.connection[:username],
|
||||
password: new_resource.connection[:password],
|
||||
port: new_resource.connection[:port]
|
||||
host: new_resource.connection[:host],
|
||||
socket: new_resource.connection[:socket],
|
||||
username: new_resource.connection[:username],
|
||||
password: new_resource.connection[:password],
|
||||
port: new_resource.connection[:port]
|
||||
)
|
||||
end
|
||||
|
||||
@@ -139,11 +139,13 @@ class Chef
|
||||
require 'mysql2'
|
||||
@query_client ||=
|
||||
Mysql2::Client.new(
|
||||
host: new_resource.connection[:host],
|
||||
socket: new_resource.connection[:socket],
|
||||
username: new_resource.connection[:username],
|
||||
password: new_resource.connection[:password],
|
||||
port: new_resource.connection[:port]
|
||||
host: new_resource.connection[:host],
|
||||
socket: new_resource.connection[:socket],
|
||||
username: new_resource.connection[:username],
|
||||
password: new_resource.connection[:password],
|
||||
port: new_resource.connection[:port],
|
||||
flags: new_resource.connection[:flags],
|
||||
database: new_resource.database_name
|
||||
)
|
||||
end
|
||||
|
||||
|
||||
@@ -94,21 +94,84 @@ class Chef
|
||||
|
||||
db_name = new_resource.database_name ? "`#{new_resource.database_name}`" : '*'
|
||||
tbl_name = new_resource.table ? new_resource.table : '*'
|
||||
test_table = new_resource.database_name ? 'mysql.db' : 'mysql.user'
|
||||
possible_global_privs = [
|
||||
:select,
|
||||
:insert,
|
||||
:update,
|
||||
:delete,
|
||||
:create,
|
||||
:drop,
|
||||
:references,
|
||||
:index,
|
||||
:alter,
|
||||
:create_tmp_table,
|
||||
:lock_tables,
|
||||
:create_view,
|
||||
:show_view,
|
||||
:create_routine,
|
||||
:alter_routine,
|
||||
:execute,
|
||||
:event,
|
||||
:trigger,
|
||||
:reload,
|
||||
:shutdown,
|
||||
:process,
|
||||
:file,
|
||||
:show_db,
|
||||
:super,
|
||||
:repl_slave,
|
||||
:repl_client,
|
||||
:create_user
|
||||
]
|
||||
possible_db_privs = [
|
||||
:select,
|
||||
:insert,
|
||||
:update,
|
||||
:delete,
|
||||
:create,
|
||||
:drop,
|
||||
:references,
|
||||
:index,
|
||||
:alter,
|
||||
:create_tmp_table,
|
||||
:lock_tables,
|
||||
:create_view,
|
||||
:show_view,
|
||||
:create_routine,
|
||||
:alter_routine,
|
||||
:execute,
|
||||
:event,
|
||||
:trigger
|
||||
]
|
||||
|
||||
if new_resource.privileges == [:all] && new_resource.database_name
|
||||
desired_privs = possible_db_privs
|
||||
elsif new_resource.privileges == [:all]
|
||||
desired_privs = possible_global_privs
|
||||
else
|
||||
desired_privs = new_resource.privileges
|
||||
end
|
||||
|
||||
# Test
|
||||
incorrect_privs = nil
|
||||
begin
|
||||
test_sql = 'SELECT * from mysql.db'
|
||||
test_sql = "SELECT * from #{test_table}"
|
||||
test_sql += " WHERE User='#{new_resource.username}'"
|
||||
test_sql += " AND Host='#{new_resource.host}'"
|
||||
test_sql += " AND Db='#{new_resource.database_name}'"
|
||||
test_sql += " AND Db='#{new_resource.database_name}'" if new_resource.database_name
|
||||
test_sql_results = test_client.query test_sql
|
||||
|
||||
incorrect_privs = true if test_sql_results.size == 0
|
||||
# These should all by 'Y'
|
||||
test_sql_results.each do |r|
|
||||
new_resource.privileges.each do |p|
|
||||
key = "#{p.capitalize}_priv"
|
||||
desired_privs.each do |p|
|
||||
key = "#{p.capitalize}"
|
||||
.gsub(' ', '_')
|
||||
.gsub('Replication_', 'Repl_')
|
||||
|
||||
key = "#{key}_priv"
|
||||
|
||||
incorrect_privs = true if r[key] != 'Y'
|
||||
end
|
||||
end
|
||||
@@ -156,11 +219,11 @@ class Chef
|
||||
require 'mysql2'
|
||||
@test_client ||=
|
||||
Mysql2::Client.new(
|
||||
host: new_resource.connection[:host],
|
||||
socket: new_resource.connection[:socket],
|
||||
username: new_resource.connection[:username],
|
||||
password: new_resource.connection[:password],
|
||||
port: new_resource.connection[:port]
|
||||
host: new_resource.connection[:host],
|
||||
socket: new_resource.connection[:socket],
|
||||
username: new_resource.connection[:username],
|
||||
password: new_resource.connection[:password],
|
||||
port: new_resource.connection[:port]
|
||||
)
|
||||
end
|
||||
|
||||
@@ -174,11 +237,11 @@ class Chef
|
||||
require 'mysql2'
|
||||
@repair_client ||=
|
||||
Mysql2::Client.new(
|
||||
host: new_resource.connection[:host],
|
||||
socket: new_resource.connection[:socket],
|
||||
username: new_resource.connection[:username],
|
||||
password: new_resource.connection[:password],
|
||||
port: new_resource.connection[:port]
|
||||
host: new_resource.connection[:host],
|
||||
socket: new_resource.connection[:socket],
|
||||
username: new_resource.connection[:username],
|
||||
password: new_resource.connection[:password],
|
||||
port: new_resource.connection[:port]
|
||||
)
|
||||
end
|
||||
|
||||
|
||||
@@ -41,9 +41,7 @@ class Chef
|
||||
unless exists?
|
||||
begin
|
||||
encoding = @new_resource.encoding
|
||||
if encoding != 'DEFAULT'
|
||||
encoding = "'#{@new_resource.encoding}'"
|
||||
end
|
||||
encoding = "'#{@new_resource.encoding}'" if encoding != 'DEFAULT'
|
||||
Chef::Log.debug("#{@new_resource}: Creating database #{new_resource.database_name}")
|
||||
create_sql = "CREATE DATABASE \"#{new_resource.database_name}\""
|
||||
create_sql += " TEMPLATE = #{new_resource.template}" if new_resource.template
|
||||
@@ -100,14 +98,15 @@ class Chef
|
||||
ret
|
||||
end
|
||||
|
||||
# Test if text is psql keyword
|
||||
def keyword?(text)
|
||||
# Verify the postgres server's version number is greater than the integer passed in
|
||||
def version_greater_than?(desired_version_int)
|
||||
begin
|
||||
result = db('template1').exec_params('select * from pg_get_keywords() where word = $1', [text.downcase]).num_tuples != 0
|
||||
ret = db('template1').exec('SHOW server_version_num;')
|
||||
server_version_int = ret.getvalue(0, 0).to_i
|
||||
ensure
|
||||
close
|
||||
end
|
||||
result
|
||||
server_version_int > desired_version_int
|
||||
end
|
||||
|
||||
#
|
||||
@@ -124,7 +123,7 @@ class Chef
|
||||
port = @new_resource.connection[:port] || 5432
|
||||
user = @new_resource.connection[:username] || 'postgres'
|
||||
Chef::Log.debug("#{@new_resource}: connecting to database #{dbname} on #{host}:#{port} as #{user}")
|
||||
password = @new_resource.connection[:password] || node[:postgresql][:password][:postgres]
|
||||
password = @new_resource.connection[:password] || node['postgresql']['password']['postgres']
|
||||
@db = ::PGconn.new(
|
||||
host: host,
|
||||
port: port,
|
||||
|
||||
@@ -42,13 +42,11 @@ class Chef
|
||||
options += " #{@new_resource.createdb ? 'CREATEDB' : 'NOCREATEDB'}"
|
||||
options += " #{@new_resource.createrole ? 'CREATEROLE' : 'NOCREATEROLE'}"
|
||||
options += " #{@new_resource.login ? 'LOGIN' : 'NOLOGIN'}"
|
||||
options += " #{@new_resource.replication ? 'REPLICATION' : 'NOREPLICATION'}" if keyword?('REPLICATION')
|
||||
options += " #{@new_resource.replication ? 'REPLICATION' : 'NOREPLICATION'}" if version_greater_than?(90_100)
|
||||
options += " #{@new_resource.superuser ? 'SUPERUSER' : 'NOSUPERUSER'}"
|
||||
|
||||
statement = "CREATE USER \"#{@new_resource.username}\""
|
||||
if options.length > 0
|
||||
statement += " WITH #{options}"
|
||||
end
|
||||
statement += " WITH #{options}" if options.length > 0
|
||||
|
||||
db('template1').query(statement)
|
||||
@new_resource.updated_by_last_action(true)
|
||||
|
||||
@@ -61,8 +61,8 @@ class Chef
|
||||
def action_query
|
||||
if exists?
|
||||
begin
|
||||
# db.select_db(@new_resource.database_name) if @new_resource.database_name
|
||||
Chef::Log.debug("#{@new_resource}: Performing query [#{new_resource.sql_query}]")
|
||||
db.execute("USE [#{@new_resource.database_name}]").do if @new_resource.database_name
|
||||
db.execute(@new_resource.sql_query).do
|
||||
@new_resource.updated_by_last_action(true)
|
||||
ensure
|
||||
|
||||
@@ -88,7 +88,7 @@ class Chef
|
||||
end
|
||||
Chef::Application.fatal!('Please provide a database_name, SQL Server does not support global GRANT statements.') unless @new_resource.database_name
|
||||
db.execute("USE [#{@new_resource.database_name}]").do
|
||||
@new_resource.sql_roles.each do | sql_role, role_action |
|
||||
@new_resource.sql_roles.each do |sql_role, role_action|
|
||||
alter_statement = "ALTER ROLE [#{sql_role}] #{role_action} MEMBER [#{@new_resource.username}]"
|
||||
Chef::Log.info("#{@new_resource} granting access with statement [#{alter_statement}]")
|
||||
db.execute(alter_statement).do
|
||||
@@ -105,7 +105,7 @@ class Chef
|
||||
server_version = db.execute("SELECT SERVERPROPERTY('productversion')").each.first.values.first
|
||||
Chef::Log.info("SQL Server Version: #{server_version.inspect}")
|
||||
db.execute('USE [master]').do
|
||||
@new_resource.sql_sys_roles.each do | sql_sys_role, role_action |
|
||||
@new_resource.sql_sys_roles.each do |sql_sys_role, role_action|
|
||||
case role_action
|
||||
when 'ADD'
|
||||
if server_version < '11.00.0000.00'
|
||||
|
||||
@@ -35,7 +35,7 @@ class Chef
|
||||
|
||||
def windows_user(arg = nil)
|
||||
set_or_return(
|
||||
:windows_user,
|
||||
:windows_user,
|
||||
arg,
|
||||
kind_of: [TrueClass, FalseClass],
|
||||
default: false
|
||||
@@ -45,7 +45,7 @@ class Chef
|
||||
def sql_roles(arg = nil)
|
||||
Chef::Log.debug("Received roles: #{arg.inspect}")
|
||||
set_or_return(
|
||||
:sql_roles,
|
||||
:sql_roles,
|
||||
arg,
|
||||
kind_of: Hash
|
||||
)
|
||||
@@ -54,7 +54,7 @@ class Chef
|
||||
def sql_sys_roles(arg = nil)
|
||||
Chef::Log.debug("Received Server roles: #{arg.inspect}")
|
||||
set_or_return(
|
||||
:sql_sys_roles,
|
||||
:sql_sys_roles,
|
||||
arg,
|
||||
kind_of: Hash
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user