- PVSM.RU - https://www.pvsm.ru -
Рано или поздно перед любой растущей ИТ-компанией встаёт задача оптимизации ресурсов, которая с точки зрения системного администрирования обязательно предполагает максимальную автоматизацию всех процессов. Нужно это по многим причинам: сокращение затрат времени, минимизация влияния человеческого фактора, повышение за счёт этого масштабируемости и надёжности систем в целом.
Наша компания занимается разработкой ПО (SaaS), которое работает на ASP и .NET, а в качестве базы данных использует MS SQL Server. Поэтому львиная доля инфраструктуры у нас работает под управлением Windows, преимущественно Server 2012 R2. Соответственно, отделу сисопов периодически приходится поднимать новые машины с ней, а иногда и разворачивать целые фермы, как на живом окружении, так и на тестовом. В настоящее время у нас порядка 20 гипервизоров и, соответственно, более сотни разнообразных машин, из которых абсолютное большинство — это ВМ с Windows. Сейчас планируется установка ещё полудюжины девелоперских окружений, каждое из которых состоит из десятка компонент, которые желательно изолировать друг от друга. Для решения подобных задач мы и задумали автоматизацию всего процесса. Описание всего пути я сделал довольно детальным, так что статья разрослась и поэтому я решил разделить её на три части. В этой части я постараюсь затронуть общие общие вопросы, объяснить выбор инструментов и рассказать, как подготовить окружение для дальнейшей работы.
Исторически сложилось, что все новые ВМ у нас находятся под управлением гипервизора Microsoft Hyper-V.
Передо мной стояла задача автоматизации создания новых виртуальных машин. Необходимо в короткий срок поднять на гипервизоре операционную систему со всем необходимым софтом и настройками. Всё это есть по сути первый шаг к полноценной системе непрерывного развёртывания с системой управления конфигурациями, которую мы и планируем внедрить. Это сильно выходит за рамки этой статьи, но материалов по этой теме достаточно, а я собираюсь продолжить рассказ обо всех нюансах работы в мире продуктов Microsoft в следующей статье, если этот материал окажется интересным и полезным. В итоге поставленную задачу удалось успешно решить при помощи довольно традиционного набора инструментов, многие из которых уже давно известны в мире открытого ПО, однако применить их полноценно в мире Windows получилось не так просто из-за обилия разного рода подводных камней. В результате мы остановились на следующем “тулките”:
В этой статье речь зайдёт про первые три пункта списка.
Итак, что же они делают и почему были выбраны именно они?
Использование этого инструментария позволяет в результате получить всё волшебство Continuous Delivery в одном флаконе под привычную систему.
Что ж, давайте приступим к самому интересному, к прикладной технической части развёртывания.
Для начала необходимо подготовить хост — ту систему, на которой будут разворачиваться виртуальные машины. В случае если они нужны для локальных тестов и всё будет крутиться на том же компьютере, где вы сидите — всё просто и прозрачно. Однако, зачастую получается ситуация, когда виртуалки нужны в итоге в совершенно другом месте — в датацентре на живом окружении, на соседнем сервере или на бабушкином нетбуке. Дело в том, что из коробки скрипты Vagrant делают все операции на локалхосте. В принципе, никто не мешает сначала развернуть это у себя, настроить-поиграться, а потом смигрировать на далёкий гипервизор, но тут оказывается, что это занимает прилично времени даже когда сервер находится в одном сегменте сети с вами. В случае же, когда надо разворачиваться через VPN в датацентре на другом краю земли — это может занимать больше часа на каждый инстанс, и при этом может понадобиться совершать лишние действия: экспорт-импорт в моём случае, плюс перенастройка сети, если виртуальные коммутаторы называются по разному.
Поэтому оптимальным решением я для себя выбрал поднятие Vagrant на всех гипервизорах, где планируется его частое использование. Это ускоряет процесс (даже для одной машины — ведь бокс весит значительно меньше VHD файла развёрнутого образа), однако добавляет лишнего софта на сервера. К счастью, Chocolatey и Vagrant не требуют GUI, так что их легко можно установить даже на бесплатном Hyper-V Server.
Задача эта в целом довольно тривиальная:
Install-WindowsFeature –Name Hyper-V -IncludeManagementTools
iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))
choco install vagrant
Вообще, если вы не любите засорять сервера лишними программами или предпочитает всегда использовать наисвежайшие версии (следует понимать, что, несмотря на то, что в репозитарии обычно лежит самая последняя версия — появляется она там не мгновенно) — можно вполне обойтись без Шоколатье, установив Vagrant вручную из дистрибутива. Он поставляется в виде msi-пакета, так что проблем с установкой из консоли быть не должно. Но лично я предпочитаю первый вариант не только потому, что люблю шоколад — просто я привык так ставить вообще весь софт, даже на домашнем ноутбуке.
В этот момент мы сталкиваемся с первым подводным камнем (я уже предупреждал, что путь будет тернист?). Дело в том, что наш бродяга (а именно так переводится “vagrant”) от версии к версии ставит себя в разные каталоги, и в последнем на данный момент релизе он снова начал устанавливаться прямо в корень системного диска в папку C:HashiCorpVagrant. Всё бы ничего, но он периодически забывает прописывать путь к своей папке в переменную окружения, поэтому система может не находить его, если не вводить полный путь к бинарнику. Лечится это простой командой в Powershell:
$env:Path+=”;C:HashiCorpVagrantbin”
Для командной строки нужно использовать команду setx c ключом /M. Например, если нужно поменять расположение папки, где он будет хранить боксы (по умолчанию он хранит их на своей папке на диске C, что может не очень понравится, когда на системном диске немного места):
setx VAGRANT_HOME «X:/your/path» /M
На этом подготовка хоста закончена. О том, как сделать базовый бокс для развёртывания и как с ним работать дальше — я расскажу в следующих частях. Там же там будет отдельная глава со списком полезных материалов и ссылок.
Автор: Uburwator
Источник [2]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/it-infrastruktura/83940
Ссылки в тексте:
[1] бесплатен: http://www.microsoft.com/ru-ru/softmicrosoft/hyperv2012r2.aspx
[2] Источник: http://habrahabr.ru/post/251435/
Нажмите здесь для печати.