Test playbook execution with travis
parent
17f3731450
commit
293ee332dd
35
.travis.yml
35
.travis.yml
|
@ -1,29 +1,20 @@
|
||||||
---
|
matrix:
|
||||||
|
include:
|
||||||
|
- env: OS=debian-jessie ORIGIN=default VENDOR=mysql
|
||||||
|
- env: OS=debian-jessie ORIGIN=default VENDOR=mariadb
|
||||||
|
- env: OS=debian-jessie ORIGIN=uptream VENDOR=mariadb
|
||||||
|
- env: OS=debian-jessie ORIGIN=uptream VENDOR=mariadb_galera
|
||||||
|
- env: OS=debian-jessie ORIGIN=uptream VENDOR=percona
|
||||||
|
|
||||||
|
sudo: required
|
||||||
|
|
||||||
language: python
|
language: python
|
||||||
python: "2.7"
|
|
||||||
|
|
||||||
# Use the new container infrastructure
|
services:
|
||||||
sudo: false
|
- docker
|
||||||
|
|
||||||
# Install ansible
|
|
||||||
addons:
|
|
||||||
apt:
|
|
||||||
packages:
|
|
||||||
- python-pip
|
|
||||||
|
|
||||||
install:
|
|
||||||
# Install ansible
|
|
||||||
- pip install ansible
|
|
||||||
|
|
||||||
# Check ansible version
|
|
||||||
- ansible --version
|
|
||||||
|
|
||||||
# Create ansible.cfg with correct roles_path
|
|
||||||
- printf '[defaults]\nroles_path=../' >ansible.cfg
|
|
||||||
|
|
||||||
script:
|
script:
|
||||||
# Basic role syntax check
|
- docker build -f tests/$OS.Dockerfile -t test-$OS . && docker run -e "ORIGIN=$ORIGIN" -e "VENDOR=$VENDOR" --name $OS test-$OS
|
||||||
- ansible-playbook tests/test.yml -i localhost, --syntax-check
|
|
||||||
|
|
||||||
notifications:
|
notifications:
|
||||||
webhooks: https://galaxy.ansible.com/api/v1/notifications/
|
webhooks: https://galaxy.ansible.com/api/v1/notifications/
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
---
|
---
|
||||||
|
|
||||||
- name: FAIL | If config asked is impossible
|
- name: FAIL | If config asked is impossible
|
||||||
fail: msg="config asked is impossible"
|
fail: msg="config asked is impossible ({{ mysql_origin }} / {{ mysql_vendor }})"
|
||||||
when: >
|
when: >
|
||||||
not (
|
not (
|
||||||
(mysql_origin == 'default' and mysql_vendor == 'mysql') or
|
(mysql_origin == 'default' and mysql_vendor == 'mysql') or
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
FROM williamyeh/ansible:debian8-onbuild
|
FROM williamyeh/ansible:debian8-onbuild
|
||||||
|
|
||||||
RUN apt-get update
|
RUN apt-get update
|
||||||
CMD ["sh", "tests/test.sh"]
|
CMD ["sh", "tests/travis.sh"]
|
||||||
|
|
|
@ -3,8 +3,8 @@
|
||||||
# Thanks to https://servercheck.in/blog/testing-ansible-roles-travis-ci-github
|
# Thanks to https://servercheck.in/blog/testing-ansible-roles-travis-ci-github
|
||||||
|
|
||||||
DIR=$( dirname $0 )
|
DIR=$( dirname $0 )
|
||||||
INVENTORY_FILE="$DIR/inventory"
|
INVENTORY_FILE="localhost,"
|
||||||
PLAYBOOK="$DIR/test.yml"
|
PLAYBOOK="$DIR/travis.yml"
|
||||||
|
|
||||||
set -ev
|
set -ev
|
||||||
|
|
||||||
|
@ -12,10 +12,10 @@ set -ev
|
||||||
ansible-playbook -i $INVENTORY_FILE -c local --syntax-check -vv $PLAYBOOK
|
ansible-playbook -i $INVENTORY_FILE -c local --syntax-check -vv $PLAYBOOK
|
||||||
|
|
||||||
# Check role
|
# Check role
|
||||||
ansible-playbook -i $INVENTORY_FILE -c local --sudo -vv $PLAYBOOK
|
ansible-playbook -i $INVENTORY_FILE -c local -e "{ mysql_vendor: $VENDOR, mysql_origin: $ORIGIN }" --sudo -vv $PLAYBOOK
|
||||||
|
|
||||||
# Check indempotence
|
# Check indempotence
|
||||||
ansible-playbook -i $INVENTORY_FILE -c local --sudo -vv $PLAYBOOK \
|
ansible-playbook -i $INVENTORY_FILE -c local -e "{ mysql_vendor: $VENDOR, mysql_origin: $ORIGIN }" --sudo -vv $PLAYBOOK \
|
||||||
| grep -q 'changed=0.*failed=0' \
|
| grep -q 'changed=0.*failed=0' \
|
||||||
&& (echo 'Idempotence test: pass' && exit 0) \
|
&& (echo 'Idempotence test: pass' && exit 0) \
|
||||||
|| (echo 'Idempotence test: fail' && exit 1)
|
|| (echo 'Idempotence test: fail' && exit 1)
|
|
@ -0,0 +1,13 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
- hosts: all
|
||||||
|
vars:
|
||||||
|
mysql_replication_master: true
|
||||||
|
mysql_bind_address: '{{ ansible_eth0.ipv4.address }}'
|
||||||
|
mariadb_galera_members:
|
||||||
|
- '{{ ansible_eth0.ipv4.address }}'
|
||||||
|
roles:
|
||||||
|
- ../../
|
||||||
|
post_tasks:
|
||||||
|
- name: TEST | SHELL | Test mysql
|
||||||
|
shell: mysql -e "SHOW DATABASES;"
|
Loading…
Reference in New Issue