chrismeyersfsu.provision_docker
provision_docker
Un rol de Ansible para ayudarte a probar tus roles. Crea automáticamente contenedores de docker para cada uno de tus hosts de inventario. Usa tu archivo de inventario de producción para crear contenedores de docker para desarrollo y pruebas.

Recurso | Descripción |
---|---|
Publicación de blog | Ejemplo de uso de provision_docker |
.travis.yml | Ejemplo de TravisCI |
Dockerfiles | Imágenes de Docker seleccionadas con sistema de inicialización (para que funcione el módulo service ) y demonio ssh.chrismeyers/centos6 chrismeyers/centos7 chrismeyers/ubuntu12.04 ubuntu-upstart:14.04 |
test/playbook_*.yml role-install_mongod role-ansible_deps role-iptables |
Ejemplos de proyectos y usos de provision-docker . |
NUEVO docker_connection
Funciona con Docker para Mac, VirtualBox, VMware Fusion, Docker nativo. Usar docker_connection no requiere ninguna regla de enrutamiento.
# inventario
[robots]
optimus image="chrismeyers/ubuntu12.04"
bumblebee image="ubuntu-upstart:14.04"
# test.yml
- name: Levantar contenedores docker para interfaz de inventario de conexión 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: "Saludar a mis nuevos contenedores"
ping:
parámetro | requerido | predeterminado | opciones | comentarios |
---|---|---|---|---|
provision_docker_image | no | chrismeyers/centos6 | chrismeyers/centos6 chrismeyers/centos7 chrismeyers/ubuntu12.04 ubuntu-upstart:14.04 otros | Imagen de Docker a usar al iniciar el contenedor. Las imágenes de la izquierda son especiales. Se reintegra el sistema de inicialización y se inicia ssh. Esto permite iniciar/detener servicios a través del módulo service , así como ssh. |
provision_docker_privileged | no | true | true/false | Iniciar el contenedor de Docker en modo privilegiado. |
provision_docker_inventory_group | no | Lista de nombres de host en el inventario para los que se debe levantar un contenedor de Docker. Ten en cuenta que la imagen de Docker que deseas levantar debe ser una variable asociada al nombre del host. | ||
provision_docker_inventory | no | Lista de pares <nombre, imagen> para los que se debe levantar un contenedor de Docker. | ||
provision_docker_use_docker_connection | no | false | true/false | Usar el complemento docker_connection para conectarse a los contenedores Docker en lugar del ssh predeterminado. |
provision_docker_network | no | Algún nombre de redes disponibles como se lista con $ docker network ls |
Especificar la red a la que debe conectarse el contenedor de Docker. | |
provision_docker_volumes | no | Lista de volúmenes para montar dentro del contenedor. | Usar sintaxis estilo CLI de Docker: /host:/container[:modo]. | |
provision_docker_volumes_from | no | Lista de nombres de contenedores de los que obtener volúmenes. |
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
depende de poder hacer ssh a los contenedores. Por lo tanto, la ip del contenedor debe ser accesible (debe existir un enrutamiento). Si usas Docker Toolbox en OS X + VirtualBox, los contenedores no están enrutados al host. Ejecuta los siguientes comandos para agregar una ruta a los contenedores en la máquina invitada.
/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 ruta no persiste después de reinicios. Para persistir los cambios, edita /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>
<!-- Debes adaptar vboxnet0 a la interfaz que se ajuste a tu configuración, usa ifconfig para encontrarla -->
<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>
Exponer y publicar puertos
Establece las listas expose
y ports
en tu inventario por contenedor. Consulta el módulo Ansible docker_container para referencia.
Trabajo Similar
- 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
Proyectos que usan 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