Всем привет! Очередной выпуск статьи из цикла «Как мы внедряли DevOps» от команды Vorlon.JS. Vorlon.JS — это основанный на node.js инструмент, который позволяет веб-разработчикам удобный способ удаленно тестировать, контролировать и отлаживать веб-приложение, особенно на мобильных и embedded системах. В своем блоге на MSDN, команда описывала поэтапное внедрение DevOps практик в организацию работы над Vorlon.JS и выбор инструментов для решения ежедневных задач. Vorlon.JS является проектом с открытым исходным кодом.
Microsoft предлагает большое количество инструментов, которые могут быть использованы для реализации DevOps практик, и про часть из них мы рассказываем в этом цикле.

Содержание цикла:

Что такое «Инфраструктура-как-код»?

Инфраструктура-как-код — это возможность усовершенствовать методы создания и управления средами развертывания приложения на всех этапах его жизненного цикла, от среды разработки до рабочей среды. Она позволяет описать (декларировать) конечное желаемое состояние среды.

Допустим, вы развертываете приложение, которое должно выполняться на веб-ферме из 4 серверов.

Приложение хранит и получает данные из базы данных SQL Azure и оптимизирует время загрузки с помощью службы Redis Cache. Подход «Инфраструктура-как-код» позволит вам написать скрипт, который создаст всю среду идемпотентным образом (т. е. с идентичным результатом даже при многократном выполнении).

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

Инфраструктура-как-код и Microsoft Azure


Применять подход «инфраструктура как код» в Microsoft Azure очень просто: используйте Azure Resource Manager и шаблоны развертывания.

Что такое Azure Resource Manager и группы ресурсов?

Azure Resource Manager (ARM), как несложно догадаться по названию, — служба управления всеми создаваемыми в Azure ресурсами. В первой версии Microsoft Azure ARM отсутствовал, и при создании служб для приложения разработчики сталкивались с проблемой: все службы создавались в виде одиночных элементов, без каких-либо перекрестных ссылок или зависимостей. Управлять приложением, состоящим из множества ресурсов, было непросто.

ARM работает с провайдерами ресурсов. Каждый провадер ресурсов (например, Microsoft.Compute, Microsoft.Storage, Microsoft.Network и другие) используется для создания базового ресурса, а ARM управляет всеми провайдерами.

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



При использовании ARM все создаваемые ресурсы будут помещаться в группу ресурсов. Эта логическая сущность предназначена для группировки ресурсов в Microsoft Azure. Группы ресурсов открывают множество новых удобных возможностей, например, использование тегов или получение данных для выставления счетов по всему приложению, а не по отдельным службам.

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

Еще одно преимущество ARM по сравнению с более старыми провайдерами: можно описать группу ресурсов с помощью файлов JSO и ARM развернет ресурсы не последовательно, а параллельно, то есть намного быстрее.

Папка Deployment проекта Vorlon.JS содержит ряд сценариев, которые служат для развертывания инфраструктуры сред разработки, тестирования и production. На самом деле мы использовали для сред разработки и тестирования один и тот же скрипт (azuredeploy.json) с различными файлами параметров, что позволило настроить каждый ресурс для каждой среды:



Для production-среды применяются другие шаблоны развертывания, поскольку в ней мы используем функциональность Azure Web Apss (слоты развертывания), которые не нужны в двух других средах.

Кроме того, в папке Deployment находится несколько сценариев PowerShell, которые применяются в процессе управления выпусками. Мы поговорим об этом в следующей публикации.

Более подробная информация про Azure Resource Manager и группах ресурсов доступна в документации по ссылке.

Начало работы с диспетчером ресурсов Azure и с группами ресурсов


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

Во-первых, в этом репозитории GitHub есть множество шаблонов, которые позволят быстро приступить к делу. Вы можете читать их, изменять или даже попытаться развернуть — для этого нажмите кнопку Deploy to Azure в разделе readme нужного шаблона. Вы перейдете на портал Azure, где потребуется лишь ввести параметры и нажать OK для запуска развертывания.



