Рейтинг:0

Лучшие решения для автоматического развертывания нескольких серверных приложений

флаг cn

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

Раньше я делал это с помощью простых bash-скриптов, которые запускались в фоновом режиме, автоматически проверяли наличие обновлений и развертывали их, если в удаленном репозитории есть более новая версия.

Я уже немного заглянул в тему и узнал про docker и docker, kubernetes и docker compose. Все они поначалу казались идеальными, но при более глубоком изучении темы я не увидел в них полной необходимости, так как приложения, которые у меня есть, не нужно изолировать или запускать на полностью отдельном экземпляре от основных операционных систем, приложения могут быть запущены на каждом основном ядре.

Теперь я хотел бы знать, есть ли какие-либо инструменты или приложения для достижения именно этого, мне особенно нужно

  • Извлечь из удаленного репозитория, если есть какие-либо обновления (также можно выполнить с помощью действий Github, чтобы вызвать действие на сервере)
  • Автоматически создавать новый исходный код и перезапускать приложение.
  • Перезапустите приложение, если оно аварийно завершает работу или происходит сбой системы по какой-либо причине.
Рейтинг:2
флаг cz

Вполне приемлемо развернуть приложение без контейнеров. Мы делаем это всегда, и процедуры хорошо известны и задокументированы.

Из вашего описания видно, что вы хотите организовать развертывание своего приложения и для этого вам нужен инструмент. Я бы предложил начать с чего-то вроде ansible. Это очень просто начать но будет масштабироваться настолько далеко вверх/вниз, насколько вы можете себе представить. Однако я бы пока не стал связываться со специфическими для RHEL компонентами, такими как Tower или Automation Platform. Пропустите все подобные вещи, пока у вас не будет очень хорошего понимания Ansible.

Чтобы продемонстрировать простоту, вот написанный мною сборник игр Ansible, который устанавливает все доступные обновления для самых разных дистрибутивов Linux. Я уверен, что вы ничего не поймете, но часть, которую вы понимаете, будет совершенно очевидной.

---
- хозяева: все
  стратегия: бесплатно
  задачи:
    - блокировать:
      - имя: Обновить все пакеты
        днф:
          имя: "*"
          состояние: последний
          update_cache: да

      - название: Автоудаление старых пакетов
        днф:
          автоудаление: да

      когда: ansible_pkg_mgr == 'dnf'

    - блокировать:
      - имя: Обновить все пакеты
        ням:
          имя: "*"
          состояние: последний
          update_cache: да

      - название: Автоудаление старых пакетов
        ням:
          автоудаление: да

      когда: ansible_pkg_mgr == 'ням'

    - блокировать:
      - имя: Обновить все пакеты
        подходящий:
          имя: "*"
          состояние: последний
          update_cache: да

      - название: Автоудаление старых пакетов
        подходящий:
          автоудаление: да

      когда: ansible_pkg_mgr == 'подходящий'

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.