bodsch.docker

Rola Ansible: docker

Ta rola w pełni konfiguruje i instaluje dockerd.


Przeniosłem tę rolę do własnej kolekcji.
W przyszłości nie będę akceptować ani przetwarzać żadnych dalszych pull requestów ani zgłoszeń problemów tutaj.

Od teraz korzystaj z powiązanej kolekcji!


Status Workflow na GitHubie Problemy na GitHubie Wydanie na GitHubie (najnowsze według daty) Wynik jakości Ansible

Wymagania i zależności

Kolekcje Ansible

ansible-galaxy collection install bodsch.core

lub

ansible-galaxy collection install --requirements-file collections.yml
  • Połączenie z repozytorium pakietu docker-ce repozytorium

Systemy operacyjne

Testowane na

  • ArchLinux
  • ArtixLinux
  • Oparte na Debianie
    • Debian 10 / 11
    • Ubuntu 20.04 / 22.04

Systemy oparte na RedHat nie są już oficjalnie wspierane! Mogą działać, ale nie muszą.

Zmienne roli

Następujące zmienne mogą być używane do dostosowania instalacji dockera:

## wybierz status włączenia kanału repozytorium centos
docker_repo:
  channel:
    stable_enabled: true
    test_enabled: false
    nightly_enabled: false

## stan pakietu (obecny, brak, itp.)
docker_state: present

## czy demon dockera ma uruchamiać się podczas rozruchu?
docker_service:
  enable: true
  ## nazwa usługi dockera
  name: docker

## zainstaluj docker-compose w wersji
docker_compose: {}
# na przykład:
# docker_compose:
#   install: true
#   version: 1.29.2

docker_users: []

docker_plugins: []

docker_client_config: []

docker_config: {}

docker_config_diff: true

docker_python_packages: []

Powiązane z proxy

Czy demon dockera powinien używać proxy do połączeń wychodzących?

docker_proxy:
  enabled: false
  ## lista zmiennych środowiskowych, które należy ustawić (zakomentuj te, których nie potrzebujesz)
  env:
    - "HTTP_PROXY=http://proxy.example.com:80/"
    - "HTTP_PROXY=https://proxy.example.com:443/"
    - "NO_PROXY=localhost,127.0.0.1,internalhub.example.com"

Konfiguracja klienta docker

Włącz autoryzację dla rejestru Dockera.
Możliwe jest stworzenie konfiguracji dla różnych użytkowników.
Hasło przechowywane tutaj jest zakodowane w base64 i nie jest szyfrowane!
Tworzenie odpowiedniego ciągu można wykonać w następujący sposób:

echo "jenkins$robot:rubbel-die-katz-du-dummschwätzer1" | base64
amVua2luczpydWJiZWwtZGllLWthdHotZHUtZHVtbXNjaHfDpHR6ZXIxCg==
docker_client_config:
  ## lokalizacja, w której powinniśmy umieścić konfigurację klienta
  - location: "/root/.docker/config.json"
    enabled: false
    auths:
      registry.gitfoo.tld:
        auth: amVua2luczpydWJiZWwtZGllLWthdHotZHUtZHVtbXNjaHfDpHR6ZXIxCg==

Alternatywnie możesz również wpisać swoją nazwę użytkownika i hasło.
Moduł Ansible utworzy prawidłowy zakodowany w Base64 ciąg.

docker_client_config:
    ## lokalizacja, w której powinniśmy umieścić konfigurację klienta
  - location: "/var/tmp/foo/config.json"
    enabled: false
    auths:
      "test.tld":
        username: "FOO-was-sonst"
        password: "ja-toll-schon-wieder-alles-scheisse!"

Od wersji 3.1.0 możliwe jest również skonfigurowanie formatu wyjściowego dla docker ps lub docker image.
Tutaj przekazane parametry muszą być zdefiniowane jako lista:

docker_client_config:
  ## lokalizacja, w której powinniśmy umieścić konfigurację klienta
  - location: "/root/.docker/config.json"
    enabled: false
    auths:
      registry.gitfoo.tld:
        auth: amVua2luczpydWJiZWwtZGllLWthdHotZHUtZHVtbXNjaHfDpHR6ZXIxCg==
    formats:
      ps:
        - ".ID"
        - ".Names"
        - ".Status"
        - ".Labels"
        - ".RunningFor"
        - ".Ports"
      images:
        - ".ID"
        - ".Size"
        - ".Repository"
        - ".Tag"
        - ".CreatedAt"

