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
ansible-galaxy install gwerlas.podman