Рейтинг:-1

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

флаг eg

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

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

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

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

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

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

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

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

флаг eg
Может ли человек, дающий отрицательный голос, прокомментировать причину? Это не вежливо...
Рейтинг:3
флаг us

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

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

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

Это требует:

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

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

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

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

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

флаг eg
Спасибо за ответ. Какой фреймворк вы бы порекомендовали рассмотреть в первую очередь в этом сценарии? Поддерживают ли они установку виртуализации хоста?
флаг us
У меня есть только опыт работы с Ansible. По крайней мере, Ansible является расширяемым, и у него есть активное сообщество, которое предоставляет множество видов плагинов для разных целей. Однако вам следует провести собственный анализ/сравнение продуктов, потому что невозможно задать достаточно подробный вопрос, чтобы учесть каждую деталь вашего окружения.
флаг eg
Я быстро просмотрел ansible wiki, и, похоже, он ориентирован на управление серверами, а не на переустановку. По вашему опыту, насколько хорошо это подходит для задачи настройки виртуальной машины с нуля? Моя цель — заменить непрерывные изменения виртуальных машин чистой переустановкой из системы управления версиями.
флаг us
Я сам использую Ansible для установки серверов VPS с нуля с программным стеком и конфигурацией, которые мне нужны. Существуют также плагины для предоставления серверов VPS в AWS и т. д. Я совершенно уверен, что они хорошо подходят для вашего варианта использования. Однако все зависит от конкретного варианта использования и деталей. Вы должны попробовать это сами.
флаг eg
Теро, спасибо за помощь. Я попробую Ansible.
Рейтинг:0
флаг mx

Есть ли в вашем облаке ключ 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, интерфейс nginx, MySQL/mariadb/postgres и php/php-fpm. Все опционы тоже.

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

ЭКЗЕМПЛЯРЫ=(
10.0.0.5
10.0.0.6
10.0.0.7
...
)


для INSTANCE в "${INSTANCES[@]}"; делать
    ssh root@${INSTANCE} /bin/bash -c "подходящее обновление -y && подходящее обновление -y"
сделано

Это в значительной степени Terraform, Kubernetes и т. д. Сделай сам.

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

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

AWS: https://github.com/elionaz/aws-LAMP/blob/master/install_lamp.sh

флаг eg
Я хотел бы иметь возможность делать установки на голое железо. Каждая виртуальная машина имеет свою собственную конфигурацию, они различаются в зависимости от размера БД и т. д. Некоторым системам требуется более одной полной машины. Я хотел бы иметь возможность установить чистый Debian или другой дистрибутив, выбранный командой, и перенести всю информацию, относящуюся к vm, в наш репозиторий кода.

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

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