Тестовое задание по автоматизации.
Необходимо создать три веб сервера: один FrontEnd и два BackEnd.
На FrontEnd Веб страничка, запрашивающая ввести два числа, и кнопка «Посчитать».
Веб сервера на NGINX или Apache, страничка на PHP и/или Python, может что-нибудь своё, главное результат.
- При нажатии кнопки «Посчитать», FrontEnd сервер должен через первый BackEnd посчитать сумму чисел, а через второй их перемножение и отобразить результат.
- На страничке необходимо отобразить имена серверов, на которых осуществлялись вычисления, причем имя сервера должен сообщить именно BackEnd.
- Собрать докер образы для FrontEnd и BackEnd с "голой" ОС Linux.
- Запустить контейнеры так, чтобы ими можно было управлять через Ansible.
- Удаленно настроить сервера средствами Ansible.
- Всё должно развернуться автоматически средствами Jenkins при пуше в GitHub.
- Установил Jenkins, Docker и Ansible.
- Связал Jenkins со своей учётной записью GitHub (создал Personal access tokens в GitHub и использовал его в Jenkins).
- Создал SSH ключи для Ansible и добавил приватный ключ в Jenkins.
- Задал путь к Ansible в Jenkins.
- В Jenkins создал Job automation-t2 и настроил на этот репозиторий в GitHub.
- Запуск задачи начинается с Jenkinsfile файла, в котором используются команды для Docker-compose и Ansible.
Создан Dockerfile с Debian 11, OpenSSH сервером, python3 и публичным ssh ключом Ansible.
Также был создан Docker-compose файл, в котором происходит сборка необходимых контейнеров и запуск SSH сервера.
Настройка происходит посредством плейбука.
Для FrontEnd сервера был использован Nginx с конфигом и сайтом из проекта automation-t1.
Для BackEnd серверов использовался php-fpm.
Выполнение задачи состоит из стадий описанных в Jenkinsfile файле:
- Prebuild - остановка существующих контейнеров и удаление volume.
- Build - сборка контейнеров с использованием docker-compose.yml.
- Test - используется плейбук ping.yml для проверки доступности серверов и возможности выполнения команд Ansible.
- Deploy - настройка серверов средствами Ansible.


