# Роль docker ## Описание Универсальная роль Ansible для установки и настройки Docker и Docker Compose на различных Linux-дистрибутивах. Роль автоматически определяет семейство ОС (Debian/Ubuntu или Red Hat/CentOS/AlmaLinux) и использует соответствующий метод установки. **Поддерживаемые ОС:** - Debian 9/10/11/12 - Ubuntu 20.04/22.04/24.04 - CentOS 7/8/9 - AlmaLinux 8/9 - Rocky Linux 8/9 - RHEL 8/9 **Автор:** Сергей Антропов **Сайт:** https://devops.org.ru ## Переменные | Переменная | По умолчанию | Описание | |------------|--------------|----------| | `docker_version` | `"latest"` | Версия Docker CE для установки | | `docker_compose_version` | `"latest"` | Версия Docker Compose (для standalone версии) | | `docker_use_official_repo` | `true` | Использовать официальный репозиторий Docker | | `docker_use_compose_plugin` | `true` | Использовать docker-compose-plugin вместо standalone | | `docker_users` | `[]` | Список пользователей для добавления в группу docker | | `docker_service_enabled` | `true` | Автозапуск Docker при загрузке | | `docker_service_state` | `started` | Состояние службы Docker | | `docker_additional_packages` | `[]` | Дополнительные пакеты для установки | | `docker_install_method` | `"official"` | Метод установки: 'official' или 'get.docker.com' | ## Примеры использования ### Базовое использование ```yaml - hosts: all roles: - docker ``` ### Установка с добавлением пользователей ```yaml - hosts: all roles: - role: docker vars: docker_users: - ansible - deploy ``` ### Установка через скрипт get.docker.com ```yaml - hosts: all roles: - role: docker vars: docker_install_method: "get.docker.com" docker_use_official_repo: false ``` ### Установка standalone Docker Compose ```yaml - hosts: all roles: - role: docker vars: docker_use_compose_plugin: false docker_compose_version: "2.23.0" ``` ### Установка с дополнительными пакетами ```yaml - hosts: all roles: - role: docker vars: docker_additional_packages: - docker-ce-rootless-extras ``` ## Зависимости Нет зависимостей от других ролей. ## Требования - Ansible 2.9+ - Python 3.6+ - Права sudo на целевых хостах - Доступ к интернету для загрузки пакетов ## Что делает роль 1. Определяет семейство ОС (Debian или Red Hat) 2. Устанавливает необходимые зависимости 3. Добавляет официальный репозиторий Docker 4. Устанавливает Docker CE и Docker Compose 5. Запускает и включает службу Docker 6. Создает группу docker 7. Добавляет пользователей в группу docker 8. Проверяет корректность установки ## Проверка установки После выполнения роли проверьте установку: ```bash # Проверка версии Docker docker --version # Проверка версии Docker Compose docker compose version # или docker-compose --version # Проверка статуса службы systemctl status docker # Проверка информации о Docker docker info ``` ## Пример playbook для тестирования ```yaml --- - name: Установка Docker на все хосты hosts: all become: yes roles: - role: docker vars: docker_users: - ansible docker_use_compose_plugin: true post_tasks: - name: Запуск тестового контейнера docker_container: name: hello-world image: hello-world:latest state: started - name: Проверка запущенных контейнеров command: docker ps -a register: docker_ps changed_when: false - name: Вывод списка контейнеров debug: var: docker_ps.stdout_lines ``` ## Troubleshooting ### Docker не запускается Проверьте журналы systemd: ```bash sudo journalctl -u docker.service ``` ### Проблемы с репозиторием Для Ubuntu/Debian, если репозиторий не добавляется: ```bash sudo apt-get update sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release ``` ### Проблемы с правами Если пользователь не может запускать docker без sudo: ```bash sudo usermod -aG docker $USER # Выйдите и войдите снова ``` ## Лицензия MIT ## Автор Сергей Антропов - https://devops.org.ru