courseworkrep/README.md
2024-11-11 00:17:33 +03:00

62 lines
4.7 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**. Он включает пайплайн Jenkins и Ansible плейбук с ролью для управления PostgreSQL.
## Структура проекта
- **Jenkinsfile** — скрипт для автоматизации пайплайна Jenkins, который позволяет клонировать репозиторий, расшифровывать SSH-ключи, запускать Ansible плейбук и выполнять определенные задачи роли PostgreSQL.
- **ansible.cfg** — конфигурационный файл Ansible, где указаны настройки по умолчанию для выполнения плейбуков.
- **inventory.yml** — файл инвентаря Ansible, который определяет хосты, на которых будут выполняться плейбуки.
- **playbooks/install_postgresql.yml** — основной Ansible плейбук для установки и настройки PostgreSQL.
- **roles/postgresql** — Ansible роль для управления PostgreSQL, которая содержит:
- **tasks/** — каталог с задачами:
- `setup.yml` — установка необходимых пакетов PostgreSQL.
- `open_firewall.yml` — настройка правил брандмауэра для доступа к базе данных.
- `initialize.yml` — инициализация новой базы данных.
- `configure.yml` — настройка параметров конфигурации PostgreSQL.
- `databases.yml` — создание и управление базами данных.
- `users.yml` — создание и управление пользователями базы данных.
- `backup.yml` — резервное копирование базы данных.
- **templates/** — шаблоны конфигурационных файлов для PostgreSQL:
- `pg_hba.conf.j2` — шаблон файла для управления доступом к базе данных.
- `postgresql.conf.j2` — шаблон основного конфигурационного файла PostgreSQL.
- **vars/** — переменные, используемые в роли PostgreSQL.
## Запуск проекта
### Предварительные требования
- **Jenkins** с установленным Ansible плагином
- Доступ к хостам, указанным в `inventory.yml`
### Пайплайн Jenkins
Файл **Jenkinsfile** определяет этапы пайплайна для автоматизированного развертывания PostgreSQL:
1. **Клонирование репозитория** — загрузка кода проекта.
2. **Расшифровка SSH-ключа** — декодирование зашифрованного ключа с использованием Ansible Vault.
3. **Запуск плейбука PostgreSQL** — выполнение Ansible плейбука для развертывания и настройки PostgreSQL на целевых хостах.
### Параметры запуска
Пайплайн поддерживает следующие параметры:
- **DB_USER** — имя пользователя PostgreSQL.
- **DB_NAME** — название базы данных.
- **BACKUP_DIR** — директория для хранения резервных копий.
- **TASKS** — список задач для выполнения, указанный через запятую (например, `setup,backup`).
### Порядок задач
По умолчанию задачи выполняются в следующем порядке:
1. `setup` — установка необходимых пакетов.
2. `firewall` — настройка брандмауэра.
3. `init` — инициализация базы данных.
4. `configure` — конфигурация базы данных.
5. `database` — создание базы данных.
6. `user` — управление пользователями.
7. `backup` — резервное копирование данных.
При указании параметра `TASKS`, можно выбрать конкретные задачи, и они будут выполнены в этом порядке.