arnaudblancher.docker_provisionning
arnaudblancher.docker_provisionning
Objectif : prendre un inventaire Ansible et créer un conteneur Docker pour chaque hôte listé.
Après cela, vous pouvez déployer votre playbook Ansible préféré sur cet inventaire Docker et réaliser facilement et en toute sécurité des tests complets dans un nouvel environnement propre, sans avoir à créer de nouvelles machines virtuelles.
Après vos tests, il suffira de détruire ces conteneurs avec le rôle Ansible arnaudblancher.docker_unprovisionning.
Exigences
- docker-engine
Assurez-vous que le moteur Docker est en cours d'exécution, testez avec (probablement en tant que root...)
docker info
Si nécessaire, installez docker-engine
Ici, docker-engine 1.11 sur Debian Jessie
apt-get remove docker.io python-docker
apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
echo 'deb https://apt.dockerproject.org/repo debian-jessie main' > /etc/apt/sources.list.d/docker.list
apt-get update
apt-get install docker-engine python-docker
Sur Ubuntu Trusty,
remplacez python-docker
par :
sudo apt-get install python-pip
sudo pip install docker-py
Variables de rôle
Veuillez consulter defaults/main.yml
Dépendances
Aucune
Exemple de Playbook
Veuillez voir le sous-répertoire ./demo/
cat demo/docker-provisionning.yml
- name: "Créer toutes les images et conteneurs Docker pour tous les hôtes listés dans l'inventaire"
hosts: localhost
gather_facts: no
roles:
- { role : arnaudblancher.docker_provisionning,
docker_provisionning_net: "ansible_myplateform" }
cat inventory/docker/000_hosts
[mysql]
# utilisez l'image docker_provisionning_image par défaut configurée dans defaults/main.yml
dock_mysql
[apache]
# spécifiez une image docker_provisionning_image spécifique pour ce conteneur
dock_apache docker_provisionning_image="ubuntu1604"
[jmeter]
# Optionnel docker_provisionning_dockerfile pour préciser un chemin de dockerfile alternatif en dehors du rôle ;
# le chemin doit être relatif à roles/arnaudblancher.docker_provisionning/dockerfiles/
dock_jmeter docker_provisionning_image="jmeter2.13private" docker_provisionning_dockerfile="../../../local_files/dockerfiles/jmeter2.13private"
[all:vars]
ansible_connection=docker
cat group_vars/all
# remplacez l'os par défaut/main.yml pour docker_provisionning
docker_provisionning_image: "ubuntu1404"
cat inventory/docker/group_vars/all
# ajoutez des alias d'hôte pour les conteneurs
docker_provisionning_aliases:
dock_mysql:
- "bdd01"
- "bdd02"
dock_apache:
- www01
- www02
- www03
appel :
ansible-playbook -i inventory/docker/ docker-provisionning.yml
Licence
GPLv3
Informations sur l'auteur
Arnaud Blancher
https://github.com/arnaudblancher/ansible-role-docker_provisionning
Take an ansible inventory and create one docker container for each listed hosts. After you can deploy your favorite ansible playbook on theses docker-inventory and make easily and safely full tests in a new and clean environnement.
ansible-galaxy install arnaudblancher.docker_provisionning