From 1e826ea4876d1808017ba1ec287f0eaee53aeff1 Mon Sep 17 00:00:00 2001 From: N Date: Sun, 24 Jun 2018 14:37:18 +0100 Subject: [PATCH] Introduce standardized mapping files --- mysql/client.sls | 5 +- mysql/config.sls | 13 +- mysql/database.sls | 3 +- mysql/defaults.yaml | 421 ++-------------------------------- mysql/dev.sls | 5 +- mysql/disabled.sls | 3 +- mysql/files/client.cnf | 11 +- mysql/files/galera.cnf | 11 +- mysql/files/my-include.cnf | 13 +- mysql/files/my.cnf | 11 +- mysql/files/mysql-clients.cnf | 11 +- mysql/files/server.cnf | 11 +- mysql/map.jinja | 17 ++ mysql/osfamilymap.yaml | 266 +++++++++++++++++++++ mysql/osmap.yaml | 79 +++++++ mysql/python.sls | 5 +- mysql/repo.sls | 7 +- mysql/server.sls | 21 +- mysql/user.sls | 3 +- 19 files changed, 442 insertions(+), 474 deletions(-) create mode 100644 mysql/map.jinja create mode 100644 mysql/osfamilymap.yaml create mode 100644 mysql/osmap.yaml diff --git a/mysql/client.sls b/mysql/client.sls index 27ede1aa..92f9ee3a 100644 --- a/mysql/client.sls +++ b/mysql/client.sls @@ -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 }} diff --git a/mysql/config.sls b/mysql/config.sls index 2f40051c..993c94ba 100644 --- a/mysql/config.sls +++ b/mysql/config.sls @@ -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 diff --git a/mysql/database.sls b/mysql/database.sls index 6966b8b3..977a0524 100644 --- a/mysql/database.sls +++ b/mysql/database.sls @@ -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')) %} diff --git a/mysql/defaults.yaml b/mysql/defaults.yaml index b1319db3..d1899047 100644 --- a/mysql/defaults.yaml +++ b/mysql/defaults.yaml @@ -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: - 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_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 - 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: {} diff --git a/mysql/dev.sls b/mysql/dev.sls index d3606dbf..e1dd90be 100644 --- a/mysql/dev.sls +++ b/mysql/dev.sls @@ -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 }} diff --git a/mysql/disabled.sls b/mysql/disabled.sls index 808ec378..fde04786 100644 --- a/mysql/disabled.sls +++ b/mysql/disabled.sls @@ -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: diff --git a/mysql/files/client.cnf b/mysql/files/client.cnf index 0dee2931..6374042b 100644 --- a/mysql/files/client.cnf +++ b/mysql/files/client.cnf @@ -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('') }} diff --git a/mysql/files/galera.cnf b/mysql/files/galera.cnf index 982dafd3..d4736cf1 100644 --- a/mysql/files/galera.cnf +++ b/mysql/files/galera.cnf @@ -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('') }} diff --git a/mysql/files/my-include.cnf b/mysql/files/my-include.cnf index 5e65b7c8..eed05510 100644 --- a/mysql/files/my-include.cnf +++ b/mysql/files/my-include.cnf @@ -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 }} diff --git a/mysql/files/my.cnf b/mysql/files/my.cnf index f36b633c..b4882bd4 100644 --- a/mysql/files/my.cnf +++ b/mysql/files/my.cnf @@ -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('') }} diff --git a/mysql/files/mysql-clients.cnf b/mysql/files/mysql-clients.cnf index d56177a5..3840f843 100644 --- a/mysql/files/mysql-clients.cnf +++ b/mysql/files/mysql-clients.cnf @@ -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('') }} diff --git a/mysql/files/server.cnf b/mysql/files/server.cnf index abd6b5be..0ed6ce64 100644 --- a/mysql/files/server.cnf +++ b/mysql/files/server.cnf @@ -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('') }} diff --git a/mysql/map.jinja b/mysql/map.jinja new file mode 100644 index 00000000..5d6bfa82 --- /dev/null +++ b/mysql/map.jinja @@ -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', +) %} diff --git a/mysql/osfamilymap.yaml b/mysql/osfamilymap.yaml new file mode 100644 index 00000000..5f8e5a32 --- /dev/null +++ b/mysql/osfamilymap.yaml @@ -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 diff --git a/mysql/osmap.yaml b/mysql/osmap.yaml new file mode 100644 index 00000000..29fd16f4 --- /dev/null +++ b/mysql/osmap.yaml @@ -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 diff --git a/mysql/python.sls b/mysql/python.sls index eea84be0..cecc83fd 100644 --- a/mysql/python.sls +++ b/mysql/python.sls @@ -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 }} diff --git a/mysql/repo.sls b/mysql/repo.sls index 7ff3f254..c3f4ff9e 100644 --- a/mysql/repo.sls +++ b/mysql/repo.sls @@ -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: diff --git a/mysql/server.sls b/mysql/server.sls index 8fc70de3..ae81245b 100644 --- a/mysql/server.sls +++ b/mysql/server.sls @@ -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 diff --git a/mysql/user.sls b/mysql/user.sls index d777a49b..16b9b6d9 100644 --- a/mysql/user.sls +++ b/mysql/user.sls @@ -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') %}