Final_work
README.md
Дипломная работа по профессии "Системный администратор" SYS-22 Концевой Н.Ю.
"Создание инфраструктуры в облаке"
Задача
Ключевая задача — разработать отказоустойчивую инфраструктуру для сайта, включающую мониторинг, сбор логов и резервное копирование основных данных. Инфраструктура должна размещаться в Yandex Cloud и отвечать минимальным стандартам безопасности.
1. Для выполнения задания был написан файл Terraform main.tf для создания следующих ресурсов:
1.1. Виртуальные машины
- nginx1
- nginx2
- zabix
- elasticsearc
- kibana
- bastion
Скриншот(-ы)
1.2. Балансировщик нагрузки для вебсерверов
Скриншот(-ы)
1.3. Группы безопасности для ограничения доступности хостов по определенным портам
- nginx-sg (nginx1-2 разрешен доступ через балансировщик на порты 22, 80, 10050)
- zabbix-sg (разрешен доступ на порты 22, 8080, 10051)
- elastic-sg (разрешен доступ на порты 22, 10050, 9200)
- kibana-sg (разрешен доступ на порты 22, 10050, 5601)
- bastion-sg (разрешен доступ на 22 порт)
Скриншот(-ы)
1.4. Расписание создания снапшотов дисков со всех виртуальных машин
- создано расписание на ежедневное создание снапшотов в 20:00 по московскому времени
- хранение снапшотов 7 дней
Скриншот(-ы)
1.5. Сеть и 4 подсети в разных зонах доступности для обеспечения отказоустойчивости.
Pаспределение ВМ в сети:
- nginx1 (зона а, приватная сеть, имеет внутренний IP 192.168.1.11)
- nginx2 (зона b, приватная сеть, имеет внутренний IP 192.168.2.22)
- zabix (зона c, публичная сеть, имеет внутренний IP 192.168.3.33 и внешний IP <назначается автоматически> )
- elasticsearc (зона d, приватная сеть, имеет внутренний IP 192.168.4.44)
- kibana (зона c, публичная сеть, имеет внутренний IP 192.168.3.34 и внешний IP <назначается автоматически> )
- bastion (зона c, публичная сеть, имеет внутренний IP 192.168.33.33 и внешний IP <назначается автоматически> )
Скриншот(-ы)
1.6. Шлюз (для доступа в интернет ВМ расположенных в приватных сетях)
Скриншот(-ы)
2. Установка необходимых программ для подготовленной инфраструктуры осуществлялась с помощью плэйбуков через Ansible:
*Ansible настроен на Bastion host и вся установка происходит с него.
2.1. inventory.ini
- содержит список удаленных хостов для подключения к ним и установки необходимых программ
2.2. ping_pb.yml (был добавлен для удобства)
- проверяет доступность хостов
Скриншот(-ы)
2.3. nginx_pb.yml
- устанавливает nginx на две виртуальные машины состоящие в группе web_servers
- копирует c локального хоста страницу для отображения при обращении на ip адрес балансировщика. *Проверка работоспособности тут
Скриншот(-ы)
2.4. zabbix_pb.yml
- добавляет репозиторий zabbix
- устанавливает на хост zabbix - zabbix server, zabbix agent, mysql, nginx и прочие зависимости
- создает базу данных, пользователя, задает пароль
Скриншот(-ы)
2.5. zabbix_agent_pb.yml
- добавляет репозиторий zabbix
- устанавливает zabbix agent на все хосты
- вносит корректировку в файл конфигурации
*Ссылка на админку zabbix
Скриншот(-ы)
2.6. elasticsearch_pb.yml
- скачивает и добавляет ключ gpg elasticsearch
- добавляет репозиторий elasticsearch 8.x
- устанавливает elasticsearch и зависимости
- корректирует конфигурационный файл
- выводит на экран пароль пользователя и токен для подключения kibana
Скриншот(-ы)
2.7. kibana_pb.yml
- скачивает и добавляет ключ gpg elasticsearch
- добавляет репозиторий elasticsearch 8.x
- устанавливает kibana и зависимости
- корректирует конфигурационный файл
- выводит на экран 6-ти значный код для подтверждения подключения к elastic
*Ссылка на админку kibana
Скриншот(-ы)
2.8. filebeat_pb.yml
- скачивает и добавляет ключ gpg elasticsearch
- добавляет репозиторий elasticsearch 8.x
- устанавливает filebeat и зависимости
- копирует с локального хоста конфигурационный файл
*Для подключения filebeat к elasticsearh перед запуском плейбука необходимо указать пароль для авторизации в файле ./filebeat_conf/filebeat.yml
Скриншот(-ы)