chasinglogic.podman
Rola Ansible dla Podman
Zarządzaj usługami i kontenerami za pomocą Podman
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
ansible-galaxy install chasinglogic.podman