mirror of
https://github.com/HanXHX/ansible-mysql.git
synced 2026-04-09 13:42:10 +07:00
Few improvements(#33)
* README update * Remove useless legacy files * Small refactoring for Galera Cluster * Modern Ansible * Some changes on travis + Vagrant * Help debug: display all facts * Fix galera config for docker
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
mariadb_vendor: 'mariadb_galera'
|
||||
mariadb_use_galera: true
|
||||
mariadb_galera_members:
|
||||
- '{% if is_docker %}docker-{% else %}vbox-{% endif %}{{ ansible_distribution_release }}-upstream-mariadbgalera-1'
|
||||
- '{% if is_docker %}docker-{% else %}vbox-{% endif %}{{ ansible_distribution_release }}-upstream-mariadbgalera-2'
|
||||
- '{% if is_docker %}docker-{% else %}vbox-{% endif %}{{ ansible_distribution_release }}-upstream-mariadbgalera-3'
|
||||
- '{% if is_docker %}docker-{% else %}vbox-{% endif %}{{ ansible_distribution_release }}-upstream-galera-1'
|
||||
- '{% if is_docker %}docker-{% else %}vbox-{% endif %}{{ ansible_distribution_release }}-upstream-galera-2'
|
||||
- '{% if is_docker %}docker-{% else %}vbox-{% endif %}{{ ansible_distribution_release }}-upstream-galera-3'
|
||||
@@ -1 +0,0 @@
|
||||
mariadb_vendor: 'mysql'
|
||||
@@ -1,21 +1,37 @@
|
||||
---
|
||||
|
||||
- hosts: all
|
||||
gather_facts: false
|
||||
pre_tasks:
|
||||
- name: SETUP | Get facts
|
||||
setup:
|
||||
register: s
|
||||
- name: DEBUG | Show facts
|
||||
debug:
|
||||
var: s
|
||||
tasks:
|
||||
- apt: pkg={{ item }} state=present update_cache=yes cache_valid_time=3600
|
||||
loop:
|
||||
- ca-certificates
|
||||
- curl
|
||||
- strace
|
||||
- vim
|
||||
- name: APT | Install some packages
|
||||
apt:
|
||||
name: "{{ p }}"
|
||||
update_cache: yes
|
||||
cache_valid_time: 3600
|
||||
vars:
|
||||
p: ['ca-certificates', 'curl', 'strace', 'vim']
|
||||
|
||||
- hosts: master
|
||||
roles:
|
||||
- ../../
|
||||
tasks:
|
||||
- copy: src=import1.sql dest=/tmp/import1.sql
|
||||
- name: COPY | Deploy first dump
|
||||
copy:
|
||||
src: import1.sql
|
||||
dest: /tmp/import1.sql
|
||||
register: c
|
||||
- mysql_db: name={{ item }} state=import target=/tmp/import1.sql
|
||||
- name: MYSQL_DB | Import first dump
|
||||
mysql_db:
|
||||
name: "{{ item }}"
|
||||
state: import
|
||||
target: /tmp/import1.sql
|
||||
loop: ['testrepl', 'norepl']
|
||||
when: c.changed
|
||||
|
||||
@@ -25,7 +41,8 @@
|
||||
shell: getent hosts {{ ansible_hostname | replace ('slave', 'master') }} | cut -d ' ' -f 1
|
||||
register: ip
|
||||
changed_when: false
|
||||
- set_fact:
|
||||
- name: SET_FACT | Apply some configuration
|
||||
set_fact:
|
||||
# MariaDB don't read /etc/hosts (from vagrant host plugin)
|
||||
mariadb_replication_host: "{{ ip.stdout }}"
|
||||
# Need this to use vagrant 'delegate_to'
|
||||
@@ -33,27 +50,35 @@
|
||||
roles:
|
||||
- ../../
|
||||
tasks:
|
||||
- copy: src=import2.sql dest=/tmp/import2.sql
|
||||
- name: COPY | Deploy dump
|
||||
copy:
|
||||
src: import2.sql
|
||||
dest: /tmp/import2.sql
|
||||
delegate_to: "{{ mariadb_slave_import_from }}"
|
||||
register: c
|
||||
- mysql_db: name={{ item }} state=import target=/tmp/import2.sql
|
||||
- name: MYSQL_DB | Import another dump
|
||||
mysql_db:
|
||||
name: "{{ item }}"
|
||||
state: import
|
||||
target: /tmp/import2.sql
|
||||
loop: ['testrepl', 'norepl']
|
||||
delegate_to: "{{ mariadb_slave_import_from }}"
|
||||
when: c.changed
|
||||
- mysql_replication: mode=getslave
|
||||
- name: MYSQL_REPLICATION | Get slave infos
|
||||
mysql_replication:
|
||||
mode: getslave
|
||||
register: slave
|
||||
- fail: msg="Slave issue"
|
||||
- name: FAIL | if slave threads are not running
|
||||
fail:
|
||||
msg: "Slave issue"
|
||||
when: slave.Slave_IO_Running != 'Yes' or slave.Slave_SQL_Running != 'Yes'
|
||||
|
||||
- hosts: mariadbgalera
|
||||
vars:
|
||||
mariadb_galera_primary_node: '{% if is_docker %}docker-{% else %}vbox-{% endif %}{{ ansible_distribution_release }}-upstream-mariadbgalera-1'
|
||||
mariadb_wsrep_node_address: "{{ ansible_all_ipv4_addresses[0] }}"
|
||||
mariadb_version: '10.1'
|
||||
- hosts: galera
|
||||
pre_tasks:
|
||||
- set_fact:
|
||||
mariadb_wsrep_node_address: "{{ ansible_eth1.ipv4.address }}"
|
||||
when: not is_docker
|
||||
- name: SET_FACT | Apply some configuration
|
||||
set_fact:
|
||||
mariadb_galera_primary_node: '{% if is_docker %}docker-{% else %}vbox-{% endif %}{{ ansible_distribution_release }}-upstream-galera-1'
|
||||
mariadb_wsrep_node_address: "{{ '127.0.0.1' if is_docker else ansible_eth1.ipv4.address }}"
|
||||
mariadb_version: '10.1'
|
||||
roles:
|
||||
- ../../
|
||||
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Thanks to https://servercheck.in/blog/testing-ansible-roles-travis-ci-github
|
||||
|
||||
DIR=$( dirname $0 )
|
||||
INVENTORY_FILE="localhost,"
|
||||
PLAYBOOK="$DIR/travis.yml"
|
||||
|
||||
set -ev
|
||||
|
||||
# Check syntax
|
||||
ansible-playbook -i $INVENTORY_FILE -c local --syntax-check -vv $PLAYBOOK
|
||||
|
||||
# Check role
|
||||
ansible-playbook -i $INVENTORY_FILE -c local -e "{ mariadb_vendor: $VENDOR, mariadb_origin: $ORIGIN }" --sudo -vv $PLAYBOOK
|
||||
|
||||
# Check indempotence
|
||||
ansible-playbook -i $INVENTORY_FILE -c local -e "{ mariadb_vendor: $VENDOR, mariadb_origin: $ORIGIN }" --sudo -vv $PLAYBOOK > idempot.txt
|
||||
grep -q 'changed=0.*failed=0' idempot.txt \
|
||||
&& (echo 'Idempotence test: pass' && exit 0) \
|
||||
|| (echo 'Idempotence test: FAIL' && cat idempot.txt && exit 1)
|
||||
@@ -1,15 +0,0 @@
|
||||
---
|
||||
|
||||
- hosts: all
|
||||
vars:
|
||||
mariadb_replication_master: true
|
||||
mariadb_bind_address: '{{ ansible_eth0.ipv4.address }}'
|
||||
mariadb_galera_members:
|
||||
- '{{ ansible_eth0.ipv4.address }}'
|
||||
mariadb_galera_primary_node: 'localhost'
|
||||
roles:
|
||||
- ../../
|
||||
post_tasks:
|
||||
- name: TEST | SHELL | Test mysql
|
||||
shell: mysql -e "SHOW DATABASES;"
|
||||
changed_when: false
|
||||
Reference in New Issue
Block a user