62 lines
4.7 KiB
Markdown
62 lines
4.7 KiB
Markdown
# Проект по автоматизации настройки 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`, можно выбрать конкретные задачи, и они будут выполнены в этом порядке.
|