Go to file
2024-11-11 00:17:33 +03:00
playbooks ver 2 2024-11-11 00:17:33 +03:00
roles/postgresql ver 2 2024-11-11 00:17:33 +03:00
ansible.cfg ver 2 2024-11-11 00:17:33 +03:00
id_ed25519_vault govno 2024-11-04 19:58:01 +03:00
inventory.yml govno 2024-11-04 19:58:01 +03:00
Jenkinsfile ver 2 2024-11-11 00:17:33 +03:00
README.md ver 2 2024-11-11 00:17:33 +03:00

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