Ansible avec Docker et conteneurs 25 min de lecture

Module docker_container et gestion d'images

Prerequis : collection community.docker

La collection community.docker fournit les modules necessaires pour gerer Docker via Ansible.

ansible-galaxy collection install community.docker

Module docker_container

Le module docker_container permet de creer, demarrer, arreter et supprimer des conteneurs Docker.

- name: Lancer un conteneur Nginx
  community.docker.docker_container:
    name: web_server
    image: nginx:latest
    state: started
    ports:
      - "8080:80"
    volumes:
      - /data/html:/usr/share/nginx/html:ro
    restart_policy: unless-stopped
    env:
      NGINX_HOST: "example.com"

Module docker_image

Construire et gerer des images Docker directement depuis Ansible :

- name: Construire une image depuis un Dockerfile
  community.docker.docker_image:
    name: mon-app
    tag: "{{ version }}"
    source: build
    build:
      path: /opt/mon-app
      dockerfile: Dockerfile
    push: false

- name: Tirer une image depuis un registre
  community.docker.docker_image:
    name: redis
    tag: "7-alpine"
    source: pull

Gestion des reseaux Docker

- name: Creer un reseau Docker
  community.docker.docker_network:
    name: app_network
    driver: bridge
    ipam_config:
      - subnet: 172.20.0.0/16
        gateway: 172.20.0.1

- name: Conteneur dans un reseau
  community.docker.docker_container:
    name: app
    image: mon-app:latest
    networks:
      - name: app_network
        ipv4_address: 172.20.0.10

Gestion des volumes

- name: Creer un volume Docker
  community.docker.docker_volume:
    name: db_data
    driver: local

- name: Conteneur avec volume nomme
  community.docker.docker_container:
    name: postgres
    image: postgres:15
    volumes:
      - db_data:/var/lib/postgresql/data
Best practice : Utilisez des variables Ansible pour les tags d'images afin de faciliter les mises a jour et les rollbacks.