courseworkrep/README.md
2024-11-13 23:18:44 +03:00

74 lines
5.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Проект по Автоматизации Настройки PostgreSQL
Этот проект представляет собой систему для автоматизированной установки, настройки и управления базой данных PostgreSQL с использованием **Ansible** и **Jenkins**. Включает в себя Ansible playbook, роли для управления конфигурацией PostgreSQL и Jenkins pipeline.
---
## Описание Функционала
Проект использует:
- **Jenkins** — для запуска CI/CD pipeline, обеспечивая контроль версий, автоматизацию тестов и упрощение процесса деплоя.
- **Роли и Playbook Ansible** — для настройки и поддержания PostgreSQL, включая управление пользователями, доступом, резервным копированием и настройками безопасности.
---
## Структура Проекта
- **`Jenkinsfile`** — Определяет pipeline для Jenkins. Этот файл задает шаги для клонирования репозитория, расшифровки SSH-ключей, выполнения Ansible playbook и запуска задач по настройке и тестированию PostgreSQL.
- **`ansible.cfg`** — Конфигурационный файл Ansible, определяющий параметры по умолчанию для выполнения плейбуков.
- **`inventory.yml`** — Указывает IP-адреса или доменные имена серверов, на которых будет развернут PostgreSQL.
- **`playbooks/install_postgresql.yml`** — Ansible playbook для установки и начальной настройки PostgreSQL.
- **`roles/postgresql/`** — Роль Ansible с задачами, обработчиками, переменными и шаблонами для управления PostgreSQL.
---
## Детали Роли PostgreSQL
### Файлы Задач (`tasks`)
- **`setup.yml`** — начальная установка и настройка PostgreSQL.
- **`initialize.yml`** — инициализация PostgreSQL (создание каталогов и базовая настройка).
- **`configure.yml`** — настройки PostgreSQL, такие как лимиты на подключение и параметры памяти.
- **`users.yml`** — управление пользователями и привилегиями.
- **`databases.yml`** — создание и настройка баз данных.
- **`insert_data.yml`** — заполнение базы начальными данными.
- **`open_firewall.yml`** — настройка брандмауэра для PostgreSQL.
- **`backup.yml`** — настройка и выполнение резервного копирования базы данных.
### Шаблоны (`templates`)
- **`pg_hba.conf.j2`** и **`postgresql.conf.j2`** — Jinja2-шаблоны конфигурационных файлов PostgreSQL. Позволяют динамически генерировать конфигурацию на основе параметров безопасности и производительности.
### Переменные (`vars`)
- **`vars/main.yml`** — определяет переменные PostgreSQL, включая порты, параметры подключения и пути для резервного копирования.
---
## Использование Проекта
### Предварительные Требования
1. **Jenkins**: Jenkins настроен с установленным плагином для Ansible и доступом к репозиторию проекта.
2. **SSH ключи**: Приватный SSH-ключ (`id_ed25519_vault`) загружен в Jenkins для доступа к целевым серверам.
### Настройка
1. Склонируйте репозиторий и откройте **inventory.yml** для указания IP-адресов серверов.
2. Настройте переменные в `vars/main.yml` в соответствии с вашими требованиями (например, `postgres_port`, `postgres_db` и т.д.).
### Запуск
1. Запустите pipeline в Jenkins, указав необходимые параметры (`DB_USER`, `DB_NAME`, `BACKUP_DIR`).
2. Jenkins выполнит следующие шаги:
- Инициализация и подготовка сервера.
- Настройка безопасности и конфигурации PostgreSQL.
- Создание и настройка пользователей, баз данных и резервного копирования.
---
## Управление и Поддержка
- **Рестарт PostgreSQL**: При изменении конфигурации роль включает обработчик `Restart PostgreSQL`, который перезапускает базу данных для применения изменений.
- **Резервное Копирование**: Задача `backup.yml` автоматически выполняет резервное копирование базы данных в указанный каталог (`backup_dir`).