chrismeyersfsu.provision_docker
provision_docker
Un rôle Ansible pour vous aider à tester vos rôles. Créez automatiquement des conteneurs Docker pour chacun de vos hôtes d'inventaire. Utilisez votre fichier d'inventaire de production pour créer des conteneurs Docker pour le développement et les tests.

Ressources | Description |
---|---|
Article de blog | Exemple d'utilisation de provision_docker |
.travis.yml | Exemple de TravisCI |
Dockerfiles | Images Docker sélectionnées avec système d'init (pour que le module service fonctionne) et démon SSH.chrismeyers/centos6 chrismeyers/centos7 chrismeyers/ubuntu12.04 ubuntu-upstart:14.04 |
test/playbook_*.yml role-install_mongod role-ansible_deps role-iptables |
Exemples de projets et d'utilisations de provision-docker . |
NOUVEAU docker_connection
Fonctionne avec Docker pour Mac, VirtualBox, VMware Fusion, et Docker natif. L'utilisation de docker_connection ne nécessite aucune règle de routage.
# inventaire
[robots]
optimus image="chrismeyers/ubuntu12.04"
bumblebee image="ubuntu-upstart:14.04"
# test.yml
- name: Lancer des conteneurs Docker pour l'interface d'inventaire de connexion Docker
hosts: localhost
roles:
- role: provision_docker
provision_docker_privileged: true,
provision_docker_inventory_group: "{{ groups['robots'] }}"
provision_docker_use_docker_connection: true
- hosts: robots
tasks:
- name: "Dites bonjour à mes nouveaux conteneurs"
ping:
| paramètre | requis | par défaut | choix | commentaires |
|---------------------------------------- |---------- |--------------------- |-------------------------------------------------------------------------------------------- |------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| provision_docker_image | non | chrismeyers/centos6 | chrismeyers/centos6 chrismeyers/centos7 chrismeyers/ubuntu12.04 ubuntu-upstart:14.04 autre | Image Docker à utiliser lors du démarrage du conteneur. Les conteneurs listés à gauche sont spéciaux. Le système d'init est réintégré et SSH est démarré. Cela permet de démarrer/ arrêter le service via le module service
ainsi qu'SSH. |
| provision_docker_privileged | non | true | true/false | Démarrer le conteneur Docker en mode privilégié. |
| provision_docker_inventory_group | non | | | Liste des noms d'hôtes qui sont dans l'inventaire pour lesquels il faut lancer un conteneur Docker. Notez que l'image Docker que vous souhaitez lancer doit être une variable d'hôte associée au nom d'hôte. |
| provision_docker_inventory | non | | | Liste des paires <nom, image> pour lesquelles un conteneur Docker doit être lancé. |
| provision_docker_use_docker_connection | non | false | true/false | Utiliser le plugin docker_connection pour se connecter aux conteneurs Docker au lieu de SSH par défaut. |
| provision_docker_network | non | | Un nom provenant des réseaux disponibles comme indiqué avec $ docker network ls
| Spécifiez le réseau auquel le conteneur Docker doit se connecter. |
| provision_docker_volumes | non | | Liste des volumes à monter dans le conteneur. | Utilisez la syntaxe de style CLI Docker : /host:/container[:mode]. |
| provision_docker_volumes_from | non | | Liste de noms de conteneurs ou pour obtenir des volumes. | |
Mac OS X + docker-machine + VMware Fusion
sudo /sbin/route -n add -net 172.17.0.0 -netmask 255.255.0.0 -gateway $(docker-machine ip default)
Mac OS X + docker-machine + VirtualBox
provision_docker
nécessite de pouvoir se connecter par SSH aux conteneurs. Ainsi, l'adresse IP du conteneur doit être accessible (une route doit exister). Si vous utilisez Docker Toolbox sur OS X + VirtualBox, les conteneurs ne sont pas routés vers l'hôte. Exécutez les commandes ci-dessous pour ajouter une route vers les conteneurs dans la machine virtuelle invitée.
/usr/sbin/scutil -w State:/Network/Interface/vboxnet0/IPv4 -t 0
sudo /sbin/route -n add -net 172.17.0.0 -netmask 255.255.0.0 -gateway $(docker-machine ip)
La route ne persiste pas après les redémarrages. Pour faire persister les changements, éditez /Library/LaunchDaemons/com.docker.route.plist
.
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE plist PUBLIC '-//Apple//DTD PLIST 1.0//EN' 'http://www.apple.com/DTDs/PropertyList-1.0.dtd'>
<plist version='1.0'>
<dict>
<key>Label</key>
<string>com.docker.route</string>
<key>ProgramArguments</key>
<array>
<string>bash</string>
<string>-c</string>
<!-- Vous devez adapter le vboxnet0 à l'interface qui convient à votre configuration, utilisez ifconfig pour le trouver -->
<string>/usr/sbin/scutil -w State:/Network/Interface/vboxnet0/IPv4 -t 0;sudo /sbin/route -n add -net 172.17.0.0 -netmask 255.255.0.0 -gateway 192.168.99.100</string>
</array>
<key>KeepAlive</key>
<false/>
<key>RunAtLoad</key>
<true/>
<key>LaunchOnlyOnce</key>
<true/>
</dict>
</plist>
Exposer et publier des ports
Définissez les listes expose
et ports
dans votre inventaire par conteneur. Consultez le module Ansible docker_container pour référence.
Travaux similaires
- https://github.com/metacloud/molecule
- https://github.com/AerisCloud/ansible-role-test
- http://www.jeffgeerling.com/blog/testing-ansible-roles-travis-ci-github
- https://github.com/geerlingguy/ansible-role-apache
- https://github.com/neillturner/kitchen-ansible
Projets utilisant provision_docker
- https://github.com/mbreisch/ssh-role
- https://github.com/mbreisch/ufw-role
- https://github.com/mbreisch/ssmtp-role
- https://github.com/mbreisch/deploy-user-role
- https://github.com/mbreisch/s3cmd-role
- https://github.com/mbreisch/unattended-upgrades-role/tree/master/tests
- https://github.com/Maarc/ansible-role-redhat-jboss-common
- https://github.com/sderen/ansible-grafana
- https://github.com/sderen/ansible-nginxgunicorn
- https://github.com/Maarc/ansible-role-redhat-jboss-web-server-httpd
- https://github.com/Maarc/ansible-role-redhat-jboss-web-server-tomcat
- https://github.com/Maarc/ansible-role-redhat-jboss-eap
- https://github.com/rhtconsulting/jboss_fuse
- https://github.com/rhtconsulting/jboss_bxms
- https://github.com/mlanin/ansible-laravel5/tree/master/roles/carlosbuenosvinos.ansistrano-deploy
- https://github.com/Maarc/ansible-role-redhat-jboss-common
- https://github.com/turkenh/ansible-role-parse-mongodb
- https://github.com/tomashavlas/ansible-role-users_profiles
- https://github.com/tomashavlas/ansible-role-system_users
- https://github.com/tomashavlas/ansible-role-authorized_keys
- https://github.com/tomashavlas/ansible-role-sudo
- https://github.com/tomashavlas/ansible-role-system_groups
- https://github.com/rhevm-qe-automation/ovirt-ansible
- https://github.com/rhevm-qe-automation/ansible-role-seal
Provision docker containers using inventory.
ansible-galaxy install chrismeyersfsu.provision_docker