39 lines
1.6 KiB
YAML
39 lines
1.6 KiB
YAML
---
|
||
- name: Определить семейство пакетного менеджера
|
||
ansible.builtin.set_fact:
|
||
docker_pkg_family: >-
|
||
{{ 'debian' if ansible_pkg_mgr == 'apt'
|
||
else 'redhat' if ansible_pkg_mgr in ['dnf', 'dnf5', 'yum']
|
||
else 'unsupported' }}
|
||
|
||
- name: Проверить поддерживаемую ОС
|
||
ansible.builtin.assert:
|
||
that:
|
||
- docker_pkg_family != 'unsupported'
|
||
fail_msg: >-
|
||
Роль docker поддерживает Ubuntu/Debian (apt) и RedOS/RHEL (dnf).
|
||
Обнаружено: {{ ansible_distribution }} {{ ansible_distribution_version }}
|
||
(pkg_mgr={{ ansible_pkg_mgr }}).
|
||
|
||
- name: Установить Docker для текущего семейства ОС
|
||
ansible.builtin.include_tasks: "{{ docker_pkg_family }}.yml"
|
||
|
||
# --- Общие шаги (systemd одинаков для всех семейств) ---------------------
|
||
- name: Включить и запустить службу docker
|
||
ansible.builtin.systemd_service:
|
||
name: docker
|
||
enabled: "{{ docker_service_enabled | bool }}"
|
||
state: "{{ docker_service_state }}"
|
||
when: docker_manage_service | bool
|
||
# В check-режиме пакеты не ставятся, поэтому unit ещё не существует —
|
||
# не роняем dry-run на этом шаге.
|
||
ignore_errors: "{{ ansible_check_mode }}"
|
||
|
||
- name: Добавить пользователей в группу docker
|
||
ansible.builtin.user:
|
||
name: "{{ item }}"
|
||
groups: docker
|
||
append: true
|
||
loop: "{{ docker_users }}"
|
||
when: docker_users | length > 0
|