New configuration method
parent
446997f69b
commit
7eed88df04
|
@ -18,9 +18,12 @@ Role Variables
|
||||||
|
|
||||||
### Configuration
|
### Configuration
|
||||||
|
|
||||||
- `mysql_cnf`: key/value hash see [defaults/main.yml](default vars file)
|
|
||||||
- `mysql_root_password`: root password (should be protected with [vault](http://docs.ansible.com/playbooks_vault.html))
|
- `mysql_root_password`: root password (should be protected with [vault](http://docs.ansible.com/playbooks_vault.html))
|
||||||
|
|
||||||
|
If you need a feature you can't configure, you can use this list. These config will go to `/etc/mysql/conf.d/01-extra`.
|
||||||
|
|
||||||
|
- `mysql_extra_config`: key/value hash see [defaults/main.yml](default vars file)
|
||||||
|
|
||||||
### Databases
|
### Databases
|
||||||
|
|
||||||
- `mysql_databases`: list...
|
- `mysql_databases`: list...
|
||||||
|
@ -69,4 +72,5 @@ Author Information
|
||||||
|
|
||||||
- You can find many other roles in my GitHub "lab": https://github.com/HanXHX/my-ansible-playbooks
|
- You can find many other roles in my GitHub "lab": https://github.com/HanXHX/my-ansible-playbooks
|
||||||
- All issues, pull-request are welcome :)
|
- All issues, pull-request are welcome :)
|
||||||
|
- Few code come from [geerlingguy](https://github.com/geerlingguy)
|
||||||
|
|
||||||
|
|
|
@ -10,13 +10,65 @@ mysql_root_password: 'change_me_NOW'
|
||||||
# -------------------------------------
|
# -------------------------------------
|
||||||
# Configuration
|
# Configuration
|
||||||
# -------------------------------------
|
# -------------------------------------
|
||||||
mysql_cnf:
|
|
||||||
- group_name: 'mysqld'
|
# MySQL connection settings.
|
||||||
conf:
|
mysql_port: "3306"
|
||||||
- key: 'innodb_file_per_table'
|
mysql_bind_address: '127.0.0.1'
|
||||||
value: 1
|
mysql_datadir: '/var/lib/mysql'
|
||||||
- key: 'innodb_buffer_pool_size' # 60% available RAM :)
|
mysql_pid_file: '/var/run/mysqld/mysqld.pid'
|
||||||
value: '{{ (ansible_memtotal_mb * 0.6) | round | int }}M'
|
mysql_socket: '/var/run/mysqld/mysqld.sock'
|
||||||
|
|
||||||
|
# Slow query log settings.
|
||||||
|
mysql_slow_query_log_enabled: false
|
||||||
|
mysql_slow_query_log_file: '/var/log/mysql-slow.log'
|
||||||
|
mysql_slow_query_time: 2
|
||||||
|
|
||||||
|
# Memory settings (default values optimized ~512MB RAM).
|
||||||
|
mysql_key_buffer_size: '256M'
|
||||||
|
mysql_max_allowed_packet: '64M'
|
||||||
|
mysql_table_open_cache: '256'
|
||||||
|
mysql_sort_buffer_size: '1M'
|
||||||
|
mysql_read_buffer_size: '1M'
|
||||||
|
mysql_read_rnd_buffer_size: '4M'
|
||||||
|
mysql_myisam_sort_buffer_size: '64M'
|
||||||
|
mysql_thread_cache_size: '8'
|
||||||
|
mysql_query_cache_size: '16M'
|
||||||
|
|
||||||
|
# Other settings.
|
||||||
|
mysql_wait_timeout: 28800
|
||||||
|
|
||||||
|
# Try number of CPU's * 2 for thread_concurrency.
|
||||||
|
mysql_thread_concurrency: 2
|
||||||
|
|
||||||
|
# InnoDB settings.
|
||||||
|
mysql_innodb_file_per_table: '1'
|
||||||
|
mysql_innodb_buffer_pool_size: "{{ (ansible_memtotal_mb * 0.6) | round | int }}M"
|
||||||
|
mysql_innodb_additional_mem_pool_size: '20M'
|
||||||
|
mysql_innodb_log_file_size: '64M'
|
||||||
|
mysql_innodb_log_buffer_size: '8M'
|
||||||
|
mysql_innodb_flush_log_at_trx_commit: '1'
|
||||||
|
mysql_innodb_lock_wait_timeout: 50
|
||||||
|
|
||||||
|
# mysqldump settings.
|
||||||
|
mysql_mysqldump_max_allowed_packet: '64M'
|
||||||
|
|
||||||
|
# Logging settings.
|
||||||
|
mysql_log: ''
|
||||||
|
mysql_log_error: '/var/log/mysql.err'
|
||||||
|
mysql_syslog_tag: 'mysql'
|
||||||
|
|
||||||
|
# -------------------------------------
|
||||||
|
# Extra configuration
|
||||||
|
# -------------------------------------
|
||||||
|
#
|
||||||
|
mysql_extra_configuration: []
|
||||||
|
|
||||||
|
# Example:
|
||||||
|
#mysql_extra_configuration:
|
||||||
|
# - group_name: 'mysqld'
|
||||||
|
# conf:
|
||||||
|
# - key: 'innodb_awsome_feature'
|
||||||
|
# value: 1
|
||||||
|
|
||||||
# -------------------------------------
|
# -------------------------------------
|
||||||
# Database / Users
|
# Database / Users
|
||||||
|
@ -36,4 +88,3 @@ mariadb_repository: "http://ftp.igh.cnrs.fr/pub/mariadb/repo/{{ mariadb_version
|
||||||
# -------------------------------------
|
# -------------------------------------
|
||||||
percona_version: '5.6'
|
percona_version: '5.6'
|
||||||
percona_repository: 'http://repo.percona.com/apt'
|
percona_repository: 'http://repo.percona.com/apt'
|
||||||
|
|
||||||
|
|
|
@ -11,8 +11,12 @@
|
||||||
- name: INCLUDE | Install
|
- name: INCLUDE | Install
|
||||||
include: install.yml
|
include: install.yml
|
||||||
|
|
||||||
- name: TEMPLATE | Deploy daemon configuration
|
- name: TEMPLATE | Deploy configuration
|
||||||
template: src=etc/mysql/conf.d/90-config.cnf.j2 dest=/etc/mysql/conf.d/90-config.cnf
|
template: src=etc/mysql/my.cnf.j2 dest=/etc/mysql/my.cnf
|
||||||
|
notify: restart mysql
|
||||||
|
|
||||||
|
- name: TEMPLATE | Deploy extra configuration
|
||||||
|
template: src=etc/mysql/conf.d/10-extra.cnf.j2 dest=/etc/mysql/conf.d/10-extra.cnf
|
||||||
notify: restart mysql
|
notify: restart mysql
|
||||||
|
|
||||||
- name: TEMPLATE Create .my.cnf for root
|
- name: TEMPLATE Create .my.cnf for root
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
# {{ ansible_managed }}
|
# {{ ansible_managed }}
|
||||||
# -------------------------------------------
|
# -------------------------------------------
|
||||||
|
|
||||||
{% for i in mysql_cnf %}
|
{% for i in mysql_extra_configuration %}
|
||||||
[{{ i.group_name }}]
|
[{{ i.group_name }}]
|
||||||
{% for c in i.conf %}
|
{% for c in i.conf %}
|
||||||
{% if c.value is defined %}
|
{% if c.value is defined %}
|
|
@ -0,0 +1,84 @@
|
||||||
|
#
|
||||||
|
# {{ ansible_managed }}
|
||||||
|
#
|
||||||
|
|
||||||
|
[client]
|
||||||
|
port = {{ mysql_port }}
|
||||||
|
socket = {{ mysql_socket }}
|
||||||
|
|
||||||
|
[mysqld]
|
||||||
|
port = {{ mysql_port }}
|
||||||
|
bind-address = {{ mysql_bind_address }}
|
||||||
|
datadir = {{ mysql_datadir }}
|
||||||
|
socket = {{ mysql_socket }}
|
||||||
|
|
||||||
|
# Logging configuration.
|
||||||
|
{% if mysql_log_error == 'syslog' or mysql_log == 'syslog' %}
|
||||||
|
syslog
|
||||||
|
syslog-tag = {{ mysql_syslog_tag }}
|
||||||
|
{% else %}
|
||||||
|
{% if mysql_log %}
|
||||||
|
log = {{ mysql_log }}
|
||||||
|
{% endif %}
|
||||||
|
log-error = {{ mysql_log_error }}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if mysql_slow_query_log_enabled %}
|
||||||
|
# Slow query log configuration.
|
||||||
|
log_slow_queries = 1
|
||||||
|
slow_query_log = 1
|
||||||
|
slow_query_log_file = {{ mysql_slow_query_log_file }}
|
||||||
|
long_query_time = {{ mysql_slow_query_time }}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Disabling symbolic-links is recommended to prevent assorted security risks
|
||||||
|
symbolic-links = 0
|
||||||
|
|
||||||
|
# User is ignored when systemd is used (fedora >= 15).
|
||||||
|
user = mysql
|
||||||
|
|
||||||
|
# http://dev.mysql.com/doc/refman/5.5/en/performance-schema.html
|
||||||
|
;performance_schema
|
||||||
|
|
||||||
|
# Memory settings.
|
||||||
|
key_buffer_size = {{ mysql_key_buffer_size }}
|
||||||
|
max_allowed_packet = {{ mysql_max_allowed_packet }}
|
||||||
|
table_open_cache = {{ mysql_table_open_cache }}
|
||||||
|
sort_buffer_size = {{ mysql_sort_buffer_size }}
|
||||||
|
read_buffer_size = {{ mysql_read_buffer_size }}
|
||||||
|
read_rnd_buffer_size = {{ mysql_read_rnd_buffer_size }}
|
||||||
|
myisam_sort_buffer_size = {{ mysql_myisam_sort_buffer_size }}
|
||||||
|
thread_cache_size = {{ mysql_thread_cache_size }}
|
||||||
|
query_cache_size = {{ mysql_query_cache_size }}
|
||||||
|
|
||||||
|
# Other settings.
|
||||||
|
wait_timeout = {{ mysql_wait_timeout }}
|
||||||
|
|
||||||
|
# Try number of CPU's * 2 for thread_concurrency.
|
||||||
|
thread_concurrency = {{ mysql_thread_concurrency }}
|
||||||
|
|
||||||
|
# InnoDB settings.
|
||||||
|
innodb_file_per_table = {{ mysql_innodb_file_per_table }}
|
||||||
|
innodb_buffer_pool_size = {{ mysql_innodb_buffer_pool_size }}
|
||||||
|
innodb_additional_mem_pool_size = {{ mysql_innodb_additional_mem_pool_size }}
|
||||||
|
innodb_log_file_size = {{ mysql_innodb_log_file_size }}
|
||||||
|
innodb_log_buffer_size = {{ mysql_innodb_log_buffer_size }}
|
||||||
|
innodb_flush_log_at_trx_commit = {{ mysql_innodb_flush_log_at_trx_commit }}
|
||||||
|
innodb_lock_wait_timeout = {{ mysql_innodb_lock_wait_timeout }}
|
||||||
|
|
||||||
|
[mysqldump]
|
||||||
|
quick
|
||||||
|
max_allowed_packet = {{ mysql_mysqldump_max_allowed_packet }}
|
||||||
|
|
||||||
|
[mysqld_safe]
|
||||||
|
pid-file = {{ mysql_pid_file }}
|
||||||
|
|
||||||
|
#
|
||||||
|
# * IMPORTANT: Additional settings that can override those from this file!
|
||||||
|
# The files must end with '.cnf', otherwise they'll be ignored.
|
||||||
|
#
|
||||||
|
!includedir /etc/mysql/conf.d/
|
||||||
|
|
||||||
|
# vim: set ft=dosini :
|
Loading…
Reference in New Issue