Azure Automation подходит для регулярных административных задач, когда запуск не должен зависеть от компьютера сотрудника. Начинать лучше с небольшого runbook, который читает состояние ресурса. После проверки доступа и журналирования можно добавлять согласованные изменения.
Разделить среду, код и полномочия
Automation Account хранит runbook и настройки выполнения. Runtime Environment определяет версию PowerShell и пакеты. Managed Identity представляет задание при обращении к Azure. Эти три компонента проверяются отдельно: корректная загрузка модуля не подтверждает, что идентичность имеет нужную роль.
- Создайте или выберите Automation Account в подходящей подписке.
- Подготовьте PowerShell Runtime Environment с необходимыми пакетами Az.Accounts и Az.Compute.
- В Identity включите system-assigned identity и запишите её object ID.
- На тестовой группе ресурсов назначьте этой идентичности Reader.
- Создайте PowerShell-runbook и свяжите его с подготовленной средой.
В интерфейсе Azure могут меняться названия разделов. Проверяйте object ID выбранной идентичности и область роли: одинаковое отображаемое имя не гарантирует, что права получила правильная учётная запись.
Первый runbook: прочитать список VM
param(
[Parameter(Mandatory)][string]$SubscriptionId,
[Parameter(Mandatory)][string]$ResourceGroupName
)
$ErrorActionPreference = 'Stop'
Disable-AzContextAutosave -Scope Process | Out-Null
$context = (Connect-AzAccount -Identity).Context
$context = Set-AzContext -SubscriptionId $SubscriptionId -DefaultProfile $context
Get-AzVM -ResourceGroupName $ResourceGroupName -DefaultProfile $context |
Select-Object Name, Location, ResourceGroupNameПример выполняется внутри поддерживаемой среды Azure Automation с включённой идентичностью; обычный локальный PowerShell не приобретает её автоматически. Явный контекст подписки помогает не обратиться к чужой сохранённой сессии.
Тестировать и публиковать разные версии
Откройте Test pane, передайте идентификатор тестовой подписки и имя группы. Проверьте вывод и ошибки. Test pane действительно исполняет код: для будущего runbook с изменениями это не безопасная имитация. Сначала оставьте только операции чтения.
После успешного теста опубликуйте runbook. Расписание должно ссылаться на опубликованную версию, а его параметры — на нужную среду. Запишите часовой пояс, ожидаемую длительность и поведение при наложении двух запусков. Не допускайте, чтобы повторное расписание запускало вторую копию операции, которая ещё не завершилась.
Минимальные права
Reader достаточен для чтения VM, но не для их остановки. Если появится задача управления питанием, назначьте минимальную подходящую роль или custom role на конкретной области. Не выдавайте Contributor всей подписки только ради устранения 403.
Hybrid Runbook Worker требует отдельной проверки идентичности и сети. Он полезен для частных ресурсов, но не является способом автоматически обойти RBAC. Run As Accounts не следует выбирать основой новой инструкции.
Журнал и эксплуатация
- Сохраняйте параметры без секретов, job ID, время начала и результат.
- Проверяйте ошибки подключения, отсутствие группы ресурсов и пустой результат.
- Настройте оповещение о Failed и заданиях, которые перестали завершаться.
- Фиксируйте версии пакетов; смену Runtime Environment сначала тестируйте.
- Для операций изменения предусмотрите идемпотентность и защиту от параллельного запуска.
Документация: Managed Identity в Azure Automation.
Документация: Runtime Environment.
Документация: Тестирование и публикация runbook.
Иллюстрации к инструкции



Материал подготовлен самостоятельно на русском языке. Исходная тема и иллюстрации: LazyAdmin. Технические сведения сверены с документацией, указанной выше, 11 октября 2026 года. Интерфейсы и версии модулей могут отличаться от показанных примеров.