Skip to content

Instantly share code, notes, and snippets.

@gravcat
Last active June 16, 2018 06:55
Show Gist options
  • Save gravcat/45dc6c66096fcdf1ef391026bfecd25f to your computer and use it in GitHub Desktop.
Save gravcat/45dc6c66096fcdf1ef391026bfecd25f to your computer and use it in GitHub Desktop.
-- forked to save the docker_volume return data register example usage -- Integración entre Ansible y Docker http://picodotdev.github.io/blog-bitix/2014/11/integracion-entre-ansible-y-docker/
---
- hosts: devbox
- name: start docker service
service: name=docker state=started
sudo: true
- name: build docker images
docker_image: name="{{ item.name }}" tag="{{ item.tag }}" state="present" path={{ item.path }}
with_items:
- { name: "picodotdev/base", tag: "1.0", path: "../docker/base" }
- { name: "picodotdev/mysql", tag: "1.0", path: "../docker/mysql" }
- { name: "picodotdev/redis", tag: "1.0", path: "../docker/redis" }
- { name: "picodotdev/apps", tag: "1.0", path: "../docker/apps" }
- hosts: devbox
tasks:
- name: start docker service
service: name=docker state=started
sudo: true
- name: start mysql data docker container
docker: image=busybox:latest name=picodotdev-mysql-data state=present volumes="/var/lib/mysql"
register: mysql_data_container
- name: start redis data docker container
docker: image=busybox:latest name=picodotdev-redis-data state=present volumes="/var/lib/redis"
register: redis_data_container
- name: start mysql docker container
docker: image=picodotdev/mysql:1.0 name=picodotdev-mysql state=running volumes_from=picodotdev-mysql-data hostname=mysql ports=3306:3306 command=/sbin/my_init
register: mysql_container
- name: start redis docker container
docker: image=picodotdev/redis:1.0 name=picodotdev-redis state=running volumes_from=picodotdev-redis-data volumes="{{ keys_path }}:/mnt/keys" hostname=redis ports=6379:6379 command=/sbin/my_init
register: redis_container
- name: start apps docker container
docker: image=picodotdev/apps:1.0 name=picodotdev-apps state=running volumes="{{ projects_path }}:/mnt/projects,{{ grails_path }}:/root/.grails,{{ gradle_path }}:/root/.gradle,{{ keys_path }}:/mnt/keys" hostname=apps ports=8080:8080,8443:8443 links=picodotdev-mysql:mysql,picodotdev-redis:redis command=/sbin/my_init
register: apps_container
- name: update hosts with containers ip address
replace: dest=/etc/hosts regexp="^(\d+\.\d+\.\d+\.\d+)(\s+{{ item.host }})$" replace="{{ item.ip }}\2"
sudo: true
with_items:
- { host: "mysql", ip: "{{ mysql_container['ansible_facts']['docker_containers'][0]['NetworkSettings']['IPAddress'] }}" }
- { host: "redis", ip: "{{ redis_container['ansible_facts']['docker_containers'][0]['NetworkSettings']['IPAddress'] }}" }
- { host: "apps", ip: "{{ apps_container['ansible_facts']['docker_containers'][0]['NetworkSettings']['IPAddress'] }}" }
- name: display containers info
debug: msg="info"
with_items:
- { name: "{{ mysql_container['ansible_facts']['docker_containers'][0]['Name'] }}", ip: "{{ mysql_container['ansible_facts']['docker_containers'][0]['NetworkSettings']['IPAddress'] }}", id: "{{ mysql_container['ansible_facts']['docker_containers'][0]['Id'] }}" }
- { name: "{{ redis_container['ansible_facts']['docker_containers'][0]['Name'] }}", ip: "{{ redis_container['ansible_facts']['docker_containers'][0]['NetworkSettings']['IPAddress'] }}", id: "{{ redis_container['ansible_facts']['docker_containers'][0]['Id'] }}" }
- { name: "{{ apps_container['ansible_facts']['docker_containers'][0]['Name'] }}", ip: "{{ apps_container['ansible_facts']['docker_containers'][0]['NetworkSettings']['IPAddress'] }}", id: "{{ apps_container['ansible_facts']['docker_containers'][0]['Id'] }}" }
@gravcat
Copy link
Author

gravcat commented Jun 16, 2018

{{ registered_variable_name['ansible_facts']['docker_volume'].Mountpoint }}

Will get you the mountpoint directory, for example.

Return data from volume creation:

ok: [machine] => {"ansible_facts": {"docker_volume": {"CreatedAt": "2018-06-15T20:37:37Z", "Driver": "local", "Labels": null, "Mountpoint": "/var/lib/docker/volumes/my_volume_name/_data", "Name": "my_volume_name", "Options": {}, "Scope": "local"}}, "changed": false}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment