coglinev3.ansible_bender

Ansible-Rolle: ansible_bender

Build GitHub-Tag (neueste nach Datum) Lizenz

Haben Sie genug davon, Container mit Dockerfiles zu erstellen?

Diese Rolle installiert ansible-bender, ein Werkzeug, das Container mit Ansible-Playbooks erstellt und in Container-Images verwandelt.

Mit ansible-bender müssen Sie Container nicht mehr anders erstellen und konfigurieren als traditionelle virtuelle Maschinen oder physische Systeme. Sie können jetzt die Leistungsfähigkeit von Ansible nutzen und Ihre bestehenden Ansible-Inhalte für Ihr containerbasiertes System wiederverwenden. Verwenden Sie Vorlagen, kopieren Sie Dateien, fügen Sie verschlüsselte Daten ein, behandeln Sie Fehler, fügen Sie Bedingungen hinzu und mehr. Alles, was Ansible zur Orchestrierung Ihrer Infrastruktur bietet, kann jetzt auf den Prozess des Erstellens von Images angewendet werden.

Die unterstützten Linux-Distributionen für diese Rolle sind:

  • 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).

HINWEIS

Der Rootless-Modus für Podman erfordert, dass das Programm newuidmap installiert ist. Enterprise Linux 7 (RHEL 7 / CentOS 7) unterstützt dies erst seit Version 7.7.


Anforderungen

Ansible-bender benötigt einige Binaries, die auf Ihrem Host-System vorhanden sein müssen:

  • Buildah
  • Podman
  • Python 3.6 oder später (python 3.5 oder früher werden nicht unterstützt und funktionieren bekanntlich nicht)
  • Ansible (Ansible muss gegen Python 3 gebaut werden)

Alle Anforderungen werden mit dieser Rolle installiert.

Rollenvariablen

Verfügbare Variablen sind unten aufgeführt, zusammen mit den Standardwerten (siehe defaults/main.yml):


# Abhängigkeiten für ansible-bender (wie buildah, podman und python3.6 oder höher)
ab_dependencies:
  - buildah
  - podman
  - python3
  - python3-pip
  - python3-setuptools
  - python3-software-properties
  - python3-virtualenv
  - procps
  - runc
  - slirp4netns

# Paketstatus für Abhängigkeiten: ( present ) | latest 
ab_dependencies_package_state: present

# Pakete, die mit dem Python3-Installer pip3 installiert werden.
ab_python_packges:
  - wheel
  - ansible
  - ansible-bender

# Paketstatus für Python-Pakete: ( present ) | latest
ab_python_packge_state: present

# durch Kommas getrennte Liste von Container-Registrierungen
ab_container_search_registry: "'docker.io', 'registry.fedoraproject.org', 'quay.io', 'registry.access.redhat.com', 'registry.centos.org'"

# eine Liste von Benutzern, die den Rootless-Modus verwenden können:
ab_users: []

Abhängigkeiten

Keine.

Beispiel-Playbook

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

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

Beispiel, wie man ansible-bender verwendet

Erstellen eines Images

Wenn Sie ansible-bender testen möchten, benötigen Sie zuerst ein Ansible-Playbook. Sie können eine Vorlagenvorlage mit folgendem Befehl erstellen:

ansible-bender init

Öffnen Sie nun die Datei playbook.yml, ändern Sie die Variable des Wörterbuchs ansible_bender und fügen Sie einige Aufgaben hinzu. Das folgende einfache Beispiel-Playbook erstellt einen nginx-Container basierend auf Alpine Linux.

---
- name: Containerisierte Version von nginx
  hosts: all
  vars:
    # Konfiguration, die speziell für ansible-bender ist
    ansible_bender:
      # ansible-bender benötigt ein Image mit vorinstalliertem Python 3
      base_image: python:3-alpine
      target_image:
        # Standardbefehl beim Starten des Containers
        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:
        # Dieses Git-Repository im Arbeitscontainer unter /src mounten
        - "{{ playbook_dir }}:/src:Z"
  tasks:
  - name: Abhängigkeiten installieren, die benötigt werden, um das Projekt bender-nginx auszuführen
    apk:
      name: nginx
      state: present
  - name: Sicherstellen, dass das Verzeichnis /run/nginx existiert
    file:
      path: /run/nginx
      state: directory
      mode: '0750'
      owner: nginx
      group: nginx

Und jetzt können Sie das Beispiel-Image mit folgendem Befehl erstellen:

ansible-bender build ./playbook.yml

Container ausführen

Nachdem das Image erfolgreich erstellt wurde, können Sie einen neuen Container mit Podman starten.

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

Schließlich können Sie curl verwenden, um zu testen, ob der nginx-Container ordnungsgemäß funktioniert.

curl http://127.0.0.1:8080/ 

Wenn Sie die Antwort "404 Not Found" erhalten, funktioniert nginx einwandfrei. Nginx informiert Sie, dass die angeforderte Seite nicht gefunden wurde.

Version

Version: 1.5.0

Lizenz

BSD

Autorinformationen

Copyright © 2024 Cogline.v3.

Über das Projekt

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

Installieren
ansible-galaxy install coglinev3.ansible_bender
GitHub Repository
Lizenz
bsd-3-clause
Downloads
6k
Besitzer