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
		
			
				
	
	
		
			251 lines
		
	
	
		
			7.9 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			251 lines
		
	
	
		
			7.9 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| ---
 | ||
| # Задачи для роли 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
 |