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.
O projekcie

Configure Podman Systemd Units for system and rootless users.

Zainstaluj
ansible-galaxy install notmycloud.podman_systemd
Licencja
mit
Pobrania
234
Właściciel