Domyślne opcje konfiguracyjne dockerd

odniesienie konfiguracji

aktualnie wspierane opcje:

opcje typ domyślnie opis
authorization_plugins lista []
bip string - Określ adres IP mostu sieciowego
bridge string - Podłącz kontenery do mostu sieciowego
data_root string /var/lib/docker Katalog główny trwałego stanu Dockera
debug bool false Włącz tryb debugowania
default_gateway string - Adres IPv4 domyślnej bramy kontenera
default_gateway_v6 string - Adres IPv6 domyślnej bramy kontenera
default_shm_size string - Domyślna wielkość shm dla kontenerów (domyślnie 64MiB)
default_ulimits dict {} Domyślne limity ulimits dla kontenerów (domyślnie [])
dns lista [] Serwer DNS do użycia
dns_opts lista [] Opcje DNS do użycia
dns_search lista [] Domeny wyszukiwania DNS do użycia
experimental bool false Włącz eksperymentalne funkcje
fixed_cidr string - IPv4 podsieć dla stałych adresów IP
fixed_cidr_v6 string - IPv6 podsieć dla stałych adresów IP
group group docker Grupa dla gniazda unix
hosts lista [] Gniazda demona, do których należy się połączyć
insecure_registries lista [] Włącz komunikację z niebezpiecznymi rejestrami
ip string 0.0.0.0 Domyślny adres IP przy bindowaniu portów kontenera
ip_forward bool true Włącz net.ipv4.ip_forward (domyślnie prawda)
ip_masq bool true Włącz maskaradę IP (domyślnie prawda)
iptables bool true Włącz dodanie reguł iptables (domyślnie prawda)
ip6tables bool false Włącz dodanie reguł ip6tables (domyślnie fałsz)
ipv6 bool false Włącz sieciowanie IPv6
labels lista [] Ustaw etykiety klucz=wartość na demonie
log_driver string json-file Domyślny sterownik do logowania kontenerów
log_level string info Ustaw poziom logowania (debug, info, warn, error, fatal)
log_opts dict {} Domyślne opcje sterownika logów dla kontenerów
max_concurrent_downloads int 3 Ustaw maksymalne równoczesne pobrania dla każdego ściągania
max_concurrent_uploads int 5 Ustaw maksymalne równoczesne przesyłania dla każdego wysyłania
max_download_attempts int 5 Ustaw maksymalne próby pobrania dla każdego ściągania
metrics_addr string - Ustaw domyślny adres i port do obsługi API metryk
oom_score_adjust int -500 Ustaw oom_score_adj dla demona (domyślnie -500)
pidfile string /var/run/docker.pid Ścieżka do używania pliku PID demona (domyślnie "/var/run/docker.pid")
raw_logs bool false Pełne znaczniki czasowe bez kolorowania ANSI
registry_mirrors lista [] Preferowany lustrzany rejestr Dockera
seccomp_profile string - Ścieżka do profilu seccomp
selinux_enabled bool false Włącz obsługę selinux
shutdown_timeout int 15 Ustaw domyślny limit czasu zamykania
storage_driver string overlay2 Sterownik przechowywania do użycia (aufs, devicemapper, btrfs, zfs, overlay, overlay2, fuse-overlayfs)
storage_opts lista [] Opcje sterownika przechowywania
tls.verify bool false Użyj TLS i zweryfikuj zdalne połączenie
tls.ca_cert string ~/.docker/ca.pem Zaufaj certyfikatom podpisanym tylko przez ten CA (domyślnie "~/.docker/ca.pem")
tls.cert string ~/.docker/cert.pem Ścieżka do pliku certyfikatu TLS (domyślnie "~/.docker/cert.pem")
tls.key string ~/.docker/key.pem Ścieżka do pliku klucza TLS (domyślnie "~/.docker/key.pem")

Przykłady

