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

Проект по Автоматизации Настройки PostgreSQL

Этот проект представляет собой систему для автоматизированной установки, настройки и управления базой данных PostgreSQL с использованием Ansible и Jenkins. Включает в себя Ansible playbook, роли для управления конфигурацией PostgreSQL и Jenkins pipeline.


Описание Функционала

Проект использует:

  • Jenkins — для запуска CI/CD pipeline, обеспечивая контроль версий, автоматизацию тестов и упрощение процесса деплоя.
  • Роли и Playbook Ansible — для настройки и поддержания PostgreSQL, включая управление пользователями, доступом, резервным копированием и настройками безопасности.

Структура Проекта

  • 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.

Детали Роли PostgreSQL

Файлы Задач (tasks)

  • setup.yml — начальная установка и настройка PostgreSQL.
  • initialize.yml — инициализация PostgreSQL (создание каталогов и базовая настройка).
  • configure.yml — настройки PostgreSQL, такие как лимиты на подключение и параметры памяти.
  • users.yml — управление пользователями и привилегиями.
  • databases.yml — создание и настройка баз данных.
  • insert_data.yml — заполнение базы начальными данными.
  • open_firewall.yml — настройка брандмауэра для PostgreSQL.
  • backup.yml — настройка и выполнение резервного копирования базы данных.

Шаблоны (templates)

  • pg_hba.conf.j2 и postgresql.conf.j2 — Jinja2-шаблоны конфигурационных файлов PostgreSQL. Позволяют динамически генерировать конфигурацию на основе параметров безопасности и производительности.

Переменные (vars)

  • 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).