Skip to content
This repository has been archived by the owner on Feb 13, 2023. It is now read-only.

Commit

Permalink
Update MySQL role to 2.4.0.
Browse files Browse the repository at this point in the history
  • Loading branch information
geerlingguy committed Sep 26, 2016
1 parent 7d17bdb commit 6ba1758
Show file tree
Hide file tree
Showing 9 changed files with 131 additions and 89 deletions.
2 changes: 1 addition & 1 deletion provisioning/requirements.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
- src: geerlingguy.memcached
version: 1.0.7
- src: geerlingguy.mysql
version: 2.3.3
version: 2.4.0
- src: geerlingguy.nginx
version: 1.9.5
- src: geerlingguy.nodejs
Expand Down
70 changes: 29 additions & 41 deletions provisioning/roles/geerlingguy.mysql/.travis.yml
Original file line number Diff line number Diff line change
@@ -1,64 +1,55 @@
---
sudo: required
services: docker

env:
global:
# https://github.com/travis-ci/travis-ci/issues/6461#issuecomment-239577306
DOCKER_VERSION: "1.9.1-0~trusty"
matrix:
- distro: centos7
init: /usr/lib/systemd/systemd
run_opts: "--privileged --volume=/sys/fs/cgroup:/sys/fs/cgroup:ro"
playbook: centos-7-test.yml
- distro: centos6
init: /sbin/init
run_opts: ""
playbook: test.yml
- distro: ubuntu1604
init: /lib/systemd/systemd
run_opts: "--privileged --volume=/sys/fs/cgroup:/sys/fs/cgroup:ro"
playbook: test.yml
- distro: ubuntu1404
init: /sbin/init
run_opts: ""
playbook: test.yml
- distro: centos7
init: /usr/lib/systemd/systemd
run_opts: "--privileged --volume=/sys/fs/cgroup:/sys/fs/cgroup:ro"
playbook: centos-7-test.yml
- distro: centos6
init: /sbin/init
run_opts: ""
playbook: test.yml
- distro: ubuntu1604
init: /lib/systemd/systemd
run_opts: "--privileged --volume=/sys/fs/cgroup:/sys/fs/cgroup:ro"
playbook: test.yml
- distro: ubuntu1404
init: /sbin/init
run_opts: ""
playbook: test.yml

services:
- docker

before_install:
# Downgrade to older version of Docker engine.
- sudo apt-get update
- sudo apt-get remove docker-engine -yq
- sudo apt-get install docker-engine=$DOCKER_VERSION -yq --no-install-suggests --no-install-recommends --force-yes -o Dpkg::Options::="--force-confnew"

# Pull container
- 'sudo docker pull geerlingguy/docker-${distro}-ansible:latest'
- 'docker pull geerlingguy/docker-${distro}-ansible:latest'

script:
- container_id=$(mktemp)
# Run container in detached state
- 'sudo docker run --detach --volume="${PWD}":/etc/ansible/roles/role_under_test:ro ${run_opts} geerlingguy/docker-${distro}-ansible:latest "${init}" > "${container_id}"'
# Run container in detached state.
- 'docker run --detach --volume="${PWD}":/etc/ansible/roles/role_under_test:ro ${run_opts} geerlingguy/docker-${distro}-ansible:latest "${init}" > "${container_id}"'

# Ansible syntax check.
- 'sudo docker exec --tty "$(cat ${container_id})" env TERM=xterm ansible-playbook /etc/ansible/roles/role_under_test/tests/${playbook} --syntax-check'
- 'docker exec --tty "$(cat ${container_id})" env TERM=xterm ansible-playbook /etc/ansible/roles/role_under_test/tests/${playbook} --syntax-check'

# Test role.
- 'sudo docker exec --tty "$(cat ${container_id})" env TERM=xterm ansible-playbook /etc/ansible/roles/role_under_test/tests/${playbook}'
- 'docker exec "$(cat ${container_id})" ansible-playbook /etc/ansible/roles/role_under_test/tests/${playbook}'

