gwerlas.podman

Podman

Zainstaluj i skonfiguruj Podman w trybie bez root'a.

Projekt GitLab: yoanncolin/ansible/roles/podman

Wymagania

System Linux skonfigurowany z:

  • SSH
  • Python (do Ansible)
  • Sudo
  • Menedżer pakietów gotowy do użycia

Rola gwerlas.system może Ci pomóc:

ansible-galaxy install gwerlas.system
- name: Mój playbook
  hosts: all
  roles:
    - role: gwerlas.system
    - role: gwerlas.podman

Fakty

Zdefiniowane fakty tej roli:

  • podman_version
  • podman_packages

Możesz uzyskać fakty bez wprowadzania jakichkolwiek zmian na swoich węzłach:

- name: Mój playbook
  hosts: all
  tasks:
    - name: Pobierz fakty
      ansible.builtin.import_role:
        name: gwerlas.podman
        tasks_from: facts

    - name: Wyświetl
      ansible.builtin.debug:
        var: podman_packages

Tagi

Możesz filtrować konkretne zadania używając tych tagów:

  • provision: Tylko przydzielanie zasobów

Zmienne roli

Dostępne zmienne są podane poniżej wraz z wartościami domyślnymi (zobacz defaults/main.yml):

podman_compose_install: false
podman_toolbox_install: false

podman_mimic_docker: false

podman_create_missing_users: true
podman_users:
  - name: "{{ ansible_user_id }}"

podman_wrappers: []
podman_wrappers_path: /usr/local/bin

Podman bez root'a

Aby umożliwić niektórym użytkownikom korzystanie z Podman w trybie bez root'a, podman_users musi być listą obiektów o takiej strukturze:

podman_users:
  - name: jdoe            # Nazwa użytkownika Unix (wymagana)
    home: /home/jdoe      # Uzyskane z wpisów użytkowników jeśli brak
    uid: 1000             # Używane tylko dla użytkowników, którzy jeszcze nie zostali utworzeni w systemie
    subuid_starts: 100000 # Generowane z identyfikatora użytkownika domyślnie
    subuid_length: 50000  # 65536 domyślnie
    subgid_starts: 100000 # Tak samo jak subuid_starts domyślnie
    subgid_length: 50000  # Tak samo jak subuid_length domyślnie

Ponieważ Podman przechowuje swoje dane w katalogu domowym użytkownika, utworzymy go, jeśli brak.

Możesz szybko dodać użytkowników, wywołując samodzielnie zadanie rootless:

---
- name: Dodaj użytkownika do bezrootowego korzystania z podman
  hosts: all
  vars:
    podman_users:
      - name: jdoe
        uid: 300
  tasks:
    - name: Dodaj John'a Doe
      ansible.builtin.import_role:
        name: gwerlas.podman
        tasks_from: rootless

Nieistniejący użytkownicy

Dla użytkowników, którzy jeszcze nie istnieją, utworzymy ich za pomocą roli gwerlas.system.

Aby wyłączyć tworzenie brakujących użytkowników, ustaw podman_create_missing_users na false. W takim przypadku musisz ustawić właściwość uid dla każdego brakującego użytkownika.

Konfiguracja Podman

Domyślnie nie zmieniamy plików konfiguracyjnych dystrybucji.

Z wyjątkiem ustawień kontenerów Debian 11, które nie działają od razu.

Aby użyć spersonalizowanej konfiguracji, użyj ustawień podman_*_config.

Kontenery

Użyj słownika podman_containers_config, aby wypełnić plik /etc/containers/containers.conf zgodnie z tą samą strukturą, jak opisano w podręczniku containers.conf.

Na przykład:

podman_containers_config:
  containers:
    log_driver: journald
  engine:
    cgroup_manager: cgroupfs

Wygeneruje plik /etc/containers/containers.conf poniżej:

[containers]
log_drivers = "journald"

[engine]
cgroup_manager = "cgroupfs"

Dla Debian 11 tylko, nadpisujemy domyślne ustawienia dystrybucji powyższą konfiguracją.

Rejestry

UWAGA Nie wspieramy przestarzałego formatu wersji 1.

Użyj słownika podman_registries_config, aby wypełnić plik /etc/containers/registries.conf zgodnie z tą samą strukturą, jak opisano w podręczniku registries.conf.

Na przykład:

podman_registries_config:
  unqualified-search-registries:
    - docker.io
  registry:
    - location: my-insecure-registry:5000
      insecure: true

