Introduce standardized mapping files

This commit is contained in:
N 2018-06-24 14:37:18 +01:00
parent 25375839d8
commit 1e826ea487
19 changed files with 443 additions and 475 deletions

View file

@ -1,9 +1,8 @@
include:
- .config
{% from tpldir ~ "/defaults.yaml" import rawmap with context %}
{%- set mysql = salt['grains.filter_by'](rawmap, grain='os', merge=salt['pillar.get']('mysql:lookup')) %}
{% from tpldir ~ "/map.jinja" import mysql with context %}
mysql:
pkg.installed:
- name: {{ mysql.client }}
- name: {{ mysql.clientpkg }}

View file

@ -1,5 +1,4 @@
{% from tpldir ~ "/defaults.yaml" import rawmap with context %}
{%- set mysql = salt['grains.filter_by'](rawmap, grain='os', merge=salt['pillar.get']('mysql:lookup')) %}
{% from tpldir ~ "/map.jinja" import mysql with context %}
{% set os_family = salt['grains.get']('os_family', None) %}
{% if "config_directory" in mysql %}
@ -20,6 +19,8 @@ mysql_server_config:
- template: jinja
- source: salt://{{ tpldir }}/files/server.cnf
{% if os_family in ['Debian', 'Gentoo', 'RedHat'] %}
- context:
tpldir: {{ tpldir }}
- user: root
- group: root
- mode: 644
@ -33,6 +34,8 @@ mysql_galera_config:
- template: jinja
- source: salt://{{ tpldir }}/files/galera.cnf
{% if os_family in ['Debian', 'Gentoo', 'RedHat'] %}
- context:
tpldir: {{ tpldir }}
- user: root
- group: root
- mode: 644
@ -46,6 +49,8 @@ mysql_library_config:
- template: jinja
- source: salt://{{ tpldir }}/files/client.cnf
{% if os_family in ['Debian', 'Gentoo', 'RedHat'] %}
- context:
tpldir: {{ tpldir }}
- user: root
- group: root
- mode: 644
@ -59,6 +64,8 @@ mysql_clients_config:
- template: jinja
- source: salt://{{ tpldir }}/files/mysql-clients.cnf
{% if os_family in ['Debian', 'Gentoo', 'RedHat'] %}
- context:
tpldir: {{ tpldir }}
- user: root
- group: root
- mode: 644
@ -76,6 +83,8 @@ mysql_config:
{% else %}
- source: salt://{{ tpldir }}/files/my.cnf
{% endif %}
- context:
tpldir: {{ tpldir }}
{% if os_family in ['Debian', 'Gentoo', 'RedHat'] %}
- user: root
- group: root

View file

@ -1,5 +1,4 @@
{% from tpldir ~ "/defaults.yaml" import rawmap with context %}
{%- set mysql = salt['grains.filter_by'](rawmap, grain='os', merge=salt['pillar.get']('mysql:lookup')) %}
{% from tpldir ~ "/map.jinja" import mysql with context %}
{% set mysql_root_user = salt['pillar.get']('mysql:server:root_user', 'root') %}
{% set mysql_root_pass = salt['pillar.get']('mysql:server:root_password', salt['grains.get']('server_id')) %}

View file

