sorrowless.docker

Ansible Rolle: Docker

CI

Eine Ansible Rolle, die Docker auf Linux installiert.

Anforderungen

Keine.

Rollenvariablen

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

# Die Edition kann entweder 'ce' (Community Edition) oder 'ee' (Enterprise Edition) sein.
# Du kannst die Version von Docker durch die Variable docker_version definieren, zum Beispiel: '=5:23.0.2-1~ubuntu.20.04~focal'
docker_edition: 'ce'
docker_version: ''
docker_packages:
  - "docker-{{ docker_edition }}{{ docker_version }}"
  - "docker-{{ docker_edition }}-cli{{ docker_version}}"
  - "docker-{{ docker_edition }}-rootless-extras{{ docker_version}}"
  - "containerd.io"
docker_packages_state: present

Die docker_edition sollte entweder ce (Community Edition) oder ee (Enterprise Edition) sein. Du kannst auch eine spezifische Version von Docker installieren, indem du die Variable "docker_version" verwendest: docker_version: '=5:23.0.2-1ubuntu.20.04focal'

Du kannst steuern, ob das Paket installiert, deinstalliert oder auf die neueste Version aktualisiert werden soll, indem du docker_packages_state auf present, absent oder latest setzt. Beachte, dass der Docker-Daemon automatisch neu gestartet wird, wenn das Docker-Paket aktualisiert wird. Dies ist eine Nebenwirkung des Ausführens aller Handler, die durch diese und andere Rollen bis zu diesem Punkt im Playbook benachrichtigt wurden.

docker_service_manage: true
docker_service_state: started
docker_service_enabled: true
docker_restart_handler_state: restarted

Variablen zur Steuerung des Zustands des docker-Dienstes und ob er beim Starten des Systems aktiviert werden soll. Wenn du Docker in einem Docker-Container ohne systemd oder sysvinit installierst, solltest du docker_service_manage auf false setzen.

docker_install_compose_plugin: false
docker_compose_package: docker-compose-plugin
docker_compose_package_state: present

Installationsoptionen für das Docker Compose Plugin. Diese unterscheiden sich von den folgenden, da docker-compose als Docker-Plugin installiert wird (und mit docker compose verwendet wird) anstatt als standalone Binärdatei.

docker_install_compose: true
docker_compose_version: "1.26.0"
docker_compose_arch: "{{ ansible_architecture }}"
docker_compose_path: /usr/local/bin/docker-compose

Installationsoptionen für Docker Compose.

docker_add_repo: true

Steuert, ob diese Rolle das offizielle Docker-Repository hinzufügen wird. Setze es auf false, wenn du die Standard-Docker-Pakete für dein System verwenden oder das Paketrepository selbst verwalten möchtest.

docker_repo_url: https://download.docker.com/linux

Die Haupt-URL des Docker-Repos, die zwischen Debian- und RHEL-Systemen üblich ist.

docker_apt_release_channel: stable
docker_apt_arch: "{{ 'arm64' if ansible_architecture == 'aarch64' else 'amd64' }}"
docker_apt_repository: "deb [arch={{ docker_apt_arch }}] {{ docker_repo_url }}/{{ ansible_distribution | lower }} {{ ansible_distribution_release }} {{ docker_apt_release_channel }}"
docker_apt_ignore_key_error: true
docker_apt_gpg_key: "{{ docker_repo_url }}/{{ ansible_distribution | lower }}/gpg"
docker_apt_filename: "docker"

(Wird nur für Debian/Ubuntu verwendet.) Du kannst den Kanal auf nightly wechseln, wenn du die Nightly-Version verwenden möchtest.

Du kannst docker_apt_gpg_key auf eine andere URL ändern, wenn du hinter einer Firewall bist oder einen vertrauenswürdigen Mirror bereitstellst. Normalerweise in Kombination mit einer Änderung von docker_apt_repository. docker_apt_filename steuert den Namen der Quelllisten-Datei, die in sources.list.d erstellt wird. Wenn du von einer älteren (<7.0.0) Version dieser Rolle aktualisierst, solltest du dies in den Namen der bestehenden Datei ändern (z.B. download_docker_com_linux_debian auf Debian), um Konflikte zu vermeiden.

docker_yum_repo_url: "{{ docker_repo_url }}/{{ (ansible_distribution == 'Fedora') | ternary('fedora','centos') }}/docker-{{ docker_edition }}.repo"
docker_yum_repo_enable_nightly: '0'
docker_yum_repo_enable_test: '0'
docker_yum_gpg_key: "{{ docker_repo_url }}/centos/gpg"

(Wird nur für RedHat/CentOS verwendet.) Du kannst das Nightly- oder Test-Repo aktivieren, indem du die entsprechenden Variablen auf 1 setzt.

Du kannst docker_yum_gpg_key auf eine andere URL ändern, wenn du hinter einer Firewall bist oder einen vertrauenswürdigen Mirror bereitstellst. Normalerweise in Kombination mit einer Änderung des docker_yum_repository.

docker_users:
  - user1
  - user2

Eine Liste von Systembenutzern, die zur docker-Gruppe hinzugefügt werden sollen (damit sie Docker auf dem Server verwenden können).

docker_daemon_options:
  storage-driver: "devicemapper"
  log-opts:
    max-size: "100m"

Benutzerdefinierte dockerd-Optionen können durch dieses Dictionary, das die json-Datei /etc/docker/daemon.json darstellt, konfiguriert werden.

Für das Anmelden bei einem Registry musst du die folgenden Variablen definieren:

  • docker_registry_url
  • docker_registry_user
  • docker_registry_password

Verwendung mit Ansible (und der docker Python-Bibliothek)

Viele Benutzer dieser Rolle möchten auch Ansible verwenden, um dann Docker-Images zu bauen und Docker-Container auf dem Server zu verwalten, auf dem Docker installiert ist. In diesem Fall kannst du die docker Python-Bibliothek einfach mit der Rolle geerlingguy.pip hinzufügen:

- hosts: all

  vars:
    pip_install_packages:
      - name: docker

  roles:
    - geerlingguy.pip
    - geerlingguy.docker

Um Swarm zu konfigurieren, solltest du die Variable docker_swarm_configure: true für alle Knoten und docker_swarm_manager: true für Manager hinzufügen. inventory_hostname muss gleich dem Hostnamen (ansible_hostname) sein, damit entfernte Knoten korrekt erkannt werden.

Abhängigkeiten

Keine.

Beispiel-Playbook

- hosts: all
  roles:
    - geerlingguy.docker

Lizenz

MIT / BSD

Sponsoren

  • We Manage: Hilft Start-ups und wachsenden Unternehmen, ihre Infrastruktur nachhaltig zu skalieren.

Die oben genannten Sponsoren unterstützen Jeff Geerling auf GitHub Sponsoren. Du kannst auch Jeffs Arbeit unterstützen, um ihm zu helfen, diese Ansible-Open-Source-Projekte weiter zu verbessern!

Autor Informationen

Diese Rolle wurde 2017 von Jeff Geerling erstellt, dem Autor von Ansible for DevOps. Für eigene Bedürfnisse angepasst von Stan Bogatkin.

Installieren
ansible-galaxy install sorrowless.docker
GitHub Repository
Lizenz
mit
Downloads
4.6k
Besitzer
Barocco-style deployment engineer