Назад | Перейти на главную страницу

Как автоматизировать развертывание виртуальной машины + настройку без лишних накладных расходов

Этот вопрос больше предназначен для получения совета. Я уверен, что однозначного ответа на это нет.

Ситуация

Наш внутренний ИТ-отдел отвечает за создание виртуальных машин (в основном Windows Server), которые требуются бизнесу. То, что происходит внутри виртуальных машин, не является нашей заботой, но мы несем ответственность до уровня ОС; мы просто развертываем его как черный ящик и доставляем его бизнесу (что-то вроде хостинговой компании), и они устанавливают на него приложения. Однако нам необходимо выполнить некоторые агенты и базовые настройки на каждой развертываемой нами виртуальной машине (например, установка антивируса, агент мониторинга, присоединение к домену и т. Д.). Большинство виртуальных машин совершенно не связаны. Мы развертываем около 5 из них в месяц.

В настоящее время мы используем шаблоны Azure ARM для развертывания виртуальных машин в Azure (с помощью Az CLI), что уже позволяет сэкономить время, но настройка после этого представляет собой всего лишь повторяющуюся утомительную ручную работу. Нам нужно присоединиться к домену, перезагрузиться, вручную скопировать установщики, запустить их, следующий / следующий / закончить ... Я чувствую, что здесь возможна некоторая оптимизация :)

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

Цель

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

В идеальном мире я просто хотел бы развернуть шаблон ARM или шаблон VMware VM, чтобы все остальное внутри виртуальной машины обрабатывалось автоматически. Это приведет к присоединению домена к виртуальной машине, добавлению группы AD в группу локальных администраторов, установке всех агентов и т. Д. Чтобы расширить это еще больше, было бы неплохо автоматически добавить сервер в нашу CMDB и добавить IP-адрес в нашу IPDB, например, с помощью REST API.

Будет ли это осуществимо с помощью Ansible, или я ищу не тот инструмент? Стоит ли тратить примерно 5 виртуальных машин в месяц? Я не сторонник работы с Powershell DSC, так как нам также нужно чаще развертывать Linux.

Конечно, я мог бы начать писать сценарии PowerShell, которые справятся со всем этим, но мне кажется, что тогда я изобретаю колесо заново.

Экономия 5 минут в неделю - это бюджет автоматизации на 4 часа в год. Возможно, что еще более важно, автоматизация является более последовательной и может позволить рабочие процессы самообслуживания. И заменяет утомительный труд более интересной работой по автоматизации.

Пишите сценарии независимо от того, как реализована автоматизация, надеюсь, сделайте возможным повторное использование. Теоретически один и тот же сценарий можно было бы вызвать из пользовательских расширений сценариев шаблонов ARM, построителя образов Azure, руководств Ansible, шаблонов VMWare, вручную и в любом месте.

Ansible - это средство удаленного доступа к хостам и запуска скриптов. ssh и запустите Python, winrm и запустите PowerShell. Хотя в нем есть несколько полезных (для Windows) модулей, потребуется написать сценарий, если модуль не существует. Кроме того, Ansible не работает в Windows, поэтому узлом управления должна быть какая-то другая ОС. Это усложняет задачу, если вы хотите контролировать подготовку в основном с помощью рабочих процессов Azure.

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

Если агенты и другое установленное программное обеспечение ломаются при генерализации виртуальной машины, это затрудняет создание шаблонных образов. Выясните, можно ли настроить программное обеспечение для обнаружения деталей нового хоста, или после установки оно полагается исключительно на файл конфигурации. Или можно ли автоматизировать установку программного обеспечения во время предоставления экземпляра. Покажите, что программное обеспечение поддерживает универсальную ОС и попросите совета.