@ -1,422 +1,33 @@
# vim: sts=2 ts=2 sw=2 et ai
#
# SET ALL PARAMS IN CONFIG SECTION USING UNDERSCORE, NOT HYPHEN
# so that it works correctly
{% load_yaml as rawmap %}
Ubuntu:
server: mysql-server
client: mysql-client
mysql:
serverpkg: mysql-server
clientpkg: mysql-client
service: mysql
python: python-mysqldb
pythonpkg: python-mysqldb
devpkg: mysql-devel
debconf_utils: debconf-utils
dev: libmysqlclient-dev
config:
file: /etc/mysql/my.cnf
sections:
client:
port: 3306
socket: /var/run/mysqld/mysqld.sock
mysqld_safe:
socket: /var/run/mysqld/mysqld.sock
nice: 0
mysqld_safe: {}
mysqld:
user: mysql
pid_file: /var/run/mysqld/mysqld.pid
socket: /var/run/mysqld/mysqld.sock
port: 3306
basedir: /usr
datadir: /var/lib/mysql
tmpdir: /tmp
lc_messages_dir: /usr/share/mysql
skip_external_locking: noarg_present
bind_address: 127.0.0.1
key_buffer_size: 16M
max_allowed_packet: 16M
thread_stack: 192K
thread_cache_size: 8
query_cache_limit: 1M
query_cache_size: 16M
log_error: /var/log/mysql/error.log
expire_logs_days: 10
max_binlog_size: 100M
mysqldump:
quick: noarg_present
quote_names: noarg_present
max_allowed_packet: 16M
isamchk:
key_buffer_size: 16M
append: |
!includedir /etc/mysql/conf.d/
Debian:
{%- if salt['grains.get']('osmajorrelease')|int >= 9 %}
{% set mysql_engine = 'mariadb' %}
{% set mysql_service = 'mysql' %}
{%- else %}
{% set mysql_engine = 'mysql' %}
{% set mysql_service = 'mysql' %}
{%- endif %}
server: {{ mysql_engine }}-server
service: {{ mysql_service }}
client: {{ mysql_engine }}-client
python: python-mysqldb
debconf_utils: debconf-utils
dev: lib{{ mysql_engine }}client-dev
config:
file: /etc/mysql/my.cnf
sections:
client:
port: 3306
socket: /var/run/mysqld/mysqld.sock
mysqld_safe:
socket: /var/run/mysqld/mysqld.sock
nice: 0
mysqld:
user: mysql
pid_file: /var/run/mysqld/mysqld.pid
socket: /var/run/mysqld/mysqld.sock
port: 3306
basedir: /usr
datadir: /var/lib/mysql
tmpdir: /tmp
lc_messages_dir: /usr/share/mysql
skip_external_locking: noarg_present
bind_address: 127.0.0.1
key_buffer_size: 16M
max_allowed_packet: 16M
thread_stack: 192K
thread_cache_size: 8
query_cache_limit: 1M
query_cache_size: 16M
expire_logs_days: 10
max_binlog_size: 100M
mysqldump:
quick: noarg_present
quote_names: noarg_present
max_allowed_packet: 16M
isamchk:
key_buffer_size: 16M
append: |
!includedir /etc/mysql/conf.d/
# {% if salt['grains.get']('osmajorrelease')|int >= 9 -%}
# !includedir /etc/mysql/mariadb.conf.d/
# {%- endif %}
CentOS:
# https://mariadb.com/blog/rhel7-transition-mysql-mariadb-first-look
{%- if salt['grains.get']('osmajorrelease')|int in [7] %}
{% set mysql_engine = 'mariadb' %}
{% set mysql_service = 'mariadb' %}
{%- else %}
{% set mysql_engine = 'mysql' %}
{% set mysql_service = 'mysqld' %}
{%- endif %}
server: {{ mysql_engine }}-server
service: {{ mysql_service }}
client: {{ mysql_engine }}
python: MySQL-python
dev: {{ mysql_engine }}-devel
config_directory: /etc/my.cnf.d/
config:
file: /etc/my.cnf
server_config:
file: server.cnf
sections:
mysqld_safe:
log_error: /var/log/{{ mysql_engine }}/mysqld.log
pid_file: /var/run/{{ mysql_engine }}/mysqld.pid
mysqld:
datadir: /var/lib/mysql
socket: /var/lib/mysql/mysql.sock
user: mysql
port: 3306
bind_address: 127.0.0.1
symbolic_links: 0
RedHat:
# https://mariadb.com/blog/rhel7-transition-mysql-mariadb-first-look
{%- if salt['grains.get']('osmajorrelease')|int in [7] %}
{% set mysql_engine = 'mariadb' %}
{% set mysql_service = 'mariadb' %}
{%- else %}
{% set mysql_engine = 'mysql' %}
{% set mysql_service = 'mysqld' %}
{%- endif %}
server: {{ mysql_engine }}-server
service: {{ mysql_service }}
client: {{ mysql_engine }}
python: MySQL-python
dev: {{ mysql_engine }}-devel
config:
file: /etc/my.cnf
sections:
mysqld_safe:
log_error: /var/log/{{ mysql_engine }}/mysqld.log
pid_file: /var/run/{{ mysql_engine }}/mysqld.pid
mysqld:
datadir: /var/lib/mysql
socket: /var/lib/mysql/mysql.sock
user: mysql
port: 3306
bind_address: 127.0.0.1
symbolic_links: 0
Fedora:
server: mariadb-server
client: mariadb
service: mariadb
python: python2-mysql
config_directory: /etc/my.cnf.d/
config:
file: /etc/my.cnf
server_config:
file: server.cnf
sections:
mysqld_safe:
log_error: /var/log/mysqld.log
pid_file: /var/run/mysqld/mysqld.pid
mysqld:
datadir: /var/lib/mysql
socket: /var/lib/mysql/mysql.sock
user: mysql
port: 3306
bind_address: 127.0.0.1
symbolic_links: 0
galera_config:
file: galera.cnf
sections:
mysqld:
binlog_format: ROW
default-storage-engine: innodb
innodb_autoinc_lock_mode: 2
bind-address: 0.0.0.0
wsrep_provider: /usr/lib64/galera/libgalera_smm.so
wsrep_cluster_name: "my_wsrep_cluster"
wsrep_slave_threads: 1
wsrep_certify_nonPK: 1
wsrep_max_ws_rows: 131072
wsrep_max_ws_size: 1073741824
wsrep_debug: 0
wsrep_convert_LOCK_to_trx: 0
wsrep_retry_autocommit: 1
wsrep_auto_increment_control: 1
wsrep_drupal_282555_workaround: 0
wsrep_causal_reads: 0
wsrep_sst_method: rsync
wsrep_sst_auth: "root:"
SUSE:
server: mariadb
client: mariadb-client
service: mysql
{%- if salt['grains.get']('osmajorrelease')|int == 42 %}
# "old" package name up to Leap 42.x
python: python-PyMySQL
{% else %}
python: python2-pymysql
{% endif %}
config:
file: /etc/my.cnf
sections:
client:
port: 3306
socket: /var/run/mysql/mysql.sock
mysqld:
innodb_file_format: Barracuda
innodb_file_per_table: ON
server-id: 1
sql_mode: NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
mysqld_multi:
mysqld: /usr/bin/mysqld_safe
mysqladmin: /usr/bin/mysqladmin
log: /var/log/mysqld_multi.log
append: |
!includedir /etc/my.cnf.d
Arch:
server: mariadb
client: mariadb-clients
service: mysqld
python: mysql-python
config:
file: /etc/mysql/my.cnf
sections:
client:
port: 3306
socket: /run/mysqld/mysqld.sock
mysqld:
datadir: /var/lib/mysql
socket: /run/mysqld/mysqld.sock
user: mysql
port: 3306
symbolic_links: 0
log-bin: mysql-bin
key_buffer_size: 16M
max_allowed_packet: 1M
table_open_cache: 64
sort_buffer_size: 512K
net_buffer_length: 8K
read_buffer_size: 256K
read_rnd_buffer_size: 512K
myisam_sort_buffer_size: 8M
binlog_format: mixed
server-id: 1
skip-external-locking: noarg_present
mysqldump:
max_allowed_packet: 16M
quick: noarg_present
mysql:
no-auto-rehash: noarg_present
myisamchk:
key_buffer_size: 20M
sort_buffer_size: 20M
read_buffer: 2M
write_buffer: 2M
mysqlhotcopy:
interactive-timeout: noarg_present
Amazon:
server: mysql-server
client: mysql
service: mysqld
python: MySQL-python
dev: mysql-devel
config:
file: /etc/my.cnf
sections:
mysqld_safe:
log_error: /var/log/mysqld.log
pid_file: /var/run/mysqld/mysqld.pid
mysqld:
datadir: /var/lib/mysql
socket: /var/lib/mysql/mysql.sock
user: mysql
port: 3306
bind_address: 127.0.0.1
symbolic_links: 0
Gentoo:
server: dev-db/mysql
client: dev-db/mysql
service: mysql
python: dev-python/mysql-python
dev: dev-db/mysqlced
config:
file: /etc/mysql/my.cnf
sections:
client:
port: 3306
socket: /var/run/mysqld/mysqld.sock
mysql:
character_sets_dir: /usr/share/mysql/charsets
default_character_set: utf8
mysqladmin:
character_sets_dir: /usr/share/mysql/charsets
default_character_set: utf8
mysqlcheck:
character_sets_dir: /usr/share/mysql/charsets
default_character_set: utf8
mysqldump:
character_sets_dir: /usr/share/mysql/charsets
default_character_set: utf8
quick: noarg_present
max_allowed_packet: 16M
mysqlimport:
character_sets_dir: /usr/share/mysql/charsets
default_character_set: utf8
mysqlshow:
character_sets_dir: /usr/share/mysql/charsets
default_character_set: utf8
myisamchk:
character_sets_dir: /usr/share/mysql/charsets
key_buffer: 20M
sort_buffer_size: 20M
read_buffer: 2M
write_buffer: 2M
myisampack:
character_sets_dir: /usr/share/mysql/charsets
mysqld_safe:
err_log: /var/log/mysql/mysql.err
mysqld:
character_set_server: utf8
user: mysql
port: 3306
socket: /var/run/mysqld/mysqld.sock
# note: on gentoo the init.d script specifically relies on the variable called pid-file, so don't use the underscore
pid-file: /var/run/mysqld/mysqld.pid
log_error: /var/log/mysql/mysqld.err
basedir: /usr
datadir: /var/lib/mysql
skip_external_locking: noarg_present
key_buffer_size: 16M
max_allowed_packet: 1M
table_open_cache: 64
sort_buffer_size: 512K
net_buffer_length: 8K
read_buffer_size: 256K
read_rnd_buffer_size: 512K
myisam_sort_buffer_size: 8M
language: /usr/share/mysql/english
bind_address: 127.0.0.1
log_bin: noarg_present
server_id: 1
tmpdir: /tmp/
innodb_buffer_pool_size: 16M
innodb_additional_mem_pool_size: 2M
innodb_data_file_path: ibdata1:10M:autoextend:max:128M
innodb_log_file_size: 5M
innodb_log_buffer_size: 8M
innodb_log_files_in_group: 2
innodb_flush_log_at_trx_commit: 1
innodb_lock_wait_timeout: 50
innodb_file_per_table: noarg_present
isamchk:
key_buffer: 20M
sort_buffer_size: 20M
read_buffer: 2M
write_buffer: 2M
mysqlhotcopy:
interactive_timeout: noarg_present
FreeBSD:
server: mysql56-server
client: mysql56-client
service: mysql-server
python: py27-pymysql
dev: mysql56-server
config:
file: /usr/local/etc/my.cnf
sections:
client:
port: 3306
socket: /tmp/mysql.sock
mysqld:
port: 3306
socket: /tmp/mysql.sock
skip-external-locking: noarg_present
key_buffer_size: 16M
max_allowed_packet: 1M
table_open_cache: 64
sort_buffer_size: 512K
net_buffer_length: 8K
read_buffer_size: 256K
read_rnd_buffer_size: 512K
myisam_sort_buffer_size: 8M
log-bin: mysql-bin
binlog_format: mixed
server-id: 1
mysqldump:
quick: noarg_present
max_allowed_packet: 16M
mysql:
no-auto-rehash: noarg_present
myisamchk:
key_buffer_size: 20M
sort_buffer_size: 20M
read_buffer: 2M
write_buffer: 2M
mysqlhotcopy:
interactive-timeout: noarg_present
{% endload %}
#The following dict names are reserved for pillar data (see pillar.example)
global: {}
clients: {}
library: {}
server: {}
salt_user: {}
database: {}
schema: {}
user: {}
dev: {}

