Skip to content

Azmekin/DevOpsPostgresPro

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 

Repository files navigation

ОПИСАНИЕ

Средство установки Postgresql на удаленные сервеса по протоколу ssh. Поддерживаемые операционные сисетмы: RedOS 8 (релиз:20240218.1), Astra Linux Common Edition (Релиз: 2.12.46.6-17.04.2023_15.09), язык - python 3.11

УСТАНОВКА

  1. Установите на машину, с которой будет запускаться скрипт python 3.11
  2. Скачайте файлы проекта под средством git или иным способом
  3. Установите зависимости из req.txt
  4. Запустите main.py

ПОДГОТОВКА ПЕРЕД ИСПОЛЬЗОВАНИЕМ

На удаленный хост должен быть установлен ssh сервер, разрешено подсоединение root-пользователя, должен принимать внешние подключения и иметь доступ в сеть. Опционально - разрешен вход без пароля. Не должно быть папки /usr/local/pgsql/data

СЦЕНАРИИ

Доступна развертка для РедОС и Астра Линукс. На данный момент доступна установка только под root. Postgresql устанавливается только 16.2 путем сборки из исходников. В случае необходимости ввода только адреса, допускается работа на стандартных значениях (выбираются путем пропуска параметра), при включеной аутентификации на ssh сервере без пароля.

УСТРАНЕНИЕ ВОЗМОЖНЫХ ПРОБЛЕМ

При неработоспособности скрипта возможен ряд действий, которые могут изменить это:

  1. Установка компилятора с дополнительными библиотеками вручную
  2. Проверка настройка sshd.conf
  3. Ввод ip адреса заместо доменного имени
  4. Использование РедОС и Астра Линукс. Хоть инструментарий стандартен для RedHat и Ubuntu\Debian соответственно, однако среди дистрибутивов есть различия.
  5. Использовать pycharm для старта
  6. Читать логи

Тестирование проводилось для заявленных в описании ОС, скрипт отрабатывал штатно.

АРХИТЕКТУРНЫЕ РЕШЕНИЯ И ВОЗНИКШИЕ ВОПРОСЫ

  1. Какие ОС использовать?

Т.к. Postgrespro ориентируется на Российский рынок, а их продукция применяется в ИСПДн и ГИС, то основные пользователи будут использовать отечественные ОС. Поэтому выбор пал на две самых распространенных ОС с разными пакетными менеджерами.

  1. Какой postgres ставить?

Можно было пойти по простому пути, и использовать репозитории пакетных менеджеров, однако они содержат неактуальные версии. Также предполагаю, что DevOps должен разворачивать тестовые билды, которые как раз и собираются из исходников.

  1. Сколько параметров должно быть введено пользователем и как проводить аутентификацию?

По условию должен быть 1 параметр - имя\адрес машины. Не понятно, он ТОЛЬКО один, или минимум 1? Есть вариант сценария, когда заполняется только один пункт (вход под рутом без пароля по порту 22 на редос), что соответствует данному варианту событий. Но также для нормальной работы есть сменяемые параметры порта, пароля, ОС. Не внедрено хранение конфигурации подключения в файле\сертификатах, т.к. безопасная разработка, описанная в ГОСТ Р 58412-2019 и TOP-10 OWASP требований к безопасной разработке выделяют угрозу утечки конфигурационных файлов и необходимость экранирования данных. Поэтому хранения данных для подключение не применяется.

  1. От какого пользователя должна быть установка?

Был выбран самый рабочий вариант - рут-пользователь. Скрипт доступен для масштабирования под использованием администратором, но ОС показали нестабильную работу на момент записи postgres.service (отрабатывает не каждый раз), из-за чего на данный момент с целью улучшения пользовательского опыта данная функция отключена.

  1. Как выводить логи и процесс выполнения?

Выводить рукописные этапы или весь вывод с консоли удаленного хоста? Или что-то писать в файл? В конечном итоге реализован вывод из консоли, разделенный рукописными этапами для лучшего понимания происходящего у оператора скрипта.

  1. Какой инструментарий выбрать?

Обычно применяется ansible для таких задач, начал смотреть ansible python api, но при подгрузке пакетов иногда может возникать ошибка, что негативно скажется на пользовательском опыте.

  1. Как писать комментарии?

Хоть решение для Российской компании, и читать комментарии на Русском проще, международный стандарт - английский. Поэтому комментарии на английском.

  1. Как провести тестирование работы Posgresql

Помимо стандартного Select 1, еще вывожу информацию о Postgresql

  1. Конфигурация Postgresql

О конфигурации не было ничего сказано, поэтому добавил postgres.service для срабатывания автозапуска

  1. Как описывать процесс установки?

Решил описать процесс абстрактно, чтобы не было разночтений в командах как pip install и pip3 install

ДОРОЖНАЯ КАРТА

Скрипт может быть масштабирован под большее количество ОС, а также установку от обычного администратора

About

Тестовое задание для PostgresPro

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages