playbooks | ||
roles/postgresql | ||
ansible.cfg | ||
id_ed25519_vault | ||
inventory.yml | ||
Jenkinsfile | ||
README.md |
Проект по Автоматизации Настройки 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, включая порты, параметры подключения и пути для резервного копирования.
Использование Проекта
Предварительные Требования
- Jenkins: Jenkins настроен с установленным плагином для Ansible и доступом к репозиторию проекта.
- SSH ключи: Приватный SSH-ключ (
id_ed25519_vault
) загружен в Jenkins для доступа к целевым серверам.
Настройка
- Склонируйте репозиторий и откройте inventory.yml для указания IP-адресов серверов.
- Настройте переменные в
vars/main.yml
в соответствии с вашими требованиями (например,postgres_port
,postgres_db
и т.д.).
Запуск
- Запустите pipeline в Jenkins, указав необходимые параметры (
DB_USER
,DB_NAME
,BACKUP_DIR
). - Jenkins выполнит следующие шаги:
- Инициализация и подготовка сервера.
- Настройка безопасности и конфигурации PostgreSQL.
- Создание и настройка пользователей, баз данных и резервного копирования.
Управление и Поддержка
- Рестарт PostgreSQL: При изменении конфигурации роль включает обработчик
Restart PostgreSQL
, который перезапускает базу данных для применения изменений. - Резервное Копирование: Задача
backup.yml
автоматически выполняет резервное копирование базы данных в указанный каталог (backup_dir
).