Files
DevOpsLab/roles/docker
Сергей Антропов b41c110c16
Some checks failed
Ansible Testing / lint (push) Has been cancelled
Ansible Testing / test (default) (push) Has been cancelled
Ansible Testing / test (minimal) (push) Has been cancelled
Ansible Testing / test (performance) (push) Has been cancelled
Ansible Testing / deploy-check (push) Has been cancelled
feat: добавлена универсальная роль docker и обновлена документация
- Создана универсальная роль docker для установки Docker и Docker Compose
- Поддержка Debian, Ubuntu, CentOS, AlmaLinux, Rocky, RHEL
- Установка через официальный репозиторий или get.docker.com
- Полностью переписана документация README.md с актуальной информацией
- Добавлен preset mytest для тестирования
- Обновлен roles/deploy.yml с актуальными ролями

Автор: Сергей Антропов
Сайт: https://devops.org.ru
2025-10-26 00:58:00 +03:00
..

Роль 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 на целевых хостах
  • Доступ к интернету для загрузки пакетов

Что делает роль

  1. Определяет семейство ОС (Debian или Red Hat)
  2. Устанавливает необходимые зависимости
  3. Добавляет официальный репозиторий Docker
  4. Устанавливает Docker CE и Docker Compose
  5. Запускает и включает службу Docker
  6. Создает группу docker
  7. Добавляет пользователей в группу docker
  8. Проверяет корректность установки

Проверка установки

После выполнения роли проверьте установку:

# Проверка версии 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