# Test role idempotence.
- idempotence=$(mktemp)
- sudo docker exec "$(cat ${container_id})" ansible-playbook /etc/ansible/roles/role_under_test/tests/${playbook} | tee -a ${idempotence}
- docker exec "$(cat ${container_id})" ansible-playbook /etc/ansible/roles/role_under_test/tests/${playbook} | tee -a ${idempotence}
- >
tail ${idempotence}
| grep -q 'changed=0.*failed=0'
&& (echo 'Idempotence test: pass' && exit 0)
|| (echo 'Idempotence test: fail' && exit 1)
# Some MySQL debugging (show all the logs).
- sudo docker exec --tty "$(cat ${container_id})" env TERM=xterm ls -lah /var/log
- sudo docker exec --tty "$(cat ${container_id})" env TERM=xterm cat /var/log/mysql/error.log || true
- sudo docker exec --tty "$(cat ${container_id})" env TERM=xterm cat /var/log/mysql.err || true
- docker exec --tty "$(cat ${container_id})" env TERM=xterm ls -lah /var/log
- docker exec --tty "$(cat ${container_id})" env TERM=xterm cat /var/log/mysql/error.log || true
- docker exec --tty "$(cat ${container_id})" env TERM=xterm cat /var/log/mysql.err || true

# Check to make sure we can connect to MySQL via Unix socket.
- >
Expand All @@ -74,14 +65,11 @@ script:
&& (echo 'MySQL running normally' && exit 0)
|| (echo 'MySQL not running' && exit 1)
# Clean up
- sudo docker stop "$(cat ${container_id})"

after_failure:
# Check MySQL settings.
- 'sudo docker exec --tty "$(cat ${container_id})" env TERM=xterm cat /var/log/mysql/error.log'
- 'sudo docker exec --tty "$(cat ${container_id})" env TERM=xterm cat /var/log/mysql.err'
- 'sudo docker exec --tty "$(cat ${container_id})" env TERM=xterm cat /var/log/mysql.log'
- 'docker exec --tty "$(cat ${container_id})" env TERM=xterm cat /var/log/mysql/error.log'
- 'docker exec --tty "$(cat ${container_id})" env TERM=xterm cat /var/log/mysql.err'
- 'docker exec --tty "$(cat ${container_id})" env TERM=xterm cat /var/log/mysql.log'

notifications:
webhooks: https://galaxy.ansible.com/api/v1/notifications/
13 changes: 10 additions & 3 deletions provisioning/roles/geerlingguy.mysql/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,11 @@ Whether to force update the MySQL root user's password. By default, this role wi

Whether MySQL should be enabled on startup.

mysql_config_file: *default value depends on OS*
mysql_config_include_dir: *default value depends on OS*

The main my.cnf configuration file and include directory.

overwrite_global_mycnf: yes

