chasinglogic.podman

Rola Ansible dla Podman

Zarządzaj usługami i kontenerami za pomocą Podman

CircleCI

Użycie

Domyślnie ta rola po prostu zainstaluje Podman, jak opisano w dokumentacji Podman, i przeprowadzi inne niezbędne ustawienia, aby instalacja działała na obsługiwanych platformach.

Ważna uwaga: Oznacza to, że dla systemów Ubuntu / Debian wykonane zostanie apt upgrade, zgodnie z dokumentacją, po dodaniu repozytorium. To uaktualnienie będzie uruchamiane tylko wtedy, gdy repozytorium zostanie dodane lub zmienione, i nie będzie wykonywane podczas kolejnych uruchomień.

Dodatkowo, można wdrożyć i skonfigurować kontenery Podman jako usługi SystemD.

Przykładowy skrypt

- hosts: all
  roles:
    - role: podman

Automatyczne wdrażanie usług

Kontenery Podman, które mają działać jako usługi, są stosunkowo jednorodne. Z tego powodu ta rola udostępnia zmienną, która może być używana do wdrażania i konfigurowania kontenerów jako usług SystemD. Bardziej złożone przypadki użycia, takie jak konfigurowanie wielu kontenerów jako pod, nie są jeszcze obsługiwane. Aby użyć tej funkcji dla swojego hosta, zdefiniuj zmienną podman_services, która jest listą map o następującej strukturze:

podman_services:
    ## Zmienne Podman
    #
    # Wymagane: Nazwa obrazu do pobrania
  - image_name: nginx
    # Opcjonalne: Tag do pobrania. Zazwyczaj odpowiada to
    # wersji, domyślnie 'latest'
    image_tag: mainline
    # Opcjonalne: Opis, który zostanie dodany do pliku usługi SystemD
    description: Serwer www
    # Opcjonalne: Lista portów do publikacji. Przyjmuje tę samą formę, co
    # CLI Podman, czyli: host-port:container-port. To jest
    # bezpośrednio przekazywane do flagi '--publish', więc bindowanie IP
    # również działa (np. '127.0.0.1:8080:80'). Domyślnie brak.
    publish:
      - '80:80'
    # Opcjonalne: Stringowa nazwa sieci do przekazania jako flaga --network.
    # Jeśli sieć nie istnieje, zostanie utworzona. Można to użyć do
    # umożliwienia wielu usługom komunikowanie się ze sobą. Zobacz Networking dla zastrzeżeń
    network: somenetwork
    # Opcjonalne: Lista wolumenów do zamontowania. Przyjmuje tę samą formę, co
    # CLI Podman: host-directory:container-directory, a jak pokazano poniżej,
    # opcje montowania są dozwolone.
    volumes:
      - '/tmp:/usr/share/nginx/html:ro'
    # Opcjonalne: Zdefiniuj nazwę hosta dla flagi hostname Podman. Ustawia
    # nazwę hosta kontenera, domyślnie brak.
    hostname: chasinglogic.io
    # Opcjonalne: Lista sekretów do zamontowania. Sekrety nie będą
    # tworzone automatycznie. Jedynym wymaganym polem, jeśli jest używane, jest nazwa.
    # Pozostałe wartości mają domyślne zgodności w dokumentacji Podman
    # https://docs.podman.io/en/v4.6.0/markdown/options/secret.html
    secrets:
      - name: secret
        type: mount
        target: /run/secrets/secret
        uid: 0
        gid: 0
        mode: 0
    # Opcjonalne: Lista zmiennych środowiskowych do dodania do
    # kontenera. Domyślnie brak.
    env_vars:
      - SOME_VAR=SOME_VALUE
    # Opcjonalne: Lista dowolnych argumentów jako ciągów, które zostaną dodane przed nazwą obrazu.
    flags:
      - '--cap-add=NET_ADMIN'

    ## Zmienne SystemD
    #
    # Opcjonalne: Zdefiniuj politykę ponownego uruchamiania dla tej usługi. Domyślnie zawsze
    restart: always
    # Opcjonalne: Zdefiniuj czas oczekiwania między ponownymi uruchomieniami usługi w sekundach. Domyślnie 30
    restart_sec: 30
    # Opcjonalne: Zdefiniuj rzeczywistą nazwę, używaną dla
    # usługi SystemD. {{ Domyślnie image_name + '-podman' }}
    service_name: nginx
    # Opcjonalne: Zdefiniuj cele/usługi, po których ta usługa SystemD
    # musi się uruchomić. To jest lista YAML, a nie ciąg.
    after:
      - network.target
    # Opcjonalne: Zdefiniuj limit czasu dla uruchamiania tej usługi SystemD.
    # Aby uzyskać poprawne wartości, zobacz 'man systemd.service'. Domyślnie
    # 5 minut.
    timeout_start_sec: 5m
    # Opcjonalne: Zdefiniuj sekcję instalacyjną dla usługi SystemD.
    # Obecnie tylko wanted_by jest obsługiwane. Zobacz 'man
    # systemd.unit' dla opisu tej sekcji. Domyślnie brak
    # i większość użytkowników nie powinna tego potrzebować.
    install:
      wanted_by:
        - multi-user.target
    # Opcjonalne: zdefiniuj użytkownika i grupę dla pliku usługi
    # Domyślnie brak, co jest równoważne z root na większości
    # systemów.
    user: root
    group: root

Sieć

W tej chwili Ansible nie dostarcza modułu sieciowego do Podman, analogicznego do docker_network. Jeśli używasz opcji sieci na swoim kontenerze, musisz upewnić się, że sieć istnieje przed uruchomieniem tej roli. W przyszłości, gdy wsparcie dla sieci Podman zostanie dodane do Ansible, ta rola zapewni, że zostanie utworzona.

Rozwój

Podczas rozwijania najlepiej używać etapów konwergencji i weryfikacji w następujący sposób:

make converge verify

Licencja

MIT

O projekcie

Manage services and containers with podman

Zainstaluj
ansible-galaxy install chasinglogic.podman
Licencja
mit
Pobrania
3k
Właściciel
Linux and FOSS Enthusiast.