docker_config:
  log_driver: ""
  log_opts: {}
  #  env: "os,customer"
  #  "max-file": "5"
  #  "max-size": "10m"
  max_concurrent_downloads: 3
  max_concurrent_uploads: 5
  debug: false
  log_level: ""
  bridge: ""
  bip: "172.16.0.1/24"
  fixed_cidr: "172.16.0.0/24"
  fixed_cidr_v6: ""
  default_gateway: ""
  default_gateway_v6: ""
  selinux_enabled: false
  experimental: false
  ip: "0.0.0.0"
  group: "{{ docker_group }}"
  insecure_registries: []

Podczas tworzenia konfiguracji można opcjonalnie utworzyć różnicę w stosunku do oryginalnej wersji i ją wyświetlić.

Aby to zrobić, zmienna docker_config_diff musi być ustawiona na true.

Są więcej przykładów w testach molekułowych:

Opcje docker_users

Dodaj istniejącego użytkownika do grupy docker.

Ponadto próbuje ustawić prawa dostępu do soketu dockera za pomocą setfacl.

docker_users:
  - jenkins

Opcje docker_plugins

Zainstaluj i aktywuj własne wtyczki.

(Jednak testowane tylko z Loki!)

docker_plugins:
  - alias: loki
    source: grafana/loki-docker-driver
    version: 2.7.0
    state: present

Obsługa Pythona

Niektóre moduły w tej roli wymagają odpowiednich rozszerzeń Pythona.
Ostatnio wystąpiło kilka niezgodności, dlatego ten punkt jest teraz również konfigurowalny.

Domyślna konfiguracja jest następująca:

docker_python_packages:
  - name: docker
  - name: requests
  - name: urllib3

Jeśli inne wersje modułów pip są zainstalowane tutaj, można nadpisać te domyślne.
Można dodać wersje do każdego modułu:

docker_python_packages:
  - name: docker
    version: 6.1.1

Jeśli określona jest wersja, podejmie próbę zainstalowania dokładnie tej wersji.
Jednak można także wpłynąć na to zachowanie za pomocą compare_direction.

docker_python_packages:
  - name: docker
    compare_direction: ">"
    version: 6.0.0

Lub zdefiniować odpowiednie okno za pomocą versions:

docker_python_packages:
  - name: docker
  - name: requests
    versions:
      - ">= 2.27.0"
      - "< 2.29.0"
  - name: urllib3
    versions:
      - ">= 1.26.0"
      - "< 2.0.0"

Przykłady

Zainstaluj najnowszą stabilną wersję dockera na swoim lokalnym serwerze centos

- hosts: localhost
  roles:
     - role: docker

Zainstaluj najnowszą wersję edge dockera na swoim lokalnym serwerze centos

- hosts: localhost
  vars:
    docker_repo:
      channel:
        nightly_enabled: true
  roles:
     - role: docker

Zaawansowany playbook z różnymi zastosowanymi zmiennymi

odniesienie konfiguracji

- hosts: localhost
  vars:
    docker_config:
      # przechowuj kontenery/obrazy dockera w /opt/docker
      data_root: /opt/docker
      # zmień domyślną podsieć mostu dockera
      bip: 172.16.77.77/24
      # ustaw domyślny sterownik logów na journald
      log_driver: journald
      # włącz tryb eksperymentalny
      experimental: true
      # udostępnij API dockera przez plik gniazda i tcp
      hosts:
        - unix:///var/run/docker.sock
        - tcp://0.0.0.0:2376
      # ustaw domyślne domeny wyszukiwania
      dns_search:
        - lab1.linuxctl.com
        - lab2.linuxctl.com
      # skonfiguruj opcje logowania
      log_opts:
        "max-size": 10m
        "max-file": "3"
        labels: molecule
        env: "os,customer"
        
  roles:
    - role: docker

Autor i Licencja

  • oryginalna rola docker napisana przez:

  • zmodyfikowana:

    • Bodo Schulz

Licencja

MIT

DARMOWE OPROGRAMOWANIE, HELL YEAH!

O projekcie

install and configure docker on various linux systems

Zainstaluj
ansible-galaxy install bodsch.docker
Licencja
mit
Pobrania
11.8k
Właściciel
ex-developer (c, c++, php), ex-system administrator / engineer, keep-it-simple, monitoring, automation, system architect