Как можно настроить автоматическое развертывание на сервере, который находится в изолированной сети?

Есть два сайта: один на Wordpress, другой на Битрикс. Важно отметить, что их размещение происходит в закрытом контуре, где доступ к серверу по SSH будет предоставлен только на время настройки и не будет доступен в рабочем режиме. При этом разрешено устанавливать любое ПО, за исключением руткитов и веб-файловых менеджеров. Как можно организовать процесс развертывания релизов для этих сайтов, не требуя физического доступа к закрытому контуру и участия людей с доступом?
  • 21 января 2025 г. 8:14
Ответы на вопрос 2
Организация автоматического развертывания на сервере в изолированной сети требует тщательного планирования, особенно с учетом ограниченной возможности доступа по SSH. Вот несколько шагов и рекомендаций, которые могут помочь решить эту задачу:

### 1. Подготовка к работе

- **Создание агента развертывания:** Вам нужно создать скрипты и/или приложения, которые будут работать на сервере и выполнять автоматическое развертывание. Эти агенты могут выполнять обновления кода, зависимостей и осуществлять запуск скриптов при развертывании.
  
- **Изолированная установка:** На сервере установите следующие инструменты, которые могут помочь в автоматизации:
  - Механизмы для отслеживания изменений, такие как `Git` (если вы сможете его использовать в изолированной сети).
  - Менеджеры зависимостей, такие как `Composer` для PHP-проектов (например, WordPress), если это возможно.
  
### 2. Предварительно загруженные пакеты

- **Сборка пакетов:** Подготовьте и протестируйте пакеты для вашего проекта (например, архивы с файлами WordPress и Битрикс), которые можно будет загружать на сервер. Убедитесь, что они включают все необходимые зависимости.

- **Скрипты и миграции:** Если ваши приложения зависят от базы данных, подготовьте SQL-скрипты для создания и обновления базы данных, а также изменения структур.

### 3. Организация процесса развертывания

- **Наблюдатели и триггеры:** Настройте агента развертывания на сервере на основе сценариев:
  - Периодически проверять наличие новых релизов из предварительно загруженного файлового сервиса (например, через cron).
  - Проверка изменений в папке на удаленном файловом хранении, если возможно передавать данные снаружи по контрольным точкам.
  
- **Локальная интеграция:** Если возможно, используйте конвейеры непрерывной интеграции (например, Jenkins, GitLab CI/CD) вне изолированной сети для создания релизов. Затем пользователь или робот может загружать их в специальное хранилище или даже флеш-накопители, которые потом могут быть перенесены в изолированную сеть.

### 4. Обмен данными

- **Экспорт и импорт данных:** После того как вы настроите автоматическое развертывание, продумайте процесс, как будет происходить обмен данными между вашей изолированной сетью и внешней средой. Это может быть осуществлено через регулярный перенос накопленных данных (логов, бэкапов и т.д.).

### 5. Безопасность

- **Логи и аудиты:** Настройте логирование всех действий, которые выполняет агент развертывания, чтобы иметь возможность отслеживать действия и последствия.
- **Регулярные обновления:** Убедитесь, что все используемые вами инструменты имеют последние обновления безопасности.

### 6. Документация и поддержка

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

Таким образом, требуется сотрудничество между поэтапной настройкой и закономерным управлением самими процессами на сервере. Важно как можно тщательнее протестировать систему до ввода в эксплуатацию и обеспечить четкое взаимодействие с пользователями и администраторами.
Можно попробовать делать git pull в релизной ветке по крону и, если есть новый код, пересобирать/перезапускать приложение.
Похожие вопросы