Visual Studio и последняя версия Microsoft Azure SDK/Tools содержат пользовательский интерфейс для работы с шаблонами диспетчера ресурсов Azure.

Сначала создайте проект Azure Resource Group в Visual Studio:



Подсказки мастера помогут создать группу ресурсов. Например, вы можете создать группу ресурсов, состоящую из веб-приложения и базы данных SQL Azure:



Visual Studio сформирует следующее решение:



В папке Scripts находится скрипт PowerShell, с помощью которого можно развернуть группу ресурсов в Azure.

Папка Templates содержит два файла JSON: шаблон Azure Resource Manager с описанием инфраструктуры и файл параметров с необходимыми для скрипта параметрами. Вы можете создать несколько копий второго файла для различных сред.

В папке Tools находится исполняемый файл AzCopy.exe. Это Azure-версия робота копирования, позволяющая загрузить в Azure содержимое (например, пакет приложения или резервную копию базы данных) в ходе развертывания.

Когда вы откроете шаблон ARM, сбоку появится окно JSON Outline (Структура JSON):



Окно служит для навигации по шаблону: выберите в списке ресурс — и в файле JSON будет выделено его представление.

Кроме того, в этом окне можно добавлять ресурсы в шаблон. Щелкните правой кнопкой на узел ресурсов и выберите Add New Resource:



Мастер откроется вновь, и вы сможете добавить к своему шаблону любой из множества ресурсов:



Как видите, если создаваемый ресурс зависит от других ресурсов, то система предложит создать и их тоже.

Подготовленный шаблон можно развернуть в Microsoft Azure. Щелкните на шаблон правой кнопкой мыши и выберите New Deployment:



Введите свои учетные данные в Azure и имя группы ресурсов и выберите подписку, в рамках которой будет создана группа.

Есть и другой способ — открыть и запустить скриптPowerShell из папки Scripts:



В Vorlon.JS мы задали шаблоны, которые будут использоваться для автоматической подготовки выпуска приложения с помощью Visual Stusio Team Services. Эти шаблоны можно просмотреть непосредственно на GitHub: https://github.com/MicrosoftDX/Vorlonjs/tree/dev/DeploymentTools

Хранение инфраструктуры в виде шаблона кода с исходным кодом приложения — хорошая практика: вы сможете управлять версиями приложения одновременно с зависящей от него инфраструктурой. Представьте, например, что пользователь сообщает об ошибке в старой версии. Если у вас есть не только исходный код, но и шаблоны инфраструктуры, то можно извлечь версию с ошибкой, восстановить среду за несколько минут и начать отладку.

Теперь вы знакомы с основами применения подхода «Инфраструктура-как-код» в Microsoft Azure.

В следующей статье из этой серии вы узнаете, как мы используем шаблоны Azure Resource Manager и Release Mаnagement в Visual Studio Team Services для автоматической подготовки сред и развертывания приложения сразу после успешного завершения сборки.

Оставайтесь на связи!

Об авторах



Julien Corioland — технологический евангелист Microsoft, Франция. Основное направление работы — платформа приложений Microsoft Azure. Он помогает разработчикам создавать облачные приложени, а также входит в группу разработчиков инструмента Vorlon.JS, в которой он помогает внедрить практики DevOps.

Мы с удовольствием анонсируем, что разработчики проекта Vorlon.JS — Julien Corioland и Ettiene Margraff выступят в качестве докладчиков на конференции DevCon 2016, где эксклюзивно для участников интенсива по DevOps расскажут о своем опыте внедрения практик вживую, а так же предоставят возможность построить эти процессы своими руками.

Если у вас возникли вопросы об этой серии публикаций или о методологии DevOps, вы можете связаться с автором напрямую через Twitter: twitter.com/jcorioland

Полезные ссылки


Комментарии (0)