Whether the global my.cnf should be overwritten each time this role is run. Setting this to `no` tells Ansible to only create the `my.cnf` file if it doesn't exist. This should be left at its default value (`yes`) if you'd like to use this role's variables to configure MySQL.
Expand Down Expand Up @@ -64,17 +69,19 @@ The MySQL users and their privileges. A user has the values `name`, `host` (defa
mysql_port: "3306"
mysql_bind_address: '0.0.0.0'
mysql_datadir: /var/lib/mysql
mysql_socket: *default value depends on OS*
mysql_pid_file: *default value depends on OS*

Default MySQL connection configuration.

mysql_log: ""
mysql_log_error: /var/log/mysqld.log
mysql_syslog_tag: mysqld
mysql_log_error: *default value depends on OS*
mysql_syslog_tag: *default value depends on OS*

MySQL logging configuration. Setting `mysql_log` (the general query log) or `mysql_log_error` to `syslog` will make MySQL log to syslog using the `mysql_syslog_tag`.

mysql_slow_query_log_enabled: no
mysql_slow_query_log_file: /var/log/mysql-slow.log
mysql_slow_query_log_file: *default value depends on OS*
mysql_slow_query_time: 2

Slow query log settings. Note that the log file will be created by this role, but if you're running on a server with SELinux or AppArmor, you may need to add this path to the allowed paths for MySQL, or disable the mysql profile. For example, on Debian/Ubuntu, you can run `sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/usr.sbin.mysqld && sudo service apparmor restart`.
Expand Down
18 changes: 13 additions & 5 deletions provisioning/roles/geerlingguy.mysql/defaults/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,10 @@ mysql_enabled_on_startup: yes
# update my.cnf. each time role is run? yes | no
overwrite_global_mycnf: yes

# The following variables have a default value depending on operating system.
# mysql_config_file: /etc/my.cnf
# mysql_config_include_dir: /etc/my.cnf.d

# Pass in a comma-separated list of repos to use (e.g. "remi,epel"). Used only
# for RedHat systems (and derivatives).
mysql_enablerepo: ""
Expand All @@ -25,14 +29,17 @@ mysql_enablerepo: ""
# MySQL connection settings.
mysql_port: "3306"
mysql_bind_address: '0.0.0.0'
mysql_datadir: /var/lib/mysql
mysql_pid_file: /var/run/mysqld/mysqld.pid
mysql_skip_name_resolve: no
mysql_datadir: /var/lib/mysql
# The following variables have a default value depending on operating system.
# mysql_pid_file: /var/run/mysqld/mysqld.pid
# mysql_socket: /var/lib/mysql/mysql.sock

# Slow query log settings.
mysql_slow_query_log_enabled: no
mysql_slow_query_log_file: /var/log/mysql-slow.log
mysql_slow_query_time: "2"
# The following variable has a default value depending on operating system.
# mysql_slow_query_log_file: /var/log/mysql-slow.log

# Memory settings (default values optimized ~512MB RAM).
mysql_key_buffer_size: "256M"
Expand Down Expand Up @@ -72,8 +79,9 @@ mysql_mysqldump_max_allowed_packet: "64M"

# Logging settings.
mysql_log: ""
mysql_log_error: /var/log/mysql.err
mysql_syslog_tag: mysql
# The following variables have a default value depending on operating system.
# mysql_log_error: /var/log/mysql.err
# mysql_syslog_tag: mysql

mysql_config_include_files: []
# - src: path/relative/to/playbook/file.cnf
Expand Down
28 changes: 1 addition & 27 deletions provisioning/roles/geerlingguy.mysql/tasks/main.yml
Original file line number Diff line number Diff line change
@@ -1,32 +1,6 @@
---
# Variable configuration.
- name: Include OS-specific variables.
include_vars: "{{ ansible_os_family }}.yml"
when: ansible_os_family != "RedHat"

- name: Include OS-specific variables (RedHat).
include_vars: "{{ ansible_os_family }}-{{ ansible_distribution_major_version }}.yml"
when: ansible_os_family == "RedHat"

- name: Define mysql_packages.
set_fact:
mysql_packages: "{{ __mysql_packages | list }}"
when: mysql_packages is not defined

- name: Define mysql_daemon.
set_fact:
mysql_daemon: "{{ __mysql_daemon }}"
when: mysql_daemon is not defined

- name: Define mysql_slow_query_log_file.
set_fact:
mysql_slow_query_log_file: "{{ __mysql_slow_query_log_file }}"
when: mysql_slow_query_log_file is not defined

- name: Define mysql_supports_innodb_large_prefix.
set_fact:
mysql_supports_innodb_large_prefix: "{{ __mysql_supports_innodb_large_prefix }}"
when: mysql_supports_innodb_large_prefix is not defined
- include: variables.yml

# Setup/install tasks.
- include: setup-RedHat.yml
Expand Down
59 changes: 59 additions & 0 deletions provisioning/roles/geerlingguy.mysql/tasks/variables.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
---
# Variable configuration.
- name: Include OS-specific variables.
include_vars: "{{ ansible_os_family }}.yml"
when: ansible_os_family != "RedHat"

- name: Include OS-specific variables (RedHat).
include_vars: "{{ ansible_os_family }}-{{ ansible_distribution_major_version }}.yml"
when: ansible_os_family == "RedHat"

- name: Define mysql_packages.
set_fact:
mysql_packages: "{{ __mysql_packages | list }}"
when: mysql_packages is not defined

- name: Define mysql_daemon.
set_fact:
mysql_daemon: "{{ __mysql_daemon }}"
when: mysql_daemon is not defined

- name: Define mysql_slow_query_log_file.
set_fact:
mysql_slow_query_log_file: "{{ __mysql_slow_query_log_file }}"
when: mysql_slow_query_log_file is not defined

- name: Define mysql_log_error.
set_fact:
mysql_log_error: "{{ __mysql_log_error }}"
when: mysql_log_error is not defined

- name: Define mysql_syslog_tag.
set_fact:
mysql_syslog_tag: "{{ __mysql_syslog_tag }}"
when: mysql_syslog_tag is not defined

- name: Define mysql_pid_file.
set_fact:
mysql_pid_file: "{{ __mysql_pid_file }}"
when: mysql_pid_file is not defined

- name: Define mysql_config_file.
set_fact:
mysql_config_file: "{{ __mysql_config_file }}"
when: mysql_config_file is not defined

- name: Define mysql_config_include_dir.
set_fact:
mysql_config_include_dir: "{{ __mysql_config_include_dir }}"
when: mysql_config_include_dir is not defined

- name: Define mysql_socket.
set_fact:
mysql_socket: "{{ __mysql_socket }}"
when: mysql_socket is not defined

- name: Define mysql_supports_innodb_large_prefix.
set_fact:
mysql_supports_innodb_large_prefix: "{{ __mysql_supports_innodb_large_prefix }}"
when: mysql_supports_innodb_large_prefix is not defined
9 changes: 6 additions & 3 deletions provisioning/roles/geerlingguy.mysql/vars/Debian.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,10 @@ __mysql_packages:
- mysql-common
- mysql-server
__mysql_slow_query_log_file: /var/log/mysql/mysql-slow.log
mysql_config_file: /etc/mysql/my.cnf
mysql_config_include_dir: /etc/mysql/conf.d
mysql_socket: /var/run/mysqld/mysqld.sock
__mysql_log_error: /var/log/mysql.err
__mysql_syslog_tag: mysql
__mysql_pid_file: /var/run/mysqld/mysqld.pid
__mysql_config_file: /etc/mysql/my.cnf
__mysql_config_include_dir: /etc/mysql/conf.d
__mysql_socket: /var/run/mysqld/mysqld.sock
__mysql_supports_innodb_large_prefix: true
9 changes: 6 additions & 3 deletions provisioning/roles/geerlingguy.mysql/vars/RedHat-6.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,10 @@ __mysql_packages:
- mysql
- mysql-server
__mysql_slow_query_log_file: /var/log/mysql-slow.log
mysql_config_file: /etc/my.cnf
mysql_config_include_dir: /etc/my.cnf.d
mysql_socket: /var/lib/mysql/mysql.sock
__mysql_log_error: /var/log/mysql.err
__mysql_syslog_tag: mysql
__mysql_pid_file: /var/run/mysqld/mysqld.pid
__mysql_config_file: /etc/my.cnf
__mysql_config_include_dir: /etc/my.cnf.d
__mysql_socket: /var/lib/mysql/mysql.sock
__mysql_supports_innodb_large_prefix: false
12 changes: 6 additions & 6 deletions provisioning/roles/geerlingguy.mysql/vars/RedHat-7.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@ __mysql_packages:
- MySQL-python
- perl-DBD-MySQL
__mysql_slow_query_log_file: /var/log/mysql-slow.log
mysql_log_error: /var/log/mariadb/mariadb.log
mysql_syslog_tag: mariadb
mysql_pid_file: /var/run/mariadb/mariadb.pid
mysql_config_file: /etc/my.cnf
mysql_config_include_dir: /etc/my.cnf.d
mysql_socket: /var/lib/mysql/mysql.sock
__mysql_log_error: /var/log/mariadb/mariadb.log
__mysql_syslog_tag: mariadb
__mysql_pid_file: /var/run/mariadb/mariadb.pid
__mysql_config_file: /etc/my.cnf
__mysql_config_include_dir: /etc/my.cnf.d
__mysql_socket: /var/lib/mysql/mysql.sock
__mysql_supports_innodb_large_prefix: true

0 comments on commit 6ba1758

Please sign in to comment.