View file

@ -1,7 +1,6 @@
{% from tpldir ~ "/defaults.yaml" import rawmap with context %}
{%- set mysql = salt['grains.filter_by'](rawmap, grain='os', merge=salt['pillar.get']('mysql:server:lookup')) %}
{% from tpldir ~ "/map.jinja" import mysql with context %}
mysql_dev:
pkg:
- installed
- name: {{ mysql.dev }}
- name: {{ mysql.devpkg }}

View file

@ -1,5 +1,4 @@
{% from tpldir ~ "/defaults.yaml" import rawmap with context %}
{%- set mysql = salt['grains.filter_by'](rawmap, grain='os', merge=salt['pillar.get']('mysql:server:lookup')) %}
{% from tpldir ~ "/map.jinja" import mysql with context %}
mysql:
service.dead:

View file

@ -4,15 +4,14 @@
{#-
===== FETCH DATA =====
-#}
{%- from "mysql/defaults.yaml" import rawmap with context -%}
{%- from "mysql/supported_sections.yaml" import supported_sections with context -%}
{%- set datamap = salt['grains.filter_by'](rawmap, grain='os', merge=salt['pillar.get']('mysql:library:lookup')) -%}
{% from tpldir ~ "/map.jinja" import mysql with context %}
{%- from tpldir ~ "/supported_sections.yaml" import supported_sections with context -%}
{#-
===== COMBINE DATA =====
-#}
{%- set goodParamList = datamap.library_config.sections -%}
{%- set goodParamList = mysql.library_config.sections -%}
{%- for section_name in supported_sections -%}
{%- set sectdict = datamap.library_config.sections[section_name] | default({}) -%}
{%- set sectdict = mysql.library_config.sections[section_name] | default({}) -%}
{%- for mparam, mvalue in salt['pillar.get']('mysql:library:'+section_name, {}).items() -%}
{%- set mparamUnderscore = mparam | replace('-','_') -%}
{%- do sectdict.update({mparamUnderscore:mvalue}) -%}
@ -37,4 +36,4 @@
{%- endif -%}
{%- endfor %}
{{ datamap.library_config.append | default('') }}
{{ mysql.library_config.append | default('') }}

View file

@ -4,15 +4,14 @@
{#-
===== FETCH DATA =====
-#}
{%- from "mysql/defaults.yaml" import rawmap with context -%}
{%- from "mysql/supported_sections.yaml" import supported_sections with context -%}
{%- set datamap = salt['grains.filter_by'](rawmap, grain='os', merge=salt['pillar.get']('mysql:galera:lookup')) -%}
{% from tpldir ~ "/map.jinja" import mysql with context %}
{%- from tpldir ~ "/supported_sections.yaml" import supported_sections with context -%}
{#-
===== COMBINE DATA =====
-#}
{%- set goodParamList = datamap.galera_config.sections -%}
{%- set goodParamList = mysql.galera_config.sections -%}
{%- for section_name in supported_sections -%}
{%- set sectdict = datamap.galera_config.sections[section_name] | default({}) -%}
{%- set sectdict = mysql.galera_config.sections[section_name] | default({}) -%}
{%- for mparam, mvalue in salt['pillar.get']('mysql:galera:'+section_name, {}).items() -%}
{%- set mparamUnderscore = mparam | replace('-','_') -%}
{%- do sectdict.update({mparamUnderscore:mvalue}) -%}
@ -39,4 +38,4 @@
{%- endif -%}
{%- endfor %}
{{ datamap.galera_config.append | default('') }}
{{ mysql.galera_config.append | default('') }}

View file

@ -4,16 +4,15 @@
{#-
===== FETCH DATA =====
-#}
{%- from "mysql/defaults.yaml" import rawmap with context -%}
{%- from "mysql/supported_sections.yaml" import supported_sections with context -%}
{%- set datamap = salt['grains.filter_by'](rawmap, grain='os', merge=salt['pillar.get']('mysql:global:lookup')) -%}
{% from tpldir ~ "/map.jinja" import mysql with context %}
{%- from tpldir ~ "/supported_sections.yaml" import supported_sections with context -%}
{#-
===== COMBINE DATA =====
-#}
{%- if "sections" in datamap.config -%}
{%- set goodParamList = datamap.config.sections -%}
{%- if "sections" in mysql.config -%}
{%- set goodParamList = mysql.config.sections -%}
{%- for section_name in supported_sections -%}
{%- set sectdict = datamap.config.sections[section_name] | default({}) -%}
{%- set sectdict = mysql.config.sections[section_name] | default({}) -%}
{%- for mparam, mvalue in salt['pillar.get']('mysql:global:'+section_name, {}).items() -%}
{%- set mparamUnderscore = mparam | replace('-','_') -%}
{%- do sectdict.update({mparamUnderscore:mvalue}) -%}
@ -44,4 +43,4 @@
#
# include all files from the config directory
#
!includedir {{ datamap.config_directory }}
!includedir {{ mysql.config_directory }}

View file

@ -4,15 +4,14 @@
{#-
===== FETCH DATA =====
-#}
{%- from "mysql/defaults.yaml" import rawmap with context -%}
{%- from "mysql/supported_sections.yaml" import supported_sections with context -%}
{%- set datamap = salt['grains.filter_by'](rawmap, grain='os', merge=salt['pillar.get']('mysql:server:lookup')) -%}
{% from tpldir ~ "/map.jinja" import mysql with context %}
{%- from tpldir ~ "/supported_sections.yaml" import supported_sections with context -%}
{#-
===== COMBINE DATA =====
-#}
{%- set goodParamList = datamap.config.sections -%}
{%- set goodParamList = mysql.config.sections -%}
{%- for section_name in supported_sections -%}
{%- set sectdict = datamap.config.sections[section_name] | default({}) -%}
{%- set sectdict = mysql.config.sections[section_name] | default({}) -%}
{%- for mparam, mvalue in salt['pillar.get']('mysql:server:'+section_name, {}).items() -%}
{%- set mparamUnderscore = mparam | replace('-','_') -%}
{%- do sectdict.update({mparamUnderscore:mvalue}) -%}
@ -43,4 +42,4 @@
{%- endif -%}
{%- endfor %}
{{ datamap.config.append | default('') }}
{{ mysql.config.append | default('') }}

View file

@ -4,15 +4,14 @@
{#-
===== FETCH DATA =====
-#}
{%- from "mysql/defaults.yaml" import rawmap with context -%}
{%- from "mysql/supported_sections.yaml" import supported_sections with context -%}
{%- set datamap = salt['grains.filter_by'](rawmap, grain='os', merge=salt['pillar.get']('mysql:clients:lookup')) -%}
{% from tpldir ~ "/map.jinja" import mysql with context %}
{%- from tpldir ~ "/supported_sections.yaml" import supported_sections with context -%}
{#-
===== COMBINE DATA =====
-#}
{%- set goodParamList = datamap.clients_config.sections -%}
{%- set goodParamList = mysql.clients_config.sections -%}
{%- for section_name in supported_sections -%}
{%- set sectdict = datamap.clients_config.sections[section_name] | default({}) -%}
{%- set sectdict = mysql.clients_config.sections[section_name] | default({}) -%}
{%- for mparam, mvalue in salt['pillar.get']('mysql:clients:'+section_name, {}).items() -%}
{%- set mparamUnderscore = mparam | replace('-','_') -%}
{%- do sectdict.update({mparamUnderscore:mvalue}) -%}
@ -37,4 +36,4 @@
{%- endif -%}
{%- endfor %}
{{ datamap.clients_config.append | default('') }}
{{ mysql.clients_config.append | default('') }}

View file

@ -4,15 +4,14 @@
{#-
===== FETCH DATA =====
-#}
{%- from "mysql/defaults.yaml" import rawmap with context -%}
{%- from "mysql/supported_sections.yaml" import supported_sections with context -%}
{%- set datamap = salt['grains.filter_by'](rawmap, grain='os', merge=salt['pillar.get']('mysql:server:lookup')) -%}
{% from tpldir ~ "/map.jinja" import mysql with context %}
{%- from tpldir ~ "/supported_sections.yaml" import supported_sections with context -%}
{#-
===== COMBINE DATA =====
-#}
{%- set goodParamList = datamap.server_config.sections -%}
{%- set goodParamList = mysql.server_config.sections -%}
{%- for section_name in supported_sections -%}
{%- set sectdict = datamap.server_config.sections[section_name] | default({}) -%}
{%- set sectdict = mysql.server_config.sections[section_name] | default({}) -%}
{%- for mparam, mvalue in salt['pillar.get']('mysql:server:'+section_name, {}).items() -%}
{%- set mparamUnderscore = mparam | replace('-','_') -%}
{%- do sectdict.update({mparamUnderscore:mvalue}) -%}
@ -39,4 +38,4 @@
{%- endif -%}
{%- endfor %}
{{ datamap.server_config.append | default('') }}
{{ mysql.server_config.append | default('') }}

17
mysql/map.jinja Normal file
View file

@ -0,0 +1,17 @@
{% import_yaml "mysql/defaults.yaml" as defaults %}
{% import_yaml "mysql/osfamilymap.yaml" as osfamilymap %}
{% import_yaml "mysql/osmap.yaml" as osmap %}
{% set mysql = salt['grains.filter_by'](
defaults,
merge=salt['grains.filter_by'](
osfamilymap,
grain='os_family',
merge=salt['grains.filter_by'](
osmap,
grain='os',
merge=salt['pillar.get']('mysql', {}),
),
),
base='mysql',
) %}

266
mysql/osfamilymap.yaml Normal file
View file

@ -0,0 +1,266 @@
# vim: sts=2 ts=2 sw=2 et ai
#
Debian:
{% if salt['grains.get']('osmajorrelease')|int >= 9 %}
serverpkg: mariadb-server
service: mariadb
clientpkg: mariadb-client
devpkg: libmariadbclient-dev
{% else %}
devpkg: libmysqlclient-dev
{% endif %}
config:
sections:
mysqld_safe:
socket: /var/run/mysqld/mysqld.sock
nice: 0
mysqld:
pid_file: /var/run/mysqld/mysqld.pid
basedir: /usr
tmpdir: /tmp
lc_messages_dir: /usr/share/mysql
skip_external_locking: noarg_present
bind_address: 127.0.0.1
key_buffer_size: 16M
max_allowed_packet: 16M
thread_stack: 192K
thread_cache_size: 8
query_cache_limit: 1M
query_cache_size: 16M
expire_logs_days: 10
max_binlog_size: 100M
#innodb_flush_log_at_trx_commit: 1
#innodb_lock_wait_timeout: 50
#innodb_file_per_table: noarg_present
mysqldump:
quick: noarg_present
quote_names: noarg_present
max_allowed_packet: 16M
isamchk:
key_buffer_size: 16M
append: |
!includedir /etc/mysql/conf.d/
# {% if salt['grains.get']('osmajorrelease')|int >= 9 -%}
# !includedir /etc/mysql/mariadb.conf.d/
# {%- endif %}
RedHat:
#https://mariadb.com/blog/rhel7-transition-mysql-mariadb-first-look
{%- if salt['grains.get']('osmajorrelease')|int in [7] %}
{% set fork = 'mariadb' %}
serverpkg: mariadb-server
service: mariadb
devpkg: mariadb-devel
{%- else %}
{% set fork = 'mysql' %}
service: mysqld
{%- endif %}
clientpkg: {{ fork }}
pythonpkg: MySQL-python
config:
file: /etc/my.cnf
sections:
client:
mysqld_safe:
log_error: /var/log/{{ fork }}/mysqld.log
pid_file: /var/run/{{ fork }}/mysqld.pid
mysqld:
socket: /var/lib/mysql/mysql.sock
bind_address: 127.0.0.1
symbolic_links: 0
SUSE:
serverpkg: mariadb
clientpkg: mariadb-client
{%- if salt['grains.get']('osmajorrelease')|int == 42 %}
# "old" package name up to Leap 42.x
pythonpkg: python-PyMySQL
{% else %}
pythonpkg: python2-pymysql
{% endif %}
config:
file: /etc/my.cnf
sections:
client:
socket: /var/run/mysql/mysql.sock
mysqld:
port:
user:
socket:
datadir:
tmpdir:
innodb_file_format: Barracuda
innodb_file_per_table: ON
server-id: 1
sql_mode: NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
mysqld_multi:
mysqld: /usr/bin/mysqld_safe
mysqladmin: /usr/bin/mysqladmin
log: /var/log/mysqld_multi.log
append: |
!includedir /etc/my.cnf.d
Arch:
serverpkg: mariadb
clientpkg: mariadb-clients
service: mysqld
pythonpkg: mysql-python
dev:
config:
sections:
client:
socket: /run/mysqld/mysqld.sock
mysqld:
datadir: /var/lib/mysql
socket: /run/mysqld/mysqld.sock
symbolic_links: 0
log-bin: mysql-bin
key_buffer_size: 16M
max_allowed_packet: 1M
table_open_cache: 64
sort_buffer_size: 512K
net_buffer_length: 8K
read_buffer_size: 256K
read_rnd_buffer_size: 512K
myisam_sort_buffer_size: 8M
binlog_format: mixed
server-id: 1
skip-external-locking: noarg_present
mysqldump:
max_allowed_packet: 16M
quick: noarg_present
mysql:
no-auto-rehash: noarg_present
myisamchk:
key_buffer_size: 20M
sort_buffer_size: 20M
read_buffer: 2M
write_buffer: 2M
mysqlhotcopy:
interactive-timeout: noarg_present
Gentoo:
serverpkg: dev-db/mysql
clientpkg: dev-db/mysql
pythonpkg: dev-python/mysql-python
devpkg: dev-db/mysqlced
config:
sections:
mysql:
character_sets_dir: /usr/share/mysql/charsets
default_character_set: utf8
mysqladmin:
character_sets_dir: /usr/share/mysql/charsets
default_character_set: utf8
mysqlcheck:
character_sets_dir: /usr/share/mysql/charsets
default_character_set: utf8
mysqldump:
character_sets_dir: /usr/share/mysql/charsets
default_character_set: utf8
quick: noarg_present
max_allowed_packet: 16M
mysqlimport:
character_sets_dir: /usr/share/mysql/charsets
default_character_set: utf8
mysqlshow:
character_sets_dir: /usr/share/mysql/charsets
default_character_set: utf8
myisamchk:
character_sets_dir: /usr/share/mysql/charsets
key_buffer: 20M ##????? key_buffer_size ?
sort_buffer_size: 20M
read_buffer: 2M
write_buffer: 2M
myisampack:
character_sets_dir: /usr/share/mysql/charsets
mysqld_safe:
err_log: /var/log/mysql/mysql.err
mysqld:
character_set_serverpkg: utf8
# note: the gentoo init.d script specifically needs pid-file (dash not underscore)
pid-file: /var/run/mysqld/mysqld.pid
log_error: /var/log/mysql/mysqld.err
basedir: /usr
datadir: /var/lib/mysql
skip_external_locking: noarg_present
key_buffer_size: 16M
max_allowed_packet: 1M
table_open_cache: 64
sort_buffer_size: 512K
net_buffer_length: 8K
read_buffer_size: 256K
read_rnd_buffer_size: 512K
myisam_sort_buffer_size: 8M
language: /usr/share/mysql/english
bind_address: 127.0.0.1
log_bin: noarg_present
server_id: 1
tmpdir: /tmp
innodb_buffer_pool_size: 16M
innodb_additional_mem_pool_size: 2M
innodb_data_file_path: ibdata1:10M:autoextend:max:128M
innodb_log_file_size: 5M
innodb_log_buffer_size: 8M
innodb_log_files_in_group: 2
innodb_flush_log_at_trx_commit: 1
innodb_lock_wait_timeout: 50
innodb_file_per_table: noarg_present
isamchk:
key_buffer: 20M ##????? key_buffer_size ?
sort_buffer_size: 20M
read_buffer: 2M
write_buffer: 2M
mysqlhotcopy:
interactive_timeout: noarg_present
FreeBSD:
serverpkg: mysql56-server
clientpkg: mysql56-client
service: mysql-server
pythonpkg: py27-pymysql
devpkg: mysql56-server
config:
file: /usr/local/etc/my.cnf
sections:
client:
socket: /tmp/mysql.sock
mysqld:
user:
datadir:
socket: /tmp/mysql.sock
skip-external-locking: noarg_present
key_buffer_size: 16M
max_allowed_packet: 1M
table_open_cache: 64
sort_buffer_size: 512K
net_buffer_length: 8K
read_buffer_size: 256K
read_rnd_buffer_size: 512K
myisam_sort_buffer_size: 8M
log-bin: mysql-bin
binlog_format: mixed
server-id: 1
mysqldump:
quick: noarg_present
max_allowed_packet: 16M
mysql:
no-auto-rehash: noarg_present
myisamchk:
key_buffer_size: 20M
sort_buffer_size: 20M
read_buffer: 2M
write_buffer: 2M
mysqlhotcopy:
interactive-timeout: noarg_present

79
mysql/osmap.yaml Normal file
View file

@ -0,0 +1,79 @@
# vim: ft=sls
# vim: sts=2 ts=2 sw=2 et ai
Ubuntu:
service: mysql
devpkg: libmysqlclient-dev
config:
sections:
mysqld:
tmpdir: /tmp
log_error: /var/log/mysql/error.log
append: |
!includedir /etc/mysql/conf.d/
CentOS:
# https://mariadb.com/blog/rhel7-transition-mysql-mariadb-first-look
{%- if salt['grains.get']('osmajorrelease')|int in [7] %}
{% set fork = 'mariadb' %}
{% set service = 'mariadb' %}
{%- else %}
{% set fork = 'mysql' %}
{% set service = 'mysqld' %}
{%- endif %}
config_directory: /etc/my.cnf.d/
server_config:
file: server.cnf
sections:
mysqld_safe:
log_error: /var/log/{{ fork }}/mysqld.log
pid_file: /var/run/{{ fork }}/mysqld.pid
mysqld:
socket: /var/lib/mysql/mysql.sock
bind_address: 127.0.0.1
Fedora:
serverpkg: mariadb-server
clientpkg: mariadb
service: mariadb
pythonpkg: python2-mysql
config_directory: /etc/my.cnf.d/
server_config:
file: server.cnf
sections:
mysqld_safe:
log_error: /var/log/mariadb/mariadb.log
pid_file: /var/lib/mysql/mysql.pid
mysqld:
socket: /var/lib/mysql/mysql.sock
bind_address: 127.0.0.1
galera_config:
file: galera.cnf
sections:
mysqld:
bind-address: 0.0.0.0
binlog_format: ROW
default-storage-engine: innodb
innodb_autoinc_lock_mode: 2
wsrep_provider: /usr/lib64/galera/libgalera_smm.so
wsrep_cluster_name: "my_wsrep_cluster"
wsrep_slave_threads: 1
wsrep_certify_nonPK: 1
wsrep_max_ws_rows: 131072
wsrep_max_ws_size: 1073741824
wsrep_debug: 0
wsrep_convert_LOCK_to_trx: 0
wsrep_retry_autocommit: 1
wsrep_auto_increment_control: 1
wsrep_drupal_282555_workaround: 0
wsrep_causal_reads: 0
wsrep_sst_method: rsync
wsrep_sst_auth: "root:"
Amazon:
clientpkg: mysql
service: mysqld
pythonpkg: MySQL-python

View file

@ -1,6 +1,5 @@
{% from tpldir ~ "/defaults.yaml" import rawmap with context %}
{%- set mysql = salt['grains.filter_by'](rawmap, grain='os', merge=salt['pillar.get']('mysql:server:lookup')) %}
{% from tpldir ~ "/map.jinja" import mysql with context %}
mysql_python:
pkg.installed:
- name: {{ mysql.python }}
- name: {{ mysql.pythonpkg }}

View file

@ -1,8 +1,7 @@
include:
- .config
{% from tpldir ~ "/defaults.yaml" import rawmap with context %}
{%- set mysql = salt['grains.filter_by'](rawmap, grain='os', merge=salt['pillar.get']('mysql:lookup')) %}
{% from tpldir ~ "/map.jinja" import mysql with context %}
# Completely ignore non-RHEL based systems
# TODO: Add Debian and Suse systems.
@ -40,10 +39,10 @@ mysql57_community_release:
- file: install_pubkey_mysql
- require_in:
{% if "server_config" in mysql %}
- pkg: {{ mysql.server }}
- pkg: {{ mysql.serverpkg }}
{% endif %}
{% if "clients_config" in mysql %}
- pkg: {{ mysql.client }}
- pkg: {{ mysql.clientpkg }}
{% endif %}
set_pubkey_mysql:

View file

@ -2,8 +2,7 @@ include:
- .config
- .python
{% from tpldir ~ "/defaults.yaml" import rawmap with context %}
{%- set mysql = salt['grains.filter_by'](rawmap, grain='os', merge=salt['pillar.get']('mysql:lookup')) %}
{% from tpldir ~ "/map.jinja" import mysql with context %}
{% set os = salt['grains.get']('os', None) %}
{% set os_family = salt['grains.get']('os_family', None) %}
@ -26,7 +25,7 @@ mysql_debconf:
- data:
'{{ mysql.server }}/start_on_boot': {'type': 'boolean', 'value': 'true'}
- require_in:
- pkg: {{ mysql.server }}
- pkg: {{ mysql.serverpkg }}
- require:
- pkg: mysql_debconf_utils
@ -38,7 +37,7 @@ mysql_password_debconf:
'mysql-server/root_password': {'type': 'password', 'value': '{{ mysql_root_password }}'}
'mysql-server/root_password_again': {'type': 'password', 'value': '{{ mysql_root_password }}'}
- require_in:
- pkg: {{ mysql.server }}
- pkg: {{ mysql.serverpkg }}
- require:
- pkg: mysql_debconf_utils
{% endif %}
@ -90,7 +89,7 @@ mysql_install_datadir:
- env:
- TMPDIR: '/tmp'
- require:
- pkg: {{ mysql.server }}
- pkg: {{ mysql.serverpkg }}
- file: mysql_config
- require_in:
- service: mysqld
@ -98,7 +97,7 @@ mysql_install_datadir:
mysqld-packages:
pkg.installed:
- name: {{ mysql.server }}
- name: {{ mysql.serverpkg }}
{% if os_family == 'Debian' and mysql_root_password %}
- require:
- debconf: mysql_debconf
@ -114,7 +113,7 @@ mysql_initialize:
- user: root
- creates: {{ mysql_datadir}}/mysql/
- require:
- pkg: {{ mysql.server }}
- pkg: {{ mysql.serverpkg }}
{% endif %}
{% if os_family in ['RedHat', 'Suse'] and mysql.server == 'mariadb-server' %}
@ -126,7 +125,7 @@ mysql_initialize:
- group: mysql
- makedirs: True
- require:
- pkg: {{ mysql.server }}
- pkg: {{ mysql.serverpkg }}
{% endif %}
{% if os_family in ['Gentoo'] %}
@ -136,7 +135,7 @@ mysql_initialize:
- user: root
- creates: {{ mysql_datadir}}/mysql/
- require:
- pkg: {{ mysql.server }}
- pkg: {{ mysql.serverpkg }}
{% endif %}
mysqld:
@ -144,14 +143,14 @@ mysqld:
- name: {{ mysql.service }}
- enable: True
- require:
- pkg: {{ mysql.server }}
- pkg: {{ mysql.serverpkg }}
{% if (os_family in ['RedHat', 'Suse'] and mysql.version is defined and mysql.version >= 5.7 and mysql.server != 'mariadb-server') or (os_family in ['Gentoo']) %}
- cmd: mysql_initialize
{% elif os_family in ['RedHat', 'Suse'] and mysql.server == 'mariadb-server' %}
- file: {{ mysql_datadir }}
{% endif %}
- watch:
- pkg: {{ mysql.server }}
- pkg: {{ mysql.serverpkg }}
- file: mysql_config
{% if "config_directory" in mysql and "server_config" in mysql %}
- file: mysql_server_config

View file

@ -1,5 +1,4 @@
{% from tpldir ~ "/defaults.yaml" import rawmap with context %}
{%- set mysql = salt['grains.filter_by'](rawmap, grain='os', merge=salt['pillar.get']('mysql:server:lookup')) %}
{% from tpldir ~ "/map.jinja" import mysql with context %}
{%- set mysql_root_user = salt['pillar.get']('mysql:server:root_user', 'root') %}
{%- set mysql_root_pass = salt['pillar.get']('mysql:server:root_password', salt['grains.get']('server_id')) %}
{%- set mysql_host = salt['pillar.get']('mysql:server:host', 'localhost') %}