courseworkrep/README.md

74 lines
5.5 KiB
Markdown
Raw Normal View History

2024-12-08 19:11:48 +00:00
# Проект по Автоматизации Настройки PostgreSQL
2024-11-10 21:17:33 +00:00
2024-12-08 19:11:48 +00:00
Этот проект представляет собой систему для автоматизированной установки, настройки и управления базой данных PostgreSQL с использованием **Ansible** и **Jenkins**. Включает в себя Ansible playbook, роли для управления конфигурацией PostgreSQL и Jenkins pipeline.
2024-11-10 21:17:33 +00:00
2024-12-08 19:11:48 +00:00
---
2024-11-10 21:17:33 +00:00
2024-12-08 19:11:48 +00:00
## Описание Функционала
2024-11-10 21:17:33 +00:00
2024-12-08 19:11:48 +00:00
Проект использует:
2024-11-10 21:17:33 +00:00
2024-12-08 19:11:48 +00:00
- **Jenkins** — для запуска CI/CD pipeline, обеспечивая контроль версий, автоматизацию тестов и упрощение процесса деплоя.
- **Роли и Playbook Ansible** — для настройки и поддержания PostgreSQL, включая управление пользователями, доступом, резервным копированием и настройками безопасности.
2024-11-10 21:17:33 +00:00
2024-12-08 19:11:48 +00:00
---
2024-11-10 21:17:33 +00:00
2024-12-08 19:11:48 +00:00
## Структура Проекта
2024-11-10 21:17:33 +00:00
2024-12-08 19:11:48 +00:00
- **`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.
2024-11-10 21:17:33 +00:00
2024-12-08 19:11:48 +00:00
---
2024-11-10 21:17:33 +00:00
2024-12-08 19:11:48 +00:00
## Детали Роли PostgreSQL
2024-11-10 21:17:33 +00:00
2024-12-08 19:11:48 +00:00
### Файлы Задач (`tasks`)
2024-11-10 21:17:33 +00:00
2024-12-08 19:11:48 +00:00
- **`setup.yml`** — начальная установка и настройка PostgreSQL.
- **`initialize.yml`** — инициализация PostgreSQL (создание каталогов и базовая настройка).
- **`configure.yml`** — настройки PostgreSQL, такие как лимиты на подключение и параметры памяти.
- **`users.yml`** — управление пользователями и привилегиями.
- **`databases.yml`** — создание и настройка баз данных.
- **`insert_data.yml`** — заполнение базы начальными данными.
- **`open_firewall.yml`** — настройка брандмауэра для PostgreSQL.
- **`backup.yml`** — настройка и выполнение резервного копирования базы данных.
2024-11-10 21:17:33 +00:00
2024-12-08 19:11:48 +00:00
### Шаблоны (`templates`)
2024-11-10 21:17:33 +00:00
2024-12-08 19:11:48 +00:00
- **`pg_hba.conf.j2`** и **`postgresql.conf.j2`** — Jinja2-шаблоны конфигурационных файлов PostgreSQL. Позволяют динамически генерировать конфигурацию на основе параметров безопасности и производительности.
2024-11-10 21:17:33 +00:00
2024-12-08 19:11:48 +00:00
### Переменные (`vars`)
2024-11-10 21:17:33 +00:00
2024-12-08 19:11:48 +00:00
- **`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`).