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