2023-02-13 09:44:56 +00:00
|
|
|
#Class for SUNET-Drive-Proxysql
|
|
|
|
class sunetdrive::proxysql (
|
|
|
|
$bootstrap = undef,
|
|
|
|
$location = undef,
|
|
|
|
$proxysql_container_name = 'proxysql_proxysql_1',
|
2023-02-28 11:44:15 +00:00
|
|
|
$manage_config = true,
|
2023-02-13 09:44:56 +00:00
|
|
|
) {
|
|
|
|
|
|
|
|
# Config from group.yaml
|
|
|
|
$environment = sunetdrive::get_environment()
|
|
|
|
$config = hiera_hash($environment)
|
|
|
|
$db_ip = $config['db']
|
|
|
|
$nextcloud_ip = $config['app']
|
|
|
|
$proxysql_ok_num = length($nextcloud_ip)
|
|
|
|
$proxysql_warn_num = $proxysql_ok_num - 1
|
|
|
|
|
|
|
|
# Global config from common.yaml
|
|
|
|
$proxysql_version = hiera('proxysql_version')
|
|
|
|
$tug_office = hiera_array('tug_office')
|
|
|
|
|
|
|
|
# Config from local.yaml and local.eyaml
|
|
|
|
$admin_password = safe_hiera('admin_password')
|
|
|
|
$cluster_admin_password = safe_hiera('cluster_admin_password')
|
|
|
|
$monitor_password = safe_hiera('proxysql_password')
|
|
|
|
$mysql_user_password = safe_hiera('mysql_user_password')
|
|
|
|
$mysql_user = safe_hiera('mysql_user')
|
|
|
|
|
|
|
|
$transaction_persistent = 1
|
2024-04-24 19:32:25 +00:00
|
|
|
if $::facts['dockerhost2'] == 'yes' {
|
2024-05-21 15:47:42 +00:00
|
|
|
$hostnet = true
|
2024-04-24 19:32:25 +00:00
|
|
|
}
|
2023-02-13 09:44:56 +00:00
|
|
|
|
|
|
|
file { '/usr/local/bin/proxysql':
|
|
|
|
ensure => file,
|
|
|
|
owner => 'root',
|
|
|
|
group => 'root',
|
|
|
|
content => template('sunetdrive/proxysql/proxysql.erb.sh'),
|
|
|
|
mode => '0755',
|
|
|
|
}
|
|
|
|
file { '/opt/proxysql/insert_server_in_proxysql.sh':
|
|
|
|
ensure => file,
|
|
|
|
owner => 'root',
|
|
|
|
group => 'root',
|
|
|
|
content => template('sunetdrive/proxysql/insert_server_in_proxysql.erb.sh'),
|
|
|
|
mode => '0755',
|
|
|
|
}
|
|
|
|
file {'/usr/lib/nagios/plugins/check_proxysql_server':
|
|
|
|
ensure => 'file',
|
|
|
|
mode => '0755',
|
|
|
|
group => 'nagios',
|
|
|
|
require => Package['nagios-nrpe-server'],
|
|
|
|
content => template('sunetdrive/proxysql/check_proxysql_server.erb'),
|
|
|
|
}
|
|
|
|
file {'/usr/lib/nagios/plugins/check_mysql_server_status':
|
|
|
|
ensure => 'file',
|
|
|
|
mode => '0755',
|
|
|
|
group => 'nagios',
|
|
|
|
require => Package['nagios-nrpe-server'],
|
|
|
|
content => template('sunetdrive/proxysql/check_mysql_server_status.erb'),
|
|
|
|
}
|
2023-02-28 11:44:15 +00:00
|
|
|
if $manage_config {
|
|
|
|
file { '/opt/proxysql/proxysql.cnf':
|
|
|
|
ensure => present,
|
|
|
|
content => template('sunetdrive/proxysql/proxysql.cnf.erb'),
|
|
|
|
mode => '0644',
|
|
|
|
}
|
2023-02-13 09:44:56 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
file { '/opt/proxysql/my.cnf':
|
|
|
|
ensure => present,
|
|
|
|
content => template('sunetdrive/proxysql/my.cnf.erb'),
|
|
|
|
mode => '0644',
|
|
|
|
}
|
2023-02-17 16:03:49 +00:00
|
|
|
if $::facts['sunet_nftables_enabled'] == 'yes' {
|
|
|
|
sunet::nftables::docker_expose { 'stats_ports':
|
|
|
|
allow_clients => $tug_office,
|
|
|
|
port => 6080,
|
|
|
|
iif => 'ens3',
|
|
|
|
}
|
|
|
|
sunet::nftables::docker_expose { 'proxysql':
|
|
|
|
allow_clients => ['any'],
|
|
|
|
port => 6032,
|
|
|
|
iif => 'ens3',
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
sunet::misc::ufw_allow { 'stats_ports':
|
|
|
|
from => $tug_office,
|
|
|
|
port => 6080,
|
|
|
|
}
|
2023-02-17 13:46:22 +00:00
|
|
|
}
|
2023-02-13 09:44:56 +00:00
|
|
|
|
|
|
|
sunet::docker_compose { 'drive_proxysql_docker_compose':
|
|
|
|
content => template('sunetdrive/proxysql/docker-compose_proxysql.yml.erb'),
|
|
|
|
service_name => 'proxysql',
|
|
|
|
compose_dir => '/opt/',
|
|
|
|
compose_filename => 'docker-compose.yml',
|
|
|
|
description => 'Proxysql',
|
|
|
|
}
|
|
|
|
if $::fqdn[0,5] == 'node1' {
|
|
|
|
sunet::scriptherder::cronjob { 'insert_server_in_proxysql':
|
|
|
|
cmd => '/opt/proxysql/insert_server_in_proxysql.sh',
|
|
|
|
hour => '*',
|
|
|
|
minute => '*/5',
|
|
|
|
ok_criteria => ['exit_status=0','max_age=1h'],
|
|
|
|
warn_criteria => ['exit_status=1','max_age=3h'],
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
sunet::scriptherder::cronjob { 'insert_server_in_proxysql':
|
|
|
|
ensure => 'absent',
|
|
|
|
cmd => '/opt/proxysql/insert_server_in_proxysql.sh',
|
|
|
|
purge_results => true,
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|