как автоматизировать установку серверов с помощью виртуализации/LAMP (небольшой IaC)?

как автоматизировать установку серверов с помощью виртуализации/LAMP (небольшой IaC)?

Как автоматизировать установку сервера? Какая инфраструктура/системы соответствуют нашим потребностям?

У нас более 10 физических серверов с более чем 100 виртуальными машинами, в основном LAMP. Не слишком много, но и не все, что может работать само по себе. Все серверы имеют виртуализацию KVM. Мы размещаем различные индивидуальные приложения для наших клиентов, которые мы часто модифицируем. Так что это не единственное приложение, которое нужно масштабировать. Проектные группы работают напрямую с клиентами и с виртуальными машинами, и это требование.

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

Я хотел бы установить процедуру переустановки по крайней мере каждые 3 месяца и по требованию. Переустановка должна начинаться с репозитория кода и резервной копии. Это не должно быть дублированием VM.

Мы оцениваем, что это будет стоить нам около 6 человеко-месяцев каждые 3 месяца в текущей установке, если делать это вручную. Как мы можем сократить это время, а также повысить повторяемость процесса?

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

Наши узлы в основном LAMP с двумя системами, имеющими более 1 ТБ структурированных данных БД, несколько >200 ГБ и около 50 небольших, пользовательских виртуальных машин. Мы можем легко запланировать запланированный простой каждой системы, поэтому это не вопрос высокой доступности во время переустановки.

Нам просто нужно максимально автоматизировать переустановку.

решение1

Вам понадобится фреймворк управления конфигурацией, такой как Ansible, Saltstack, Puppet или Chef.

Это инструмент для управления и применения конфигураций. Однако выбор самого инструмента — это незначительная часть проекта.

Вам необходимо разработать и внедрить процесс, в котором все изменения в инфраструктуре будут управляться с помощью этого инструмента.

Это требует:

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

Вам также следует рассмотреть возможность унификации инфраструктуры программного стека.

Если каждая виртуальная машина имеет немного отличающуюся конфигурацию программного обеспечения, вам придется либо

  • много дублирующегося кода в коде управления конфигурацией для разных установок
  • сложная логика для выбора того, как применить ту или иную конфигурацию

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

решение2

Есть ли у вашего облака ключ API?

Большинство облаков имеют LAMP-изображения, доступные одним щелчком мыши, например

Вультр:https://www.vultr.com/apps/lamp/

Цифровой океан:https://marketplace.digitalocean.com/apps/lamp

Линод:https://www.linode.com/docs/guides/lamp-stack-marketplace-app/

Если нет, то мой абсолютный фаворит — VestaCP.https://vestacp.com/install/

Иhttps://hestiacp.com/

Оба добавляют apache backend, nginx front-end, MySQL/mariadb/postgres и php/php-fpm. Все опционально тоже.

Для обновлений я бы создал отдельный сервер, поместил бы на него общий открытый ключ SSH, /root/.ssh/authorized_keysкоторый есть на отдельном сервере, и который мог бы автоматически входить на каждый сервер, что-то вроде:

INSTANCES=(
10.0.0.5
10.0.0.6
10.0.0.7
...
)


for INSTANCE in "${INSTANCES[@]}"; do
    ssh root@${INSTANCE} /bin/bash -c "apt update -y && apt upgrade -y"
done

По сути, это Terraform, Kubernetes и т. д. «сделай сам».

Также на GitHub есть множество руководств, посвященных облачным технологиям, например:

Еще один Digital Ocean:https://github.com/ethanbeyer/DigitalOcean-Droplet-Setup

AWS-один:https://github.com/elionaz/aws-LAMP/blob/master/install_lamp.sh

Связанный контент