Wygeneruje plik /etc/containers/registries.conf poniżej:

unqualified-search-registries = ['docker.io']

[[registry]]
location = my-insecure-registry:5000
insecure = true

Przechowywanie

Użyj słownika podman_storage_config, aby wypełnić plik /etc/containers/storage.conf zgodnie z tą samą strukturą, jak opisano w podręczniku storage.conf.

Na przykład:

podman_storage_config:
  storage:
    driver: zfs
    options:
      zfs:
        mountopt: "nodev"

Wygeneruje plik /etc/containers/storage.conf poniżej:

[storage]
driver = "zfs"

[storage.options.zfs]
mountopt = "nodev"

Libpod

Użyj słownika podman_libpod_config, aby wypełnić plik /etc/containers/libpod.conf zgodnie z tą samą strukturą, jak opisano w podręczniku libpod.conf.

Na przykład:

podman_libpod_config:
  cgroup_manager: cgroupfs

Wygeneruje plik /etc/containers/libpod.conf poniżej:

cgroup_manager = "cgroupfs"

Dla Debian 11 tylko, nadpisujemy domyślne ustawienia dystrybucji powyższą konfiguracją.

Podman compose

Ustawienie podman_compose_install na true zainstaluje podman-compose, jeśli jest dostępne w dystrybucji docelowego hosta.

Podman toolbox

Ustawienie podman_toolbox_install na true zainstaluje podman-toolbox, jeśli jest dostępne w dystrybucji docelowego hosta.

Naśladuj Dockera

Docker w $PATH

Możesz naśladować Dockera, ustawiając parametr podman_mimic_docker na true. Jeśli pakiet podman-docker jest dostępny dla docelowej dystrybucji Linux, zostanie zainstalowany, w przeciwnym razie zostanie utworzony link symboliczny.

Dzięki temu skrypty wywołujące docker będą transparently używać podman zamiast, lub prawie.

Gniazdo daemon

Jeśli zainstalowana wersja Podman to 3.0 lub nowsza, serwis będzie włączony dla każdego podman_users, a zmienne środowiskowe DOCKER_BUILDKIT i DOCKER_HOST będą odpowiednio ustawione na 0 i $XDG_RUNTIME_DIR/podman/podman.sock.

Dzięki temu będziesz mógł uruchamiać Dockera w Podmanie.

Wrappery

Możesz dodać kilka wrapperów, aby wywołać niektóre polecenia transparently:

Na przykład, uruchomić molecule bez instalacji (i jego zależności) na twoim systemie:

podman_wrappers:
  - command: molecule
    image: gwerlas/molecule
    env:
      CONTAINER_CONNECTION: docker
      MOLECULE_CONTAINERS_BACKEND: podman
    interactive: true
    network: host
    security_opt: label=disable
    volume:
      - $HOME/.cache/molecule:/root/.cache/molecule
      - $HOME/.vagrant.d:/root/.vagrant.d
      - /run/libvirt:/run/libvirt
      - /var/lib/libvirt:/var/lib/libvirt
      - /var/tmp:/var/tmp
    wrapper_extras:
      env_patterns:
        - ANSIBLE_*
        - MOLECULE_*
      openstack_cli: true
      podman_socket: true
      same_pwd: true
      ssh_auth_sock: true

Większość argumentów jest taka sama jak parametry podman run, wspieramy prawie wszystkie argumenty modułu ansible podman_container w takiej formie (za wyjątkiem aliasów i funkcji związanych z serwisami).

Możesz dodać (lub usunąć) listę wspieranych parametrów edytując zmienną podman_wrappers_autofill. Możesz także edytować wartości domyślne edytując zmienną podman_wrappers_values.

Zależności

Rola gwerlas.system do zarządzania użytkownikami.

Upewnij się, że containers.podman jest zainstalowane na Twoim systemie lub jest obecne w requirements.yml.

Przykładowy Playbook

Przykład sposobu, aby być zgodnym z Dockerem tyle, ile to możliwe:

---
- name: Zgodne z Docker
  hosts: all
  roles:
    - name: gwerlas.system
    - name: gwerlas.podman
      vars:
        podman_mimic_docker: true

Licencja

Licencja BSD 3-Clause.

O projekcie

Install and configure podman

Zainstaluj
ansible-galaxy install gwerlas.podman
Licencja
bsd-3-clause
Pobrania
5.4k
Właściciel
DevOps Engineer