feat: добавлена универсальная роль docker и обновлена документация
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
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
This commit is contained in:
250
roles/docker/tasks/main.yml
Normal file
250
roles/docker/tasks/main.yml
Normal file
@@ -0,0 +1,250 @@
|
||||
---
|
||||
# Задачи для роли docker
|
||||
# Автор: Сергей Антропов
|
||||
# Сайт: https://devops.org.ru
|
||||
|
||||
# Определяем семейство ОС для выбора правильного метода установки
|
||||
- name: Определение семейства ОС
|
||||
set_fact:
|
||||
docker_os_family: "{{ ansible_os_family }}"
|
||||
docker_pkg_manager: "{{ 'yum' if ansible_pkg_mgr == 'yum' else ('dnf' if ansible_pkg_mgr == 'dnf' else 'apt') }}"
|
||||
|
||||
# Устанавливаем предварительные зависимости
|
||||
- name: Установка зависимостей для Debian/Ubuntu
|
||||
become: true
|
||||
apt:
|
||||
name:
|
||||
- apt-transport-https
|
||||
- ca-certificates
|
||||
- curl
|
||||
- gnupg
|
||||
- lsb-release
|
||||
- software-properties-common
|
||||
state: present
|
||||
update_cache: yes
|
||||
when: ansible_os_family == "Debian"
|
||||
|
||||
- name: Установка зависимостей для Red Hat
|
||||
become: true
|
||||
package:
|
||||
name:
|
||||
- yum-utils
|
||||
- device-mapper-persistent-data
|
||||
- lvm2
|
||||
state: present
|
||||
when: ansible_os_family == "RedHat"
|
||||
failed_when: false
|
||||
|
||||
# Добавляем официальный репозиторий Docker для Debian/Ubuntu
|
||||
- name: Добавление GPG ключа Docker для Debian/Ubuntu
|
||||
become: true
|
||||
shell: |
|
||||
install -m 0755 -d /etc/apt/keyrings
|
||||
curl -fsSL https://download.docker.com/linux/{{ (ansible_distribution | lower) }}/gpg -o /etc/apt/keyrings/docker.asc
|
||||
chmod a+r /etc/apt/keyrings/docker.asc
|
||||
args:
|
||||
creates: /etc/apt/keyrings/docker.asc
|
||||
when:
|
||||
- ansible_os_family == "Debian"
|
||||
- docker_use_official_repo
|
||||
|
||||
- name: Добавление репозитория Docker для Debian/Ubuntu
|
||||
become: true
|
||||
apt_repository:
|
||||
repo: "deb [arch={{ ansible_architecture }} signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/{{ (ansible_distribution | lower) }} {{ ansible_distribution_release }} stable"
|
||||
state: present
|
||||
filename: docker
|
||||
update_cache: yes
|
||||
when:
|
||||
- ansible_os_family == "Debian"
|
||||
- docker_use_official_repo
|
||||
|
||||
# Добавляем официальный репозиторий Docker для Red Hat
|
||||
- name: Добавление репозитория Docker для Red Hat через dnf
|
||||
become: true
|
||||
shell: |
|
||||
dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
|
||||
args:
|
||||
creates: /etc/yum.repos.d/docker-ce.repo
|
||||
when:
|
||||
- ansible_os_family == "RedHat"
|
||||
- ansible_pkg_mgr == "dnf"
|
||||
- docker_use_official_repo
|
||||
failed_when: false
|
||||
|
||||
- name: Добавление репозитория Docker для Red Hat через yum-config-manager
|
||||
become: true
|
||||
shell: |
|
||||
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
|
||||
args:
|
||||
creates: /etc/yum.repos.d/docker-ce.repo
|
||||
when:
|
||||
- ansible_os_family == "RedHat"
|
||||
- ansible_pkg_mgr == "yum"
|
||||
- docker_use_official_repo
|
||||
failed_when: false
|
||||
|
||||
# Устанавливаем Docker через официальный репозиторий
|
||||
- name: Установка Docker CE для Debian/Ubuntu (официальный репозиторий)
|
||||
become: true
|
||||
apt:
|
||||
name:
|
||||
- docker-ce
|
||||
- docker-ce-cli
|
||||
- containerd.io
|
||||
- docker-buildx-plugin
|
||||
state: "{{ 'present' if docker_version == 'latest' else docker_version }}"
|
||||
update_cache: yes
|
||||
when:
|
||||
- ansible_os_family == "Debian"
|
||||
- docker_use_official_repo
|
||||
- docker_install_method == "official"
|
||||
|
||||
- name: Установка Docker CE для Red Hat (официальный репозиторий)
|
||||
become: true
|
||||
package:
|
||||
name:
|
||||
- docker-ce
|
||||
- docker-ce-cli
|
||||
- containerd.io
|
||||
- docker-buildx-plugin
|
||||
state: "{{ 'present' if docker_version == 'latest' else docker_version }}"
|
||||
when:
|
||||
- ansible_os_family == "RedHat"
|
||||
- docker_use_official_repo
|
||||
- docker_install_method == "official"
|
||||
|
||||
# Устанавливаем Docker через скрипт get.docker.com
|
||||
- name: Проверка наличия Docker
|
||||
stat:
|
||||
path: /usr/bin/docker
|
||||
register: docker_binary
|
||||
|
||||
- name: Скачивание скрипта установки Docker
|
||||
become: true
|
||||
get_url:
|
||||
url: https://get.docker.com
|
||||
dest: /tmp/get-docker.sh
|
||||
mode: '0755'
|
||||
when:
|
||||
- docker_install_method == "get.docker.com" or docker_use_official_repo == false
|
||||
- not docker_binary.stat.exists
|
||||
|
||||
- name: Установка Docker через скрипт get.docker.com
|
||||
become: true
|
||||
command: /tmp/get-docker.sh
|
||||
args:
|
||||
creates: /usr/bin/docker
|
||||
when:
|
||||
- docker_install_method == "get.docker.com" or docker_use_official_repo == false
|
||||
- not docker_binary.stat.exists
|
||||
|
||||
- name: Проверка установки Docker
|
||||
become: true
|
||||
command: docker --version
|
||||
register: docker_version_check
|
||||
changed_when: false
|
||||
failed_when: false
|
||||
|
||||
- name: Вывод версии Docker
|
||||
debug:
|
||||
msg: "{{ docker_version_check.stdout if docker_version_check.rc == 0 else 'Docker не установлен' }}"
|
||||
|
||||
# Устанавливаем docker-compose-plugin для Debian/Ubuntu
|
||||
- name: Установка docker-compose-plugin для Debian/Ubuntu
|
||||
become: true
|
||||
apt:
|
||||
name:
|
||||
- docker-compose-plugin
|
||||
state: present
|
||||
when:
|
||||
- ansible_os_family == "Debian"
|
||||
- docker_use_compose_plugin
|
||||
- docker_use_official_repo
|
||||
|
||||
# Устанавливаем docker-compose-plugin для Red Hat
|
||||
- name: Установка docker-compose-plugin для Red Hat
|
||||
become: true
|
||||
package:
|
||||
name:
|
||||
- docker-compose-plugin
|
||||
state: present
|
||||
when:
|
||||
- ansible_os_family == "RedHat"
|
||||
- docker_use_compose_plugin
|
||||
- docker_use_official_repo
|
||||
|
||||
# Устанавливаем standalone docker-compose
|
||||
- name: Скачивание docker-compose
|
||||
become: true
|
||||
get_url:
|
||||
url: "https://github.com/docker/compose/releases/{{ 'latest/download' if docker_compose_version == 'latest' else 'download/v' + docker_compose_version }}/docker-compose-{{ ansible_system }}-{{ ansible_machine }}"
|
||||
dest: /usr/local/bin/docker-compose
|
||||
mode: '0755'
|
||||
when:
|
||||
- not docker_use_compose_plugin or docker_compose_version != 'latest'
|
||||
|
||||
- name: Проверка установки Docker Compose
|
||||
become: true
|
||||
shell: |
|
||||
set -o pipefail
|
||||
if command -v docker compose &> /dev/null; then
|
||||
docker compose version
|
||||
elif command -v docker-compose &> /dev/null; then
|
||||
docker-compose --version
|
||||
else
|
||||
echo "Docker Compose не установлен"
|
||||
fi
|
||||
register: docker_compose_version_check
|
||||
changed_when: false
|
||||
failed_when: false
|
||||
|
||||
- name: Вывод версии Docker Compose
|
||||
debug:
|
||||
msg: "{{ docker_compose_version_check.stdout if docker_compose_version_check.rc == 0 else 'Docker Compose не установлен' }}"
|
||||
|
||||
# Запускаем и включаем службу Docker
|
||||
- name: Запуск службы Docker
|
||||
become: true
|
||||
systemd:
|
||||
name: docker
|
||||
state: started
|
||||
enabled: yes
|
||||
|
||||
# Создаем группу docker
|
||||
- name: Создание группы docker
|
||||
become: true
|
||||
group:
|
||||
name: docker
|
||||
state: present
|
||||
|
||||
# Добавляем пользователей в группу docker
|
||||
- name: Добавление пользователей в группу docker
|
||||
become: true
|
||||
user:
|
||||
name: "{{ item }}"
|
||||
groups: docker
|
||||
append: yes
|
||||
loop: "{{ docker_users }}"
|
||||
when: docker_users | length > 0
|
||||
|
||||
# Устанавливаем дополнительные пакеты
|
||||
- name: Установка дополнительных пакетов
|
||||
become: true
|
||||
package:
|
||||
name: "{{ docker_additional_packages }}"
|
||||
state: present
|
||||
when: docker_additional_packages | length > 0
|
||||
|
||||
# Проверка статуса Docker
|
||||
- name: Проверка статуса Docker
|
||||
become: true
|
||||
command: docker info
|
||||
register: docker_info
|
||||
changed_when: false
|
||||
failed_when: false
|
||||
|
||||
- name: Вывод информации о Docker
|
||||
debug:
|
||||
msg: "Docker успешно установлен и запущен"
|
||||
when: docker_info.rc == 0
|
||||
Reference in New Issue
Block a user