Я работаю в небольшой команде разработчиков, и наша текущая инфраструктура настроена на GitHub для кода и CircleCI для развертывания их на наших серверах Ubuntu DigitalOcean всякий раз, когда что-то объединяется в ветку develop (отправляется на сервер Develop) и ветку master (отправляется на сервер Prod).
Становится слишком много времени тратить на постоянное развертывание 2 новых серверов для каждого продукта и их настройку в веб-серверы. Я уже перенес базы данных в кластер Managed DB, чтобы сэкономить время. Есть ли более эффективный способ сделать это вместо того, чтобы развертывать новый дроплет, устанавливать все и настраивать все, делать обновления и разбираться с SSH и разрешениями и т. д. и т. п.
Сейчас у меня около 8 дроплетов (еще больше облачных продуктов на подходе!), и у меня просто нет времени посещать все эти дроплеты, чтобы что-то сортировать, добавлять или обновлять.
Я в основном ищу, чтобы мне указали правильное направление, в котором я смогу продолжить исследования и почитать. Похоже, автоматизация большинства из этого возможна, но я не знаю, как действовать, поскольку есть много запутанной и противоречивой информации о том, какие сервисы использовать.
решение1
Ключевые слова, которые вы ищете, — это infrastructure as code
и configuration management
.
Используйте такой infrastructure as code
инструмент, какТерраформироватьдля развертывания ресурсов в Digital Ocean используйте такой configuration management
инструмент, какАнсибльдля настройки виртуальных машин (настройка приложения, доступ по ssh и т. д.). В зависимости от сложности конфигурации также может быть вариантом пропустить управление конфигурацией и использовать моментальные снимкисделано вручнуюили с помощью такого инструмента, какУпаковщик.