- PVSM.RU - https://www.pvsm.ru -

Azure Automation

3 апреля был анонсирован Announcing Microsoft Azure Automation Preview [1] и до сих пор находится в стадии preview.

Какие задачи призван решать Automation?

  • Автоматизация рутинных процессов по администрированию azure (то, что делается через портал — создание виртуалок, создание новых очередей, баз данных, выдача прав и т. п.);
  • Сделать эти процессы повторяемыми, убрать ручную работу с администратора
Бонус к автоматизации ( kill feature):

Runbook (powershell скрипт), который использует Automation, выполняется не на вашей машине, а значит, может работать бесконечно, пока его не остановят. Например, он может в бесконечном цикле проверять состояние машин и как только обнаружит недоступность, посылать email дежурному оператору.

Как раньше решались рутинные задачи по администрированию/автоматизации?

Либо сидел администратор и в интерфейсе всё это прокликивал ручками;
Либо писались C# программы/скрипты на powershell, использующие windows azure API.

Microsoft решили, что пора наколеночные решения по автоматизации заменить на более профессиональные/серьезные. Дать наконец-то возможность “прикрутить свою кнопку к сайту”.

Естественно, для маленьких проектов всё это не нужно, а нужно когда вам регулярно надо создавать новые стандартные вещи.

У интересующихся Azure людей возникнет вопросы:

  1. Чем отличится Automation от Windows Azure powershell модуля?
    Тем, что Azure powershell вы вызываете с вашей локальной машине, скрипт исполняется на вашей машине, а вызывает скрипт внешнее для вас api Azure. Automation Runbook запускается и хранится в самом Azure.
  2. Чем отличается Automation от WebJob [2] по расписанию на powershell?
    Нас не должно смущать то, что в обоих случаях мы можем писать на powershell и запускать их через вебсайт, разница в целях для которых они используются.
    WebJob созданы для поддержки развернутого приложения. Automation создан для автоматизации рутинных действий по администрированию. Т.е. WebJob пришел от разработчиков и сопровождение, а automation от админов.
  3. Чем отличается Automation от Microsoft Azure Management Libraries [3] и/или Azure SDK? (Этот вопрос возник у меня, тк в описании MAML тоже было много слов про автоматизацию и deploy)
    Использование MAML [4] – это написание на C# кода, это часть выпущенного AzureSDK. Automation- это код на powershell, в котором описан Workflow процесс. Т.е. часть функционала пересекается, но в Automation важна именно возможность создавать долгоживущие процессы. Опять же, Automation- для IT, а не для разработчиков.

Давайте посмотрим на примерах:

Примеры для MAML:

  • В видео с конференции build показывают, как использовать эту фичу для создание пререквизитов для тестов, чтобы каждый раз все было чистенькое.
  • Допустим у вас есть в azure несколько контуров — (набора виртуалок, сервисов, баз данных и тд). На одном вы разрабатываете, на другом теститесь, на третьем готовите релиз, на четвертом продакшен. Если писать такие скрипты автоматизации, то очень легко будет переносить ваши приложения с одной конфигурации на другую. Жмем одну кнопку и копируем очереди, базы, виртуалки и часть нашей работы уже готово. Можно это делать хоть каждый раз с нуля, чтобы иметь новую полностью конфигурацию.
Пример использования: Azure Automation.

  • На видео ребята показали скрипт, который постоянно запущен, он мониторит состояние сервисов, и при падении сообщает инженеру техподдержки, что на сервисе проблема. Интересный кейс по мониторингу. channel9.msdn.com/Events/Build/2014/3-621 [5] последняя треть доклада.
  • Допустим в вашей компании, аутсорсеры-аутстаферы работают на машинках в windows azure(проще контролировать работают они или нет, есть типовая среда разработки мешающая тварить-варотить.). Кроме создания типовых виртуалок при приходе нового разработчика, можно установить правило- работаем только с 9, до 18. Все остальное время машины не нужны, и могут быть выключены. Соответственно пишем скрипт, запускаем его и он постоянно запущенный мониторит текущее время, как только наступает 18.30 гасим все машины.
  • Допустим, у вас в отделе сопровождение зафиксировали инцидент (что-то пошло не так). Нужно устранить ошибку, но в больших компаниях нужно еще заполнить форму инцидента (что было, что затронуло, что не затронуло). Вот для сбора отчета в одну кнопку и можно использовать эту фичу. Написали скрипт, наступил инцидент, нажали на кнопку получили шаблонный отчете со статусами всех виртуалок, очередей, баз данных и тп. Можно на MAML написать, но запуск из Azure Portal на мой взгляд более логичен, чем с локальной машины.
  • Бэкап всех баз, перед обновлением продакшена — отличная задача для автоматизации тк она долгоиграющая и запускать можно с azure portal.
  • Обновить ключи /сертификат безопасности одной кнопкой в UI.

До начала использование:
Естественно нужно иметь аккаунт на Microsoft Azure.
Чтобы начать использовать эту фичу, нужно сначала подключить ее, тк она preview (Чтобы разработчик принял на себя ответственность, что это еще не релиз и что-то может работать не так).

Как только вы ее подключите нужно будет создать Automation Account (Я правда не очень понял зачем так сложно, но наверное надо)

Azure Automation

Зарегистрировавшись вы увидите главную страницу. Интерфейс интуитивно понятен.

Azure Automation

Лично я долго разбирался чем и от чего Automation отличается и зачем оно надо, а в интерфейс за 5-7 минут все становится очевидным.

Вводно-практическая часть
Скрипты для Automation называются Runbook.
Runbook — это скрипт с powershell workflow внутри себя.

Первые шиги

Создадим наш первый Rubook.

Azure Automation
Azure Automation

RunBook вы создаете прям в интерфейсе Windows Azure, редактируете его там же с помощью редактора Monaco.

Azure Automation

И пусть этот Runbook запрашивает при запуске значение параметра от пользователя.

Azure Automation
Статистика

Видно весь список ваших Runbooks

Azure Automation
Мы можем посмотреть общую статистику по всем запускам за период

Azure Automation
Информацию по каждому отдельному запуску- когда, кто, с какими параметрами.

Azure Automation
Сложнее...

Внутри себя Automation использует обычный Windows Azure Module [6] для работы с api azure.

Всегда можно посмотреть список команд в нем и его версию.

Azure Automation

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

Azure Automation

Или создать переменные среды, к которым можно обращаться из скриптов.

Azure Automation

Всем удачи в изучении и использовании Automation. Лично мне фича очень понравилась своей идеей.

Ссылки:

  • Мы можем найти на msdn [7] информацию для начала изучения: Как посмотреть список /создать/запустить/ посмотреть результаты выполнения Runbook.
  • Видео по Automation с конференции Build [5]
  • Простые примеры [8] Runbook (реально это просто примеры работы из powershell с Microsoft Azure)
  • Очень активно обсуждение на форуме [9].
  • На конференции BUILD очень просили всех, кто разработчиков попробовать эту фичу и написать FeedBack [10] – feature requests. С апреля много воды утекло, но думаю до сих пор актуально.

Автор: SychevIgor

Источник [11]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/microsoft/64568

Ссылки в тексте:

[1] Microsoft Azure Automation Preview: http://blogs.technet.com/b/server-cloud/archive/2014/04/03/announcing-microsoft-azure-automation-preview.aspx

[2] WebJob: http://msdn.microsoft.com/en-us/library/azure/dn643632.aspx

[3] Microsoft Azure Management Libraries: http://msdn.microsoft.com/en-us/library/azure/dd179380.aspx

[4] MAML: http://www.nuget.org/packages/microsoft.windowsazure.management.libraries

[5] channel9.msdn.com/Events/Build/2014/3-621: http://channel9.msdn.com/Events/Build/2014/3-621

[6] Windows Azure Module: http://msdn.microsoft.com/en-us/library/azure/jj156055.aspx

[7] msdn: http://msdn.microsoft.com/en-us/library/azure/dn643627.aspx

[8] примеры: http://msdn.microsoft.com/en-us/library/azure/dn643630.aspx

[9] форуме: http://social.msdn.microsoft.com/Forums/windowsazure/en-US/home?forum=azureautomation&sort=lastpostdesc&brandIgnore=true&page=1

[10] FeedBack: http://feedback.azure.com/forums/246290-azure-automation

[11] Источник: http://habrahabr.ru/post/149008/