notmycloud.podman_systemd
Ansible Podman_systemd
Opis
Konfiguracja jednostek systemd dla Podman dla użytkowników systemowych i bezuprawnionych.
Instalacja
Wymagane są również następujące role. Jeśli dodam je jako zależności, zostaną wykonane, co zakończy się błędem.
- linuxhq.sysctl
- notmycloud.yaml2ini
- notmycloud.systemd_unit
WAŻNE: Wymagana jest instalacja pakietu toml
dla Pythona. Zainstaluj go za pomocą pip.
Użytkowanie
Podaj następujące zmienne, aby rola działała poprawnie.
PODMAN_SYSTEMD_INSTALL_COCKPIT
zainstaluje Cockpit z obsługą Podman.
PODMAN_SYSTEMD_ALLOW_LOWEST_PORT
określi najniższy port, do którego użytkownik bez uprawnień może się związać. Istnieją różne opinie na temat tego, że niskie porty 1024 lub niższe są "bezpieczne" i powinny być zarezerwowane dla zaufanych użytkowników. Jeśli serwer jest wielokrotnego użytkowania, zaleca się zrezygnowanie z tej zmiennej, jednak, jeśli zarządzasz tym serwerem w całości i konfigurujesz użytkowników dla każdej usługi, ta opcja może zaoszczędzić ci wiele kłopotów. Moim zdaniem, można ustawić tę zmienną na 0 dla serwera, który nie jest wielokrotnego użytkowania.
PODMAN_SYSTEMD_ALLOW_PING
pozwoli użytkownikom bez uprawnień na pingowanie.
PODMAN_SYSTEMD_DEPLOY
zawiera większość konfiguracji Podman. Utwórz klucz dla każdego użytkownika, który będzie miał skonfigurowaną jednostkę systemd.
PODMAN_SYSTEMD_DEPLOY:
root:
itp...
user1:
itp...
user2:
itp...
Konfiguracja użytkownika
Root będzie skonfigurowany w domywnym katalogu /etc/systemd/system
, podczas gdy użytkownicy będą skonfigurowani w katalogu ~/.config/system/user
. W tym przykładzie skonfigurujemy dla użytkownika bez uprawnień.
debug_log: bool # ustaw na true, aby włączyć rejestrowanie zadań i debugowania
PODMAN_SYSTEMD_DEPLOY:
myuser:
config:
storage:
storage:
driver: "overlay"
# pary klucz:wartość, które będą zapisane w formacie INI dla storage.conf. Zostaną umieszczone w odpowiednim katalogu dla użytkownika lub, jeśli użytkownik to root, w katalogu konfiguracyjnym /etc.
# Pary klucz:wartość powinny być zgodne z formatem określonym przez rolę notmycloud.yaml2ini.
containers:
engine:
network_cmd_options:
- "allow_host_loopback=true"
- "enable_ipv6=true"
env:
- "TMPDIR=$HOME/.cache/tmp/"
# pary klucz:wartość, które będą zapisane w formacie TOML dla containers.conf. Zostaną umieszczone w odpowiednim katalogu dla użytkownika lub, jeśli użytkownik to root, w katalogu konfiguracyjnym /etc.
registries:
unqualified-search-registries:
- "docker.io"
# - "quay.io"
# - "registry.access.redhat.com"
registry:
# - prefix: "docker.io"
# location: "127.0.0.1:5000"
# insecure: true
# W listopadzie 2020 roku, Docker ogranicza ilość pobrań obrazów. Aby uniknąć osiągnięcia tych ograniczeń podczas testowania, zawsze używaj lustra Google do pobierania obrazów `docker.io`.
# Ref: https://cloud.google.com/container-registry/docs/pulling-cached-images
registry.mirror:
- location: "https://mirror.gcr.io"
# pary klucz:wartość, które będą zapisane w formacie TOML dla registries.conf. Zostaną umieszczone w odpowiednim katalogu dla użytkownika lub, jeśli użytkownik to root, w katalogu konfiguracyjnym /etc.
login: # Zobacz dokumentację modułu containers.podman.podman_login
- registry: registry.mydomain.com
username: registryuser
password: super$3(r37Password
systemd:
enable_socket: # Domyślnie False, włącza gniazdo API Podman dla użytkownika lub, jeśli jest pod rootem, w skali systemu.
containers:
CONTAINERNAME: # Zastąp to pożądaną nazwą kontenera, która będzie również wykorzystywana w pliku jednostki systemd.
podman_options:
image:
network: # Łańcuch sieciowy, domyślnie slirp4netns:allow_host_loopback=true,enable_ipv6=true
replace: # bool
restart: # "always"|"no"|"on-failure"|"unless-stopped" domyślnie no
remove: # Domyślnie tak
stop_timeout: # Domyślnie 60 sekund
log_driver: # Domyślnie Passthrough, abyś mógł przeglądać swoje logi w dzienniku
healthcheck:
cmd:
interval:
retries:
delay:
timeout:
environment: # Tablica par klucz-wartość
key: "value"
ports: # 0.0.0.0:hostport:containerport
volumes:
- host:
container:
options:
type: # plik/katalog
labels: # Tablica par klucz-wartość
key: "value"
other_options: # Łańcuch lub tablica innych opcji do przekazania do podman run
service_options: # Zobacz notmycloud.systemd_unit, zmienna o głębokości równej UNIT_NAME
pods:
PODNAME: # Zastąp to pożądaną nazwą podu, która będzie również wykorzystywana do prefiksowania powiązanych kontenerów.
pod_service_options: # Zobacz notmycloud.systemd_unit, zmienna o głębokości równej UNIT_NAME
CONTAINERNAME:
# Przestrzegaj powyższej składni PODMAN_SYSTEMD_DEPLOY.USERNAME.systemd.containers.CONTAINERNAME
Inne uwagi
Gniazdo Podman
Gniazdo roota będzie włączone w: /run/podman/podman.sock
Gniazdo bezuprawnieniowe będzie włączone w: /run/user/$UID/podman/podman.sock
Katalog konfiguracyjny kontenera
Zalecam użycie %E/%N/
jako głównego katalogu konfiguracyjnego.
To przechowa konfigurację w ~/.config/{nazwa_usługi}/
lub /etc/{nazwa_usługi}/
.
Dla kontenerów, które potrzebują wielu katalogów konfiguracyjnych, użyję %E/%N/config1/
, %E/%N/config2/
, itd...
Zalecane inne opcje
--init
Uruchami init w kontenerze, który przekazuje sygnały i zbiera procesy. Zobacz containers/podman#1670 dla dalszych informacji.--cap-drop=all
Usuń wszystkie uprawnienia, prawdopodobnie będziesz musiał dodać uprawnienia, aby twój kontener działał poprawnie.--security-opt=no-new-privileges
Wyłącz procesy kontenera, żeby nie mogły zdobyć dodatkowych uprawnień. Zobacz dokumentację dla dalszych informacji.--userns=keep-id
Mapuje użytkownika kontenera na identyfikator użytkownika hosta.
Wsparcie
Aby uzyskać wsparcie, proszę zgłosić problem i dostarczyć następujące elementy
- Przykładowe zadanie/zakładkę do powtórzenia problemu
- Plik wynikowy, który został utworzony.
ansible-galaxy install notmycloud.podman_systemd