tinyblargon.docker_deploy

Rola Ansible: wdrożenie docker

Rola Ansible do wdrożenia stosu docker compose (pliku).

Wymagania

System lokalny

  • rsync

System wdrożeniowy

  • docker-ce
  • docker-ce-cli
  • containerd.io
  • docker-compose-plugin lub docker-compose

Zmienne roli

Nazwa zmiennej Typ Wartość domyślna Opis
docker_deploy_source: string "docker-deploy" Lokalny katalog zawierający wdrożenie docker i plik compose. Katalog ten jest relatywny do głównego katalogu playbooków.
docker_deploy_destination: string "/opt/docker-deploy" Katalog docelowy, do którego ma być sklonowane wdrożenie.
docker_deploy_compose_file: string "docker-compose.yml" Nazwa pliku docker compose, który ma być uruchomiony.
docker_deploy_files: lista map [] Lista plików, które powinny być skopiowane do docker_deploy_destination:, więcej informacji o mapie można znaleźć w rozdziale Docker_deploy_files.
docker_deploy_compatibility: bool true Włączenie flagi --compatibility podczas uruchamiania pliku compose.
docker_deploy_remove_orphans: bool true Włączenie flagi --remove-orphans podczas uruchamiania pliku compose.
docker_deploy_build: bool false Włączenie flagi --build gdy jakiekolwiek pliki w docker_deploy_source: lub docker_deploy_files: zostały zmienione.
docker_deploy_recreate: bool false Włączenie flagi --force-recreate gdy jakiekolwiek pliki w docker_deploy_source: lub docker_deploy_files: zostały zmienione.
docker_deploy_compose_plugin: bool true Określenie, czy użyć polecenia docker compose czy docker-compose, true dla docker compose, false dla docker-compose.
docker_deploy_prune: lista ["image"] Jakie polecenia "prune" mają być wykonane po dokonaniu zmiany w wdrożeniu compose. Wartość może być kombinacją dowolnych z następujących opcji: "builder", "container", "image", "network", "system", "volume".
docker_deploy_state: string "present" Gdy "present" źródło docker_deploy_source: zostanie zsynchronizowane z docker_deploy_destination: i plik docker_deploy_compose_file: zostanie uruchomiony. Gdy "absent" plik docker_deploy_compose_file: w docker_deploy_destination: zostanie zatrzymany.
docker_deploy_rsync_opts: lista ['--exclude="*.example"'] Określenie dodatkowych opcji rsync, przekazując tablicę. Wszystkie dest określone w docker_deploy_files: będą automatycznie wykluczane z rsync.
docker_deploy_show_warnings: bool true Wyświetlanie ostrzeżeń docker compose.
docker_deploy_absent_volume: bool false Dotyczy tylko gdy docker_deploy_state: to "absent". Włącza flagę --volumes podczas zatrzymywania pliku compose, co usunie wszystkie woluminy określone w pliku compose.
docker_deploy_absent_remove: bool false Dotyczy tylko gdy docker_deploy_state: to "absent". Gdy true, katalog docker_deploy_destination: zostanie usunięty.

Docker_deploy_files

Nazwa zmiennej Typ Wartość domyślna Opis
content: string "" Gdy używane zamiast src, ustawia zawartość pliku bezpośrednio na określoną wartość. Działa tylko, gdy dest jest plikiem. Tworzy plik, jeśli nie istnieje.
dest: string Ścieżka zdalna, relatywna do docker_deploy_destination:, do której plik ma być skopiowany. Jeśli src jest katalogiem, to musi być również katalogiem. Jeśli dest to nieistniejąca ścieżka, a dest kończy się na “/” lub src to katalog, dest zostanie utworzony. Jeśli dest to ścieżka relatywna, początkowy katalog zostanie określony przez zdalny host. Jeśli src i dest to pliki, nadrzędny katalog dest nie zostaje utworzony i zadanie kończy się niepowodzeniem, jeśli nie istnieje. Wszystkie dest będą automatycznie wykluczane z rsync.
group: string "root" Nazwa grupy, która powinna być właścicielem obiektu systemu plików, jak w przypadku chown.
mode: string Uprawnienia pliku lub katalogu docelowego. Dokumentacja Ansible dla dalszych informacji
owner: string "root" Nazwa użytkownika, który powinien być właścicielem obiektu systemu plików, jak w przypadku chown. Podanie numerycznej nazwy użytkownika zostanie uznane za identyfikator użytkownika, a nie za nazwę użytkownika. Unikaj numerycznych nazw użytkowników, aby uniknąć tego zamieszania.
src: string Lokalna ścieżka do pliku do skopiowania na zdalny serwer. Może być to ścieżka absolutna lub relatywna. Jeśli ścieżka jest katalogiem, jest kopiowana rekurencyjnie. W tym przypadku, jeśli ścieżka kończy się na “/”, tylko zawartość tego katalogu jest kopiowana do miejsca docelowego. W przeciwnym razie, jeśli nie kończy się na “/”, kopiowany jest sam katalog wraz ze wszystkimi jego zawartościami. To zachowanie jest podobne do narzędzia rsync w wierszu poleceń.
no_log: bool false Jeśli true, zawartość nie może być logowana.

Gdy zarówno content: jak i src: są nieokreślone, w miejscu docelowym tworzony jest pusty plik.

Przykładowe playbooki

Obecny

- 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"

Nieobecny

- 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

Licencja

MIT

O projekcie

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

Zainstaluj
ansible-galaxy install tinyblargon.docker_deploy
Licencja
mit
Pobrania
1.1k
Właściciel
If the DevOps tooling doesn't exist, I'll write it myself.