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