Роль 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' | 
Примеры использования
Базовое использование
- hosts: all
  roles:
    - docker
Установка с добавлением пользователей
- hosts: all
  roles:
    - role: docker
      vars:
        docker_users:
          - ansible
          - deploy
Установка через скрипт get.docker.com
- hosts: all
  roles:
    - role: docker
      vars:
        docker_install_method: "get.docker.com"
        docker_use_official_repo: false
Установка standalone Docker Compose
- hosts: all
  roles:
    - role: docker
      vars:
        docker_use_compose_plugin: false
        docker_compose_version: "2.23.0"
Установка с дополнительными пакетами
- hosts: all
  roles:
    - role: docker
      vars:
        docker_additional_packages:
          - docker-ce-rootless-extras
Зависимости
Нет зависимостей от других ролей.
Требования
- Ansible 2.9+
- Python 3.6+
- Права sudo на целевых хостах
- Доступ к интернету для загрузки пакетов
Что делает роль
- Определяет семейство ОС (Debian или Red Hat)
- Устанавливает необходимые зависимости
- Добавляет официальный репозиторий Docker
- Устанавливает Docker CE и Docker Compose
- Запускает и включает службу Docker
- Создает группу docker
- Добавляет пользователей в группу docker
- Проверяет корректность установки
Проверка установки
После выполнения роли проверьте установку:
# Проверка версии Docker
docker --version
# Проверка версии Docker Compose
docker compose version
# или
docker-compose --version
# Проверка статуса службы
systemctl status docker
# Проверка информации о Docker
docker info
Пример playbook для тестирования
---
- 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:
sudo journalctl -u docker.service
Проблемы с репозиторием
Для Ubuntu/Debian, если репозиторий не добавляется:
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
Проблемы с правами
Если пользователь не может запускать docker без sudo:
sudo usermod -aG docker $USER
# Выйдите и войдите снова
Лицензия
MIT
Автор
Сергей Антропов - https://devops.org.ru