Introducció

En aquest tema, explorarem com Ansible pot ser utilitzat per gestionar i automatitzar la configuració de contenidors Docker. Aprendrem a crear, gestionar i desplegar contenidors Docker utilitzant Playbooks d'Ansible. Aquest coneixement és essencial per a qualsevol professional de DevOps que vulgui integrar Ansible en el seu flux de treball de contenidors.

Objectius

  • Entendre com Ansible pot interactuar amb Docker.
  • Aprendre a utilitzar els mòduls d'Ansible per gestionar Docker.
  • Crear Playbooks per desplegar i gestionar contenidors Docker.

Requisits Prèvis

  • Coneixements bàsics d'Ansible.
  • Coneixements bàsics de Docker.
  • Un entorn amb Docker i Ansible instal·lats.

Mòduls d'Ansible per Docker

Ansible proporciona diversos mòduls per gestionar Docker. A continuació, es mostren alguns dels mòduls més utilitzats:

Mòdul Descripció
docker_container Gestiona el cicle de vida dels contenidors Docker.
docker_image Gestiona les imatges Docker.
docker_network Gestiona les xarxes Docker.
docker_volume Gestiona els volums Docker.

Exemple Pràctic: Desplegant un Contenidor Docker

Pas 1: Crear un Fitxer d'Inventari

Primer, crearem un fitxer d'inventari per definir els hosts on desplegarem els contenidors Docker.

[servers]
docker_host ansible_host=192.168.1.100 ansible_user=root

Pas 2: Escrivint el Playbook

A continuació, escriurem un Playbook per desplegar un contenidor Docker que executi una aplicació Nginx.

---
- name: Desplegar un contenidor Docker amb Nginx
  hosts: docker_host
  tasks:
    - name: Assegurar-se que Docker està instal·lat
      apt:
        name: docker.io
        state: present
      become: yes

    - name: Assegurar-se que Docker està en execució
      service:
        name: docker
        state: started
        enabled: yes
      become: yes

    - name: Descarregar la imatge de Nginx
      docker_image:
        name: nginx
        source: pull

    - name: Desplegar el contenidor de Nginx
      docker_container:
        name: nginx
        image: nginx
        state: started
        ports:
          - "80:80"

Pas 3: Executar el Playbook

Per executar el Playbook, utilitzarem la comanda ansible-playbook.

ansible-playbook -i inventory.ini deploy_nginx.yml

Exercici Pràctic

Objectiu

Desplegar un contenidor Docker que executi una aplicació personalitzada.

Instruccions

  1. Crea un fitxer d'inventari per definir els hosts.
  2. Escriu un Playbook per:
    • Instal·lar Docker.
    • Descarregar una imatge Docker personalitzada (per exemple, una imatge de Python).
    • Desplegar un contenidor que executi un script de Python.
  3. Executa el Playbook i verifica que el contenidor s'ha desplegat correctament.

Solució

---
- name: Desplegar un contenidor Docker amb una aplicació personalitzada
  hosts: docker_host
  tasks:
    - name: Assegurar-se que Docker està instal·lat
      apt:
        name: docker.io
        state: present
      become: yes

    - name: Assegurar-se que Docker està en execució
      service:
        name: docker
        state: started
        enabled: yes
      become: yes

    - name: Descarregar la imatge de Python
      docker_image:
        name: python
        source: pull

    - name: Desplegar el contenidor de Python
      docker_container:
        name: python_app
        image: python
        state: started
        command: "python -m http.server"
        ports:
          - "8000:8000"

Errors Comuns i Consells

  • Error: "Permission denied": Assegura't d'executar les tasques que requereixen permisos d'administrador amb become: yes.
  • Error: "Docker service not found": Verifica que Docker està instal·lat i en execució al host de destinació.
  • Consell: Utilitza el mòdul docker_image per assegurar-te que la imatge necessària està disponible abans de desplegar el contenidor.

Conclusió

En aquest tema, hem après com utilitzar Ansible per gestionar contenidors Docker. Hem vist com instal·lar Docker, descarregar imatges i desplegar contenidors utilitzant Playbooks d'Ansible. Aquestes habilitats són fonamentals per a la gestió automatitzada de contenidors en entorns de producció.

En el següent tema, explorarem com Ansible pot ser utilitzat per gestionar Kubernetes, una altra eina essencial en l'ecosistema de DevOps.

© Copyright 2024. Tots els drets reservats