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:
Emilien M
2019-04-16 13:55:38 +02:00
committed by GitHub
parent 1ec3b388a0
commit 1ebc0e9391
20 changed files with 122 additions and 127 deletions

View File

@@ -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'

View File

@@ -1 +0,0 @@
mariadb_vendor: 'mysql'

View File

@@ -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:
- ../../

View File

@@ -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)

View File

@@ -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