---
- 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
