Требуемые условия завершения
Задача:
- Project 6 – Разворачивание приложений с помощью Docker-compose
- Проект должен быть выполнен средствами Ansible
- Используйте папку project_6
- В качестве плейбука используйте файл playbook_6.yml в каталоге project_6
- Проект должен включать в себя все необходимые действия по установке плагина Docker-compose
- Проект должен включать в себя все необходимые действия по развертыванию NextCloud на Docker с помощью Docker-compose
- Использование плагина shell и command НЕ допускается
- Приложение должно начать работать без дополнительного конфигурирования его пользователем
- Приложение должен быть доступно по протоколу http, порту 8088 и IP адресу сервера, на котором разворачивается приложение.
- Файл docker-compose.yml должен быть зашифрован.
- Проект должен включать в себя все необходимые действия по переконфигурированию реверс-прокси Nginx из Project 5
- Использование плагина shell и command НЕ допускается
- Приложение NextCloud должно быть доступно по протоколу https и порту 8443 без ошибки сертификата
- Используйте имя сайта из Project 5.
Вариант реализации:
- Из под пользователя user переходим в директорию /opt/ansible:
cd /opt/ansible
- Создаём первый playbook_6.yml в директории project_6:
vim project_6/playbook_6.yml
-
- Содержимое playbook_6.yml:
---
- name: Project 6 – Deploying applications using Docker-compose
hosts: Redos
become: true
tasks:
- name: Install python3 module pip and docker-compose
ansible.builtin.dnf:
name:
- docker-compose
- python3-pip
state: present
- name: Pip install docker
ansible.builtin.pip:
name:
- docker
- compose
- name: Creating the necessary directory structure
ansible.builtin.file:
path: "/opt/{{ item }}"
state: directory
recurse: true
group: "{{ ansible_ssh_user }}"
owner: "{{ ansible_ssh_user }}"
with_items:
- postgres
- nextcloud
- name: Start nextcloud in docker-compose
community.docker.docker_compose:
project_src: /opt/ansible/project_6
- name: Copy file site.conf by container nginx in /opt/nginx
ansible.builtin.copy:
src: file/nginx_site.conf
dest: /opt/nginx/site.conf
group: "{{ ansible_ssh_user }}"
owner: "{{ ansible_ssh_user }}"
- name: Docker container nginx restart
community.docker.docker_container:
name: nginx
image: nginx:1.27
hostname: nginx
restart: true
expose:
- "80"
- "443"
- "8433"
ports:
- "80:80"
- "443:443"
- "8443:8443"
volumes:
- /opt/ssl/:/etc/ssl/private/
- /opt/nginx/:/etc/nginx/conf.d/
restart_policy: always
- Создаём директорию для хранения файлов для данного проекта:
mkdir project_6/file
- Создаём конфигурационный файл для обратного-прокси-сервера используя Nginx:
cp project_5/file/nginx_site.conf project_6/file/nginx_site.conf
vim project_6/file/nginx_site.conf
-
- Содержимое:
- добавляем в конец файла действия необходимые действия по переконфигурированию реверс-прокси Nginx из Project 5
- Содержимое:
- Описываем docker-compose.yml - для поднятия NextCloud с базой данный PostgreSQL:
ansible-vault edit project_6/docker-compose.yml
-
- Содержимое:
version: '2'
services:
postgres:
image: postgres:16
restart: always
hostname: postgres
container_name: postgres
volumes:
- /opt/postgres/:/var/lib/postgresql/data/
ports:
- "5432:5432"
environment:
- POSTGRES_DB=nextcloud
- POSTGRES_USER=nextcloud
- POSTGRES_PASSWORD=nextcloud
nextcloud:
image: nextcloud:29
restart: always
hostname: nextcloud
container_name: nextcloud
ports:
- "8088:80"
links:
- postgres
volumes:
- /opt/nextcloud:/var/www/html
environment:
- POSTGRES_HOST=postgres
- POSTGRES_DB=nextcloud
- POSTGRES_USER=nextcloud
- POSTGRES_PASSWORD=nextcloud
- NEXTCLOUD_ADMIN_USER=admin
- NEXTCLOUD_ADMIN_PASSWORD=P@ssw0rd
- NEXTCLOUD_TRUSTED_DOMAINS=192.168.100.20 site.company.prof
- Таким образом, получается следующая структура для project_6:
- Выполняем запуск playbook-сценария:
- передаём параметр для запроса пароля на дешифрование файла с паролями;
ansible-playbook project_6/playbook_6.yml --ask-vault-pass
- Проверяем запущенные контейнеры на удалённом сервере:
- Проверяем работоспособность nextcloud по http://<IP-адрес>:8088:
- Проверяем работоспособность nextcloud по https://site.company.prof:8443:
Последнее изменение: пятница, 5 июля 2024, 10:03