обновление серверов через Orchestrator 2012 (часть 4)

Привет!

Первая часть

Вторая часть

Третья часть

Продолжаем цикл статей, посвященных работе с Orchestrator.

В прошлый раз мы закончили вопросом «как запускать runbook?».

Общепринятый вариант — это использование activity Monitor Date/Time. В комбинации с Check Schedule можно создавать достаточно гибкое расписание. Например, перегрузка сервера в 08:00 в воскресенье.

Обновлениесерверов024

У данного метода я вижу, как минимум, два недостатка.
Первый: реальную работу этот runbook будет выполнять всего 1 раз в неделю, но запущен будет всегда! То есть мы получаем максимальное значение одновременно выполняемых на runbook сервере runbook-ов, минус — количество подобных  runbook-ов. Эту проблему можно решить, используя Invoke Runbook. У вас будет один главный runbook, который будет запускать все остальные. Я пробовал. Пока количество менее 10-20, еще можно работать, но чем их больше, тем труднее вносить изменения. Orchestrator начинает менять местами activity, переплетать link-и. И еще, чтобы внести изменения нужно остановить этот runbook и, следовательно, можно пропустить запуск какого-нибудь runbook-a!

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

Все автоматические процедуры большинство из нас запускает через Task Scheduler.
Как же все просто и удобно!
Имя, Статус, Когда, Когда в след. раз, Когда уже выполнялась, Результат.

Обновлениесерверов025

Так может и нам запускать свои runbook-и через Task Scheduler!?

Для этих целей можно использовать ps скрипт или очень полезную командную утилиту SCOJobRunner. Оба способа используют Orchestrator web service.

Давайте создадим runbook, который будет рассылать оповещения о предстоящих работах и запустим его с помощью SCOJobRunner.

Переходим в нужную папку.

OpalisUpdate004

И создаем runbook с именем e-mail Требуют обновлений.

Обновлениесерверов023

Основную работу выполняет запрос к базе данных

set language russian

IF DATENAME(weekday, getdate()) <>  N'пятница'

select
servername,
descr,
convert(date,DATEADD(dd,1,getdate())) as NextDay,
[time],
[DayOfWeek],
[EndTime],
[E-mail business]
from [dbo].[t_Orch_Patching_Server]
where DayOfWeek = DATENAME(weekday, DATEADD(dd,1,getdate())) 
and NeedToUpdate = 1
ELSE
select
servername,
descr,
CASE [DayOfWeek]
WHEN N'суббота' THEN convert(date,DATEADD(dd,1,getdate()))
WHEN N'воскресенье' THEN convert(date,DATEADD(dd,2,getdate()))
WHEN N'понедельник' THEN convert(date,DATEADD(dd,3,getdate()))
END as NextDay,
[time],
[DayOfWeek],
[EndTime],
[E-mail business]
from [dbo].[t_Orch_Patching_Server]
where [DayOfWeek] in (DATENAME(weekday, DATEADD(dd,1,getdate())),DATENAME(weekday, DATEADD(dd,2,getdate())),DATENAME(weekday, DATEADD(dd,3,getdate())))
and NeedToUpdate = 1

Запрос — это копия запроса в runbook-e на проверку обновлений, добавлена только проверка NeedToUpdate = 1. Нет обновлений — нет оповещений.

Activity Send Email привязана Link-ом с проверкой:

OpalisUpdate044

В самой Send Mail можете использовать все данные из запроса. Порядковый номер определяет поле.
Например: Email — это  [field(param1,’;’,7)], где вместо param1 вставьте:
Обновлениесерверов021

Send Platform Event можно использовать для отладки.

Создадим Task в Task Scheduler. На вкладке Action укажем путь к утилите, а в arguments

-ID:»runbook guid»

OpalisUpdate045

 

Сам GUID можно посмотреть на Orchestrator Console.

Вот собственно и все на этот раз.

Следующая статья будет об установке обновлений.

Оставайтесь с нами. Пишите комментарии. Дальше будет интереснее!

 

Александр Петлевой

4 комментария

  1. Pavel:

    Александр, а продолжение будет?

Leave a Reply