coglinev3.ansible_bender

Ansible Role: ansible_bender

Build GitHub tag (latest by date) License

Êtes-vous fatigué de construire des conteneurs avec des Dockerfiles ?

Ce rôle installe ansible-bender, un outil qui utilise des playbooks Ansible pour créer des conteneurs et les transformer en images de conteneurs.

Avec ansible-bender, vous n'avez plus à construire et configurer des conteneurs différemment que pour des machines virtuelles traditionnelles ou des systèmes bare-metal. Vous pouvez maintenant appliquer la puissance d'Ansible et réutiliser votre contenu Ansible existant pour votre écosystème de conteneurs. Utilisez des modèles, copiez des fichiers, insérez des données cryptées, gérez les erreurs, ajoutez des conditions, et plus encore. Tout ce qu'Ansible apporte à l'orchestration de votre infrastructure peut maintenant être appliqué au processus de construction d'image.

Les distributions Linux prises en charge pour ce rôle sont :

  • Alpine Linux 3.14,
  • Alpine Linux 3.15,
  • Alpine Linux 3.16,
  • Alpine Linux 3.17,
  • Alpine Linux 3.18,
  • Alpine Linux 3.19,
  • Enterprise Linux 8,
  • Enterprise Linux 9,
  • Debian 11 (Bullseye),
  • Debian 12 (Bookworm),
  • Linux Mint 20 (Ulyana),
  • Ubuntu 20.04 LTS (Focal Fossa),
  • Ubuntu 22.04 LTS (Jammy Jellyfish).

NOTE

Le mode sans root pour Podman nécessite que le programme newuidmap soit installé. Enterprise Linux 7 (RHEL 7 / CentOS 7) ne le prend en charge que depuis la version 7.7.


Exigences

Ansible-bender nécessite quelques binaires sur votre système hôte :

  • Buildah
  • Podman
  • Python 3.6 ou version ultérieure (python 3.5 ou antérieure ne sont pas supportés et ne fonctionnent pas)
  • Ansible (Ansible doit être construit contre python 3)

Toutes les exigences sont installées avec ce rôle.

Variables de rôle

Les variables disponibles sont listées ci-dessous, avec des valeurs par défaut (voir defaults/main.yml) :


# dépendances pour ansible-bender (comme buildah, podman et python3.6 ou supérieur)
ab_dependencies:
  - buildah
  - podman
  - python3
  - python3-pip
  - python3-setuptools
  - python3-software-properties
  - python3-virtualenv
  - procps
  - runc
  - slirp4netns

# état des paquets pour les dépendances : ( présent ) | dernier 
ab_dependencies_package_state: présent

# Paquets installés avec l'installateur Python3 pip3.
ab_python_packges:
  - wheel
  - ansible
  - ansible-bender

# état des paquets python : ( présent ) | dernier
ab_python_packge_state: présent

# liste séparée par des virgules des registres de conteneurs
ab_container_search_registry: "'docker.io', 'registry.fedoraproject.org', 'quay.io', 'registry.access.redhat.com', 'registry.centos.org'"

# une liste d'utilisateurs pouvant utiliser le mode sans root :
ab_users: []

Dépendances

Aucune.

Exemple de Playbook

---
# fichier : roles/ansible-bender/tests/test.yml

- hosts: all
  vars:
    ab_users:
      - votre_nom_utilisateur
  roles:
    - { role: coglinev3.ansible_bender }

Exemple d'utilisation d'ansible-bender

Créer une image

Si vous souhaitez tester ansible-bender, vous devez d'abord un playbook Ansible. Vous pouvez créer un modèle de playbook avec :

ansible-bender init

Maintenant, ouvrez le fichier playbook.yml, modifiez la variable de répertoire ansible_bender et ajoutez quelques tâches. L'exemple de playbook simple suivant crée un conteneur nginx basé sur Alpine Linux.

---
- name: Version conteneurisée de nginx
  hosts: all
  vars:
    # configuration spécifique pour ansible-bender
    ansible_bender:
      # ansible-bender a besoin d'une image avec Python 3 préinstallé pour fonctionner
      base_image: python:3-alpine
      target_image:
        # commande à exécuter par défaut lors de l'invocation du conteneur
        cmd: "nginx -g \"daemon off;\""
        name: bender-nginx
        ports: ['80', '443']
        working_dir: /var/www/localhost/htdocs
        labels:
          build-by: "{{ ansible_user }}"
      working_container:
        volumes:
        # monter ce dépôt git dans le conteneur en cours à /src
        - "{{ playbook_dir }}:/src:Z"
  tasks:
  - name: installer les dépendances nécessaires pour exécuter le projet bender-nginx
    apk:
      name: nginx
      state: present
  - name: Assurer que le répertoire /run/nginx existe
    file:
      path: /run/nginx
      state: directory
      mode: '0750'
      owner: nginx
      group: nginx

Et maintenant, vous pouvez créer l'image d'exemple avec :

ansible-bender build ./playbook.yml

Lancer le conteneur

Après la création réussie de l'image, vous pouvez démarrer un nouveau conteneur avec podman.

podman run -d -p 8080:80 bender-nginx

Finalement, vous pouvez utiliser curl pour tester si le conteneur nginx fonctionne correctement.

curl http://127.0.0.1:8080/ 

Si vous obtenez une réponse avec "404 Not Found", nginx fonctionne correctement. Nginx vous informe que la page demandée n'a pas été trouvée.

Version

Version : 1.5.0

Licence

BSD

Informations sur l'auteur

Copyright © 2024 Cogline.v3.

À propos du projet

Installs ansible-bender, a tool which bends containers using Ansible playbooks and turns them into container images.

Installer
ansible-galaxy install coglinev3.ansible_bender
Licence
bsd-3-clause
Téléchargements
6k
Propriétaire