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
- Создана универсальная роль docker для установки Docker и Docker Compose - Поддержка Debian, Ubuntu, CentOS, AlmaLinux, Rocky, RHEL - Установка через официальный репозиторий или get.docker.com - Полностью переписана документация README.md с актуальной информацией - Добавлен preset mytest для тестирования - Обновлен roles/deploy.yml с актуальными ролями Автор: Сергей Антропов Сайт: https://devops.org.ru
194 lines
5.3 KiB
Markdown
194 lines
5.3 KiB
Markdown
# Роль 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
|