tinyblargon.docker_deploy

Ansible Rolle: Docker bereitstellen

Ansible-Rolle zum Bereitstellen eines Docker-Compose-Stacks (Datei).

Anforderungen

Lokales System

  • rsync

Bereitgestelltes System

  • docker-ce

  • docker-ce-cli

  • containerd.io

  • docker-compose-plugin oder docker-compose

Rollenvariablen

Variablenname Typ Standardwert Beschreibung
docker_deploy_source: string "docker-deploy" Das lokale Verzeichnis, das die Docker-Bereitstellungs- und Compose-Datei enthält. Dieses Verzeichnis ist relativ zum Hauptverzeichnis der Playbooks.
docker_deploy_destination: string "/opt/docker-deploy" Der Zielordner, in den die Bereitstellung geklont werden soll.
docker_deploy_compose_file: string "docker-compose.yml" Der Name der Docker-Compose-Datei, die gestartet werden soll.
docker_deploy_files: list map [] Eine Liste von Dateien, die in das docker_deploy_destination: kopiert werden sollen. Weitere Informationen zur Zuordnung finden Sie im nächsten Kapitel Docker_deploy_files.
docker_deploy_compatibility: bool true Aktiviert das --compatibility-Flag beim Starten der Compose-Datei.
docker_deploy_remove_orphans: bool true Aktiviert das --remove-orphans-Flag beim Starten der Compose-Datei.
docker_deploy_build: bool false Aktiviert das --build-Flag, wenn sich eine der Dateien in docker_deploy_source: oder docker_deploy_files: geändert hat.
docker_deploy_recreate: bool false Aktiviert das --force-recreate-Flag, wenn sich eine der Dateien in docker_deploy_source: oder docker_deploy_files: geändert hat.
docker_deploy_compose_plugin: bool true Geben Sie an, ob der Befehl docker compose oder docker-compose verwendet werden soll; true für docker compose, false für docker-compose.
docker_deploy_prune: list ["image"] Welche Prune-Befehle nach einer Änderung an der Compose-Bereitstellung ausgeführt werden sollen. Der Wert kann eine Kombination der folgenden Optionen sein: "builder", "container", "image", "network", "system", "volume".
docker_deploy_state: string "present" Wenn "present", wird docker_deploy_source: mit docker_deploy_destination: synchronisiert und die docker_deploy_compose_file: wird gestartet. Wenn "absent", wird die docker_deploy_compose_file: im docker_deploy_destination: heruntergefahren.
docker_deploy_rsync_opts: list ['--exclude="*.example"'] Zusätzliche Rsync-Optionen können durch Übergabe eines Arrays angegeben werden. Alle dest, die in docker_deploy_files: angegeben sind, werden automatisch von Rsync ausgeschlossen.
docker_deploy_show_warnings: bool true Zeigt die Docker-Compose-Warnungen an.
docker_deploy_absent_volume: bool false Gilt nur, wenn docker_deploy_state: "absent" ist. Aktiviert das --volumes-Flag beim Herunterfahren der Compose-Datei, wodurch alle Volumes gelöscht werden, die in der Compose-Datei angegeben sind.
docker_deploy_absent_remove: bool false Gilt nur, wenn docker_deploy_state: "absent" ist. Wenn true, wird docker_deploy_destination: gelöscht.

Docker_deploy_files

Variablenname Typ Standardwert Beschreibung
content: string "" Wenn anstelle von src verwendet, werden die Inhalte einer Datei direkt auf den angegebenen Wert gesetzt. Funktioniert nur, wenn dest eine Datei ist. Erstellt die Datei, wenn sie nicht existiert.
dest: string Remote-Pfad relativ zu docker_deploy_destination:, wohin die Datei kopiert werden soll. Wenn src ein Verzeichnis ist, muss dies ebenfalls ein Verzeichnis sein. Wenn dest ein nicht vorhandener Pfad ist und dest mit “/” endet oder src ein Verzeichnis ist, wird dest erstellt. Wenn dest ein relativer Pfad ist, wird das Startverzeichnis vom Remote-Host bestimmt. Wenn src und dest Dateien sind, wird das übergeordnete Verzeichnis von dest nicht erstellt und die Aufgabe schlägt fehl, wenn es nicht bereits existiert. Alle dest werden automatisch von Rsync ausgeschlossen.
group: string "root" Name der Gruppe, die das Dateisystem-Objekt besitzen soll, wie es an chown übergeben würde.
mode: string Die Berechtigungen der Ziel-Datei oder -Verzeichnisses. Ansible-Dokumentation für weitere Details
owner: string "root" Name des Benutzers, der das Dateisystem-Objekt besitzen soll, wie es an chown übergeben würde. Die Angabe eines numerischen Benutzernamens wird als Benutzer-ID interpretiert und nicht als Benutzername. Vermeiden Sie numerische Benutzernamen, um Verwirrung zu vermeiden.
src: string Lokaler Pfad zu einer Datei, die auf den Remote-Server kopiert werden soll. Dies kann absolut oder relativ sein. Wenn der Pfad ein Verzeichnis ist, wird er rekursiv kopiert. In diesem Fall, wenn der Pfad mit “/” endet, werden nur die Inhalte dieses Verzeichnisses in das Ziel kopiert. Andernfalls, wenn es nicht mit “/” endet, wird das Verzeichnis selbst mit allen Inhalten kopiert. Dieses Verhalten ähnelt dem des Rsync-Befehlszeilenwerkzeugs.
no_log: bool false Wenn true, kann der Inhalt nicht protokolliert werden.

Wenn sowohl content: als auch src: nicht angegeben sind, wird eine leere Datei am Ziel erstellt.

Beispiel-Playbooks

Vorhanden

- hosts: all
  roles:
    - role: tinyblargon.docker_deploy
      vars:
        docker_deploy_source: "docker-deploy"
        docker_deploy_destination: "/opt/docker-deploy"
        docker_deploy_compose_file: "docker-compose.yml"
        docker_deploy_files:
          - dest: ".env"
            src: ".env"
          - dest: ".secrets/password.txt"
            content: "{{ lookup('file', 'password.txt') }}"
            owner: "root"
            group: "root"
            mode: "0600"
            no_log: true
        docker_deploy_compatibility: true
        docker_deploy_remove_orphans: true
        docker_deploy_recreate: true
        docker_deploy_compose_plugin: false
        docker_deploy_prune: ["system"]
        docker_deploy_state: "present"

Abwesend

- hosts: all
  roles:
    - role: tinyblargon.docker_deploy
      vars:
        docker_deploy_destination: "/opt/docker-deploy"
        docker_deploy_compose_file: "docker-compose.yml"
        docker_deploy_compose_plugin: false
        docker_deploy_prune: ["system", "volume"]
        docker_deploy_state: "absent"
        docker_deploy_absent_volume: true
        docker_deploy_absent_remove: true

Lizenz

MIT

Über das Projekt

Ansible role to deploy a docker compose stack (file).

Installieren
ansible-galaxy install tinyblargon.docker_deploy
GitHub Repository
Lizenz
mit
Downloads
1.1k
Besitzer
If the DevOps tooling doesn't exist, I'll write it myself.