Azure Automation에서 그래픽 Runbook 작성

Important

클래식 실행 계정을 포함한 Azure Automation 실행 계정은 2023년 9월 30일에 사용 중단되었으며 관리 ID로 대체되었습니다. 더 이상 Azure Portal을 통해 실행 계정을 만들거나 갱신할 수 없습니다. 자세한 내용은 기존 실행 계정에서 관리 ID로 마이그레이션을 참조하세요.

Azure Automation의 모든 Runbook은 Windows PowerShell 워크플로입니다. 그래픽 Runbook 및 그래픽 PowerShell 워크플로 Runbook은 Automation 작업자가 실행하지만 사용자는 보거나 수정할 수 없는 PowerShell 코드를 생성합니다. 그래픽 Runbook을 그래픽 PowerShell 워크플로 Runbook으로 변환하거나 그 반대로 변환할 수 있습니다. 그러나 이러한 Runbook을 텍스트 Runbook으로 변환할 수는 없습니다. 또한 Automation 그래픽 편집기는 텍스트 Runbook을 가져올 수 없습니다.

그래픽 작성을 통해 기본 Windows PowerShell 또는 PowerShell 워크플로 코드의 복잡성 없이 Azure Automation용 Runbook을 만들 수 있습니다. cmdlet 및 Runbook의 라이브러리에서 캔버스에 활동을 추가하고, 이들 함께 연결하고, 하나의 워크플로를 생성하도록 구성할 수 있습니다. System Center Orchestrator 또는 SMA(Service Management Automation)로 작업한 적이 있다면 그래픽 저작이 익숙하게 느껴지실 것입니다. 이 문서에서는 그래픽 Runbook 만들기를 시작하는 데 필요한 개념을 소개합니다.

참고 항목

그래픽 Runbook에는 디지털 서명을 추가할 수 없습니다. 이 기능은 Azure Automation에서 지원되지 않습니다.

그래픽 편집기 개요

그래픽 Runbook을 만들거나 편집하여 Azure 포털에서 그래픽 편집기를 열 수 있습니다.

Graphical workspace

다음 섹션에서는 그래픽 편집기의 컨트롤에 대해 설명합니다.

캔버스 컨트롤

캔버스 컨트롤을 사용하면 Runbook을 디자인할 수 있습니다. 라이브러리 컨트롤의 노드에서 Runbook에 활동을 추가하고 Runbook 논리를 정의하는 링크와 연결할 수 있습니다. 캔버스 맨 아래에는 확대 및 축소하는 데 사용할 수 있는 컨트롤이 있습니다.

라이브러리 컨트롤

라이브러리 컨트롤을 사용하면 Runbook에 추가할 활동을 선택할 수 있습니다. 이를 캔버스에 추가하며, 여기서 다른 활동에 연결할 수 있습니다. 라이브러리 컨트롤에는 다음 표에 정의된 섹션이 포함되어 있습니다.

섹션 설명
cmdlet Runbook에서 사용할 수 있는 모든 cmdlet입니다. 이러한 cmdlet은 모듈별로 구성됩니다. Automation 계정에 설치한 모든 모듈을 사용할 수 있습니다.
Runbook Automation 계정의 Runbook입니다. 이러한 Runbook을 캔버스에 추가하여 자식 Runbook으로 사용할 수 있습니다. 편집 중인 Runbook과 동일한 코어 유형의 Runbook만 표시됩니다. 그래픽 Runbook의 경우 PowerShell 기반 Runbook만 표시됩니다. 그래픽 PowerShell 워크플로 Runbook의 경우 PowerShell 워크플로 기반 Runbook만 표시됩니다.
자산 Runbook에서 사용할 수 있는 Automation 계정의 자동화 자산입니다. 자산을 Runbook에 추가하면 선택한 자산을 가져오는 워크플로 활동이 추가됩니다. 변수 자산의 경우 변수를 가져오는 활동을 추가할지 또는 변수를 설정하는 활동을 추가할지 선택할 수 있습니다.
Runbook 컨트롤 현재 Runbook에서 사용할 수 있는 Runbook 컨트롤 활동입니다. 분기 동기화는 여러 입력을 사용하며 모두 완료될 때까지 기다렸다가 워크플로를 계속합니다. 코드 활동은 그래픽 Runbook 종류에 따라 하나 이상의 PowerShell 또는 PowerShell 워크플로 코드 줄을 실행합니다. 사용자 지정 코드 또는 다른 작업으로 수행하기 어려운 기능에 이 작업을 사용할 수 있습니다.

구성 제어

구성 컨트롤을 사용하면 캔버스에서 선택된 개체에 대한 세부 정보를 제공할 수 있습니다. 이 컨트롤에서 사용할 수 있는 속성은 선택한 개체의 유형에 따라 달라 집니다. 구성 컨트롤에서 옵션을 선택하면 추가 블레이드가 열리며 추가 정보를 제공합니다.

테스트 컨트롤

테스트 컨트롤은 그래픽 편집기를 처음 시작할 때 표시되지 않습니다. 대화형으로 그래픽 Runbook을 테스트할 때 열립니다.

활동 사용

활동은 Runbook의 구성 요소입니다. 활동은 PowerShell cmdlet, 자식 Runbook 또는 워크플로일 수 있습니다. 라이브러리 컨트롤에서 활동을 마우스 오른쪽 단추로 클릭하고 캔버스에 추가를 선택하여 Runbook에 활동을 추가할 수 있습니다. 그런 다음 활동을 클릭하고 끌어서 캔버스의 원하는 위치에 배치할 수 있습니다. 캔버스에서 활동의 위치는 Runbook의 작업에 영향을 주지 않습니다. 해당 작업을 시각화하는 데 가장 적합한 곳에 Runbook을 배치할 수 있습니다.

Add to canvas

캔버스에서 활동을 선택하여 구성 블레이드에서 해당 속성 및 매개 변수를 구성할 수 있습니다. 활동의 레이블을 설명이 포함된 이름으로 변경할 수 있습니다. Runbook은 여전히 원래 cmdlet을 실행합니다. 그래픽 편집기에서 사용하는 표시 이름만 변경하면 됩니다. 레이블은 Runbook 내에서 고유해야 합니다.

매개 변수 집합

매개 변수 집합은 특정 cmdlet에 대한 값을 허용하는 필수 및 선택적 매개 변수를 정의합니다. 모든 cmdlet에는 적어도 하나의 매개 변수 집합이 있으며, 여러 개의 집합이 있는 cmdlet도 있습니다. cmdlet에 여러 매개 변수 집합이 있는 경우 매개 변수를 구성하려면 먼저 사용할 집합을 선택해야 합니다. 매개 변수 집합을 선택하고 다른 집합을 선택하여 활동에서 사용하는 매개 변수 집합을 변경할 수 있습니다. 이 경우 이미 구성한 모든 매개 변수 값이 손실됩니다.

다음 예제에서 Get-AzVM cmdlet에는 세 개의 매개 변수 집합이 있습니다. 이 예제에서는 단일한 선택적 매개 변수와 함께 ListLocationVirtualMachinesParamSet라는 하나의 집합을 사용하여 나열할 가상 머신의 위치를 반환합니다. 또한 이 예제에서는 반환할 가상 머신을 지정하기 위해 GetVirtualMachineInResourceGroupParamSet 매개 변수 집합을 사용합니다. 이 집합에는 필수 매개 변수 두 개와 선택적 매개 변수 하나가 있습니다.

Parameter set

매개 변수 값

매개 변수 값을 지정하려면 데이터 원본을 선택하여 값 지정 방법을 결정합니다. 특정 매개 변수에 사용할 수 있는 데이터 원본은 해당 매개 변수의 유효한 값에 따라 달라집니다. 예를 들어 Null은 null 값을 허용하지 않는 매개 변수에 사용 가능한 옵션이 아닙니다.

데이터 원본 설명
상수 값 매개 변수 값을 입력합니다. 이 데이터 원본은 Int32, Int64, String, Boolean, DateTime, Switch 데이터 형식에만 사용할 수 있습니다.
활동 출력 워크플로에서 현재 활동 앞에 오는 활동의 출력을 사용합니다. 유효한 모든 활동이 나열됩니다. 매개 변수 값에 출력을 생성하는 활동만 사용합니다. 활동에서 여러 속성을 가진 개체를 출력하는 경우에는 활동을 선택한 후 특정 속성의 이름을 입력할 수 있습니다.
Runbook 입력 활동 매개 변수에 대한 입력으로 Runbook 입력을 선택합니다.
변수 자산 입력으로 Automation 변수를 선택합니다.
자격 증명 자산 입력으로 Automation 자격 증명을 선택합니다.
인증서 자산 입력으로 Automation 인증서를 선택합니다.
연결 자산 입력으로 Automation 연결을 선택합니다.
PowerShell Expression 간단한 PowerShell 식을 지정합니다. 활동 전에 식이 계산되며, 그 결과가 매개 변수 값에 사용됩니다. 변수를 사용하여 활동의 출력 또는 Runbook 입력 매개 변수를 참조할 수 있습니다.
구성되지 않음 이전에 구성된 모든 값을 지웁니다.

선택적 추가 매개 변수

모든 cmdlet에는 추가 매개 변수를 제공할 수 있는 옵션이 있습니다. 이는 PowerShell 일반 매개 변수 또는 기타 사용자 지정 매개 변수입니다. 그래픽 편집기에는 PowerShell 구문을 사용하여 매개 변수를 제공할 수 있는 텍스트 상자가 있습니다. 예를 들어 Verbose 일반 매개 변수를 사용하려면 -Verbose:$True를 지정해야 합니다.

작업 다시 시도

다시 시도 기능을 사용하면 루프와 비슷하게 특정 조건이 충족될 때까지 활동을 여러 번 실행할 수 있습니다. 여러 번 실행해야 하고 오류가 발생하기 쉬운 활동에 이 기능을 사용할 수 있으며 성공하기 위해 한 번 이상 시도하거나 유효한 데이터에 대한 활동의 출력 정보를 테스트해야 할 수 있습니다.

활동에 재시도 사용하면 지연 및 조건을 설정할 수 있습니다. 지연은 작업을 다시 실행하기 전에 Runbook이 대기하는 시간(분 또는 초 단위로 측정됨)입니다. 지연 시간을 지정하지 않으면 작업이 완료된 직후에 다시 실행됩니다.

Screenshot of the Enable retry feature settings.

다시 시도 조건은 작업이 실행된 이후 매번 평가되는 PowerShell 식입니다. 식이 True로 확인되면 작업을 다시 실행합니다. 식이 False로 확인되면 작업이 다시 실행되지 않고 Runbook이 다음 작업으로 이동합니다.

Screenshot showing the Retry until this condition is true field and examples of PowerShell expressions that can be used in the retry condition.

다시 시도 조건은 활동 다시 시도 정보에 대한 액세스를 제공하는 RetryData라는 변수를 사용할 수 있습니다. 이 변수는 다음 테이블의 속성을 가집니다.

속성 설명
NumberOfAttempts 활동이 실행된 횟수입니다.
Output 활동의 마지막 실행에서 출력입니다.
TotalDuration 작업이 처음으로 시작된 이후 경과된 시간입니다.
StartedAt 활동을 처음 시작한 시간(UTC 형식)입니다.

다음은 활동 다시 시도 조건의 예제입니다.

# Run the activity exactly 10 times.
$RetryData.NumberOfAttempts -ge 10
# Run the activity repeatedly until it produces any output.
$RetryData.Output.Count -ge 1
# Run the activity repeatedly until 2 minutes has elapsed.
$RetryData.TotalDuration.TotalMinutes -ge 2

작업에 다시 시도 조건을 구성하면 이를 알리는 두 개의 시각 신호가 작업에 포함됩니다. 하나는 활동에 표시되고 다른 하나는 활동의 구성을 검토할 경우 표시됩니다.

Activity Retry Visual Indicators

워크플로 스크립트 컨트롤

워크플로 스크립트 컨트롤은 작성되는 그래픽 Runbook의 유형에 따라 PowerShell 또는 PowerShell 워크플로 스크립트를 허용하는 특별한 활동입니다. 이 컨트롤은 다른 방법으로는 사용하지 못할 수 있는 기능을 제공합니다. 매개 변수를 사용할 수 없지만 활동 출력 및 Runbook 입력 매개 변수에 변수를 사용할 수는 있습니다. 활동의 모든 출력이 데이터 버스에 추가됩니다. 예외는 나가는 링크가 없는 출력이며, 이 경우 해당 출력이 Runbook의 출력에 추가됩니다.

예를 들어 다음 코드는 NumberOfDays라는 Runbook 입력 변수를 사용하여 날짜 계산을 수행합니다. 그런 다음 Runbook의 후속 활동에서 사용할 출력으로 계산된 DateTime 값을 보냅니다.

$DateTimeNow = (Get-Date).ToUniversalTime()
$DateTimeStart = ($DateTimeNow).AddDays(-$NumberOfDays)}
$DateTimeStart

그래픽 Runbook의 링크 는 두 개의 활동을 연결합니다. 원본 활동에서 대상 활동을 가리키는 화살표로 캔버스에 표시됩니다. 활동은 화살표 방향으로 실행되며, 원본 활동이 완료된 대상 활동이 시작됩니다.

원본 활동을 선택하고 셰이프 아래쪽에 있는 원을 클릭하여 두 활동 간의 링크를 만들 수 있습니다. 화살표를 대상 활동으로 끌어 놓습니다.

Create a link

링크를 선택하여 구성 블레이드에서 해당 속성을 구성할 수 있습니다. 속성에는 다음 표에 설명된 링크 형식이 포함됩니다.

연결 유형 설명
파이프라인 대상 활동은 원본 활동의 각 개체 출력에 대해 한 번 실행됩니다. 원본 활동의 출력이 없는 경우에는 대상 활동이 실행되지 않습니다. 원본 활동의 출력은 개체로 제공됩니다.
Sequence 대상 활동은 원본 활동에서 출력을 받을 때 한 번만 실행됩니다. 원본 활동의 출력이 개체 배열로 제공됩니다.

Runbook 활동 시작

그래픽 Runbook은 들어오는 링크가 없는 활동으로 시작됩니다. Runbook의 시작 활동 역할을 하는 활동은 하나뿐인 경우가 많습니다. 여러 활동에 들어오는 링크가 없는 경우 이러한 활동을 병렬로 실행하여 Runbook이 시작됩니다. 각 활동이 완료되는 대로 링크에 따라 다른 활동을 실행합니다.

링크에 대한 조건을 지정하면 조건이 true로 확인된 경우에만 대상 활동이 실행됩니다. 일반적으로 조건에서 ActivityOutput 변수를 사용하여 원본 활동의 출력을 검색합니다.

파이프라인 링크의 경우 단일 개체에 대한 조건을 지정해야 합니다. Runbook은 원본 활동의 각 개체 출력에 대한 조건을 평가합니다. 그런 다음 조건을 충족하는 각 개체에 대해 대상 활동을 실행합니다. 예를 들어 원본 활동이 Get-AzVM인 경우 조건부 파이프라인 링크에 다음 구문을 사용하여 Group1이라는 리소스 그룹의 가상 머신만을 검색할 수 있습니다.

$ActivityOutput['Get Azure VMs'].Name -match "Group1"

시퀀스 링크의 경우 원본 활동의 모든 개체 출력이 포함된 단일 배열이 반환되므로 Runbook이 조건을 한 번만 평가합니다. 따라서 Runbook은 파이프라인 링크에서와 같이 필터링을 위해 시퀀스 링크를 사용할 수 없습니다. 시퀀스 링크는 다음 활동이 실행되는지 여부를 간단히 확인할 수 있습니다.

예를 들어 시작 VM Runbook에 다음과 같은 활동 집합이 있습니다.

Conditional Link with Sequences

Runbook은 입력 매개 변수 VMNameResourceGroupName의 값을 확인하는 세 가지 시퀀스 링크를 사용하여 수행할 적절한 작업을 결정합니다. 가능한 작업은 단일 VM을 시작하거나, 리소스 그룹의 모든 VM을 시작하거나, 구독에서 모든 VM을 시작하는 것입니다. Connect to AzureGet single VM 간의 시퀀스 링크의 경우 조건 논리는 다음과 같습니다.

<#
Both VMName and ResourceGroupName runbook input parameters have values
#>
(
(($VMName -ne $null) -and ($VMName.Length -gt 0))
) -and (
(($ResourceGroupName -ne $null) -and ($ResourceGroupName.Length -gt 0))
)

조건부 링크를 사용하면 원본 활동에서 해당 분기의 다른 활동까지 사용 가능한 데이터가 조건별로 필터링됩니다. 활동이 여러 링크의 원본인 경우에는 각 분기의 활동에 사용할 수 있는 데이터가 해당 분기에 연결된 링크의 조건에 따라 달라집니다.

예를 들어 아래 Runbook의 Start-AzVM 활동은 모든 가상 머신을 시작합니다. 두 개의 조건부 링크가 있습니다. 첫 번째 조건부 링크는 식 $ActivityOutput['Start-AzVM'].IsSuccessStatusCode -eq $true를 사용하여 Start-AzVM 활동이 성공적으로 완료되었는지 필터링합니다. 두 번째 조건부 링크는 식 $ActivityOutput['Start-AzVM'].IsSuccessStatusCode -ne $true를 사용하여 Start-AzVm 활동이 가상 머신을 시작하지 못하는 경우를 필터링합니다.

Conditional link example

첫 번째 링크를 따르고 Get-AzureVM의 활동 출력을 사용하는 모든 활동은 Get-AzureVM이 실행된 당시에 시작된 가상 머신만 검색합니다. 두 번째 링크를 따르는 모든 활동은 Get-AzureVM이 실행된 당시에 중지된 가상 머신만 가져옵니다. 세 번째 링크를 따르는 모든 활동은 실행 상태에 상관없이 모든 가상 머신을 가져옵니다.

분기 동기화 사용

분기 동기화는 들어오는 모든 분기가 완료될 때까지 대기하는 특별한 활동입니다. 이를 통해 Runbook은 여러 활동을 병렬로 실행하고 모든 활동이 완료된 후 다음 단계를 진행할 수 있습니다.

분기 동기화에서는 들어오는 링크의 개수에 제한이 없지만 이러한 링크 중 하나만 파이프라인일 수 있습니다. 들어오는 시퀀스 링크의 수는 제한되지 않습니다. 들어오는 파이프라인 링크가 여러 개 있는 분기 동기화를 만들고 Runbook을 저장할 수 있지만 이를 실행하면 오류가 발생합니다.

아래 예제는 가상 머신 집합을 시작하고 이와 동시에 해당 컴퓨터에 적용할 패치를 다운로드하는 Runbook의 일부입니다. 두 프로세스 모두 완료된 후 Runbook을 계속하기 위해 분기 동기화가 사용됩니다.

Junction

주기 사용

주기는 대상 활동이 해당 원본 활동에 다시 연결되거나 최종적으로 해당 원본에 다시 연결되는 다른 활동에 연결되는 경우에 형성됩니다. 그래픽 작성은 현재 주기를 지원하지 않습니다. Runbook에 주기가 있는 경우 정상적으로 저장되지만 실행하면 오류가 발생합니다.

Cycle

활동 간의 데이터 공유

나가는 링크가 있는 활동이 출력하는 모든 데이터는 Runbook의 데이터 버스에 기록됩니다. Runbook의 모든 활동은 데이터 버스에 있는 데이터를 사용하여 매개 변수 값을 채우거나 스크립트 코드에 포함할 수 있습니다. 활동은 워크플로의 모든 이전 활동에 대한 출력에 액세스할 수 있습니다.

데이터가 데이터 버스에 기록되는 방식은 활동의 링크 형식에 따라 달라집니다. 파이프라인 링크의 경우 데이터가 여러 개체로 출력됩니다. 시퀀스 링크의 경우 데이터는 배열로 출력됩니다. 값이 하나만 있으면 단일 요소 배열로 출력됩니다.

Runbook이 데이터 버스의 데이터에 액세스하는 방법은 두 가지가 있습니다.

  • 활동 출력 데이터 원본을 사용합니다.
  • PowerShell 식 데이터 원본을 사용합니다.

첫 번째 메커니즘은 활동 출력 데이터 원본을 사용하여 다른 활동의 매개 변수를 채웁니다. 출력이 개체인 경우에는 Runbook이 단일 속성을 지정할 수 있습니다.

activity output

두 번째 데이터 액세스 메커니즘은 아래와 같은 구문으로 ActivityOutput 변수를 사용하여 PowerShell 식 데이터 원본 또는 워크플로 스크립트 활동의 출력을 검색합니다. 출력이 개체인 경우에는 Runbook이 단일 속성을 지정할 수 있습니다.

$ActivityOutput['Activity Label']
$ActivityOutput['Activity Label'].PropertyName

검사점 사용

활동에서 검사점 Runbook을 선택하여 그래픽 PowerShell 워크플로 Runbook에 검사점을 설정할 수 있습니다. 활동을 실행한 후에 검사점을 설정하게 됩니다.

Checkpoint

검사점은 그래픽 PowerShell 워크플로 Runbook에서 사용할 수 있고 그래픽 Runbook에서는 사용할 수 없습니다. Runbook에서 Azure cmdlet을 사용하는 경우 Connect-AzAccount 활동을 사용하여 검사점 작업을 수행해야 합니다. Runbook이 일시 중단되고 다른 작업자의 이 검사점에서 다시 시작해야 하는 경우 연결 작업이 사용됩니다.

Runbook 입력 처리

Runbook에는 Azure Portal을 통해 Runbook을 시작하는 사용자의 입력, 또는 현재 Runbook이 자식 Runbook으로 사용되는 경우 다른 Runbook의 입력이 필요합니다. 예를 들어 가상 머신을 만드는 Runbook의 경우 사용자는 Runbook이 시작될 때마다 가상 머신의 이름 및 기타 속성과 같은 정보를 제공해야 할 수 있습니다.

Runbook은 하나 이상의 입력 매개 변수를 정의하여 입력을 수락합니다. 사용자는 Runbook이 시작될 때마다 이러한 매개 변수의 값을 제공합니다. 사용자가 Azure Portal을 사용하여 Runbook을 시작하면 Runbook에서 지원하는 각 입력 매개 변수의 값을 제공하라는 메시지가 사용자에게 표시됩니다.

Runbook을 작성할 때 Runbook 도구 모음에서 입력 및 출력을 클릭하여 해당 입력 매개 변수에 액세스할 수 있습니다. 이렇게 하면 입력 및 출력 컨트롤이 열리며, 여기에서 기존 입력 매개 변수를 편집하거나 입력 추가를 클릭하여 새 입력 매개 변수를 만들 수 있습니다.

Add input

각 입력 매개 변수는 다음 표의 속성으로 정의됩니다.

속성 설명
이름 필수입니다. 매개 변수의 이름입니다. 이름은 Runbook 내에서 고유해야 합니다. 문자로 시작해야 하며, 문자, 숫자, 밑줄만 사용할 수 있습니다. 이름은 공백을 포함할 수 없습니다.
설명 선택 사항입니다. 입력 매개 변수의 용도에 대한 설명입니다.
Type (선택 사항) 매개 변수 값에 필요한 데이터 형식입니다. Azure Portal에서는 입력 메시지를 표시할 때 각 매개 변수의 데이터 형식에 대한 적절한 컨트롤을 제공합니다. 지원되는 매개 변수 형식은 String, Int32, Int64, Decimal, Boolean, DateTime, Object입니다. 데이터 형식이 선택되어 있지 않으면 String에 대한 기본값으로 지정됩니다.
필수 선택 사항. 매개 변수의 값을 제공해야 하는지 여부를 지정하는 설정입니다. yes를 선택한 경우 Runbook이 시작될 때 값을 지정해야 합니다. no를 선택한 경우 Runbook이 시작될 때 값이 필요하지 않고 기본값을 사용할 수 있습니다. 기본값이 정의되지 않은 각 필수 매개 변수의 값을 제공하지 않으면 Runbook을 시작할 수 없습니다.
기본값 선택 사항. Runbook이 시작될 때 매개 변수가 전달되지 않는 경우 매개 변수에 사용되는 값입니다. 기본값을 설정하려면 Custom을 선택합니다. 기본값을 제공하지 않으려는 경우 None을 선택합니다.

Runbook 출력 처리

그래픽 작성은 Runbook의 출력에 대한 나가는 링크가 없는 활동에서 생성되는 데이터를 저장합니다. 출력은 Runbook 작업과 함께 저장되며, 해당 Runbook이 자식으로 사용되는 경우 부모 Runbook에서 사용할 수 있습니다.

PowerShell 식 사용

그래픽 작성의 장점 중 하나는 최소한의 PowerShell 지식으로 Runbook을 빌드할 수 있다는 것입니다. 그러나 현재 특정 매개 변수 값을 채우고 연결 조건을 설정하기 위해 PowerShell을 약간은 알아야 합니다. 이 섹션에서는 PowerShell 식을 간략히 소개합니다. PowerShell의 세부 사항 전체는 Windows PowerShell을 사용하는 스크립트에서 사용 가능합니다.

PowerShell 식을 데이터 원본으로 사용

PowerShell 식을 데이터 원본으로 사용하여 활동 매개 변수의 값을 PowerShell 코드의 결과로 채울 수 있습니다. 이 식은 간단한 함수를 수행하는 코드 한 줄이거나 또는 복잡한 논리를 수행하는 여러 줄의 코드일 수 있습니다. 변수에 할당되지 않은 명령의 출력은 매개 변수 값에 대한 출력입니다.

예를 들어 다음 명령은 현재 날짜를 출력합니다.

Get-Date

다음 코드 조각은 현재 날짜에서 문자열을 작성하고 변수에 할당합니다. 이 코드는 변수의 내용을 출력으로 보냅니다.

$string = "The current date is " + (Get-Date)
$string

다음 명령은 현재 날짜를 평가하고 현재 날짜가 주말인지 또는 평일인지를 나타내는 문자열을 반환합니다.

$date = Get-Date
if (($date.DayOfWeek = "Saturday") -or ($date.DayOfWeek = "Sunday")) { "Weekend" }
else { "Weekday" }

활동 출력 사용

Runbook의 이전 작업에서 출력을 사용하려면 다음 구문으로 ActivityOutput 변수를 사용합니다.

$ActivityOutput['Activity Label'].PropertyName

예를 들어 가상 머신의 이름을 요구하는 속성을 사용하여 활동을 수행할 수 있습니다. 이 경우 Runbook에서 다음 식을 사용할 수 있습니다.

$ActivityOutput['Get-AzureVM'].Name

속성에 단순한 이름 대신 가상 머신 개체가 필요한 경우 Runbook은 다음 구문을 사용하여 전체 개체를 반환합니다.

$ActivityOutput['Get-AzureVM']

Runbook은 다음과 같은 보다 복잡한 식에서 활동의 출력을 사용할 수 있습니다. 다음 식은 텍스트를 가상 머신 이름에 연결합니다.

"The computer name is " + $ActivityOutput['Get-AzureVM'].Name

값 비교

비교 연산자 를 사용하여 값을 비교 하거나 값이 지정된 패턴과 일치하는지를 확인합니다. 비교는 True 또는 False 값을 반환합니다.

예를 들어 다음 조건은 Get-AzureVM이라는 활동의 가상 머신이 현재 중지되었는지 확인합니다.

$ActivityOutput["Get-AzureVM"].PowerState -eq "Stopped"

다음 조건은 동일한 가상 머신이 중지됨 이외의 상태인지를 확인합니다.

$ActivityOutput["Get-AzureVM"].PowerState -ne "Stopped"

-and 또는 -or와 같은 논리 연산자를 사용하여 Runbook에서 여러 조건을 조인할 수 있습니다. 예를 들어 다음 조건은 이전 예제에서 동일한 가상 머신이 중지됨 또는 중지 중 상태인지 여부를 확인합니다.

($ActivityOutput["Get-AzureVM"].PowerState -eq "Stopped") -or ($ActivityOutput["Get-AzureVM"].PowerState -eq "Stopping")

해시 테이블 사용

해시 테이블은 값 집합을 반환하는 데 유용한 이름/값 쌍입니다. 또한 해시 테이블은 사전이라고 표시될 수도 있습니다. 특정 활동에 대한 속성은 단순 값 대신 해시 테이블을 필요로 합니다.

다음 구문을 사용하여 해시 테이블을 만듭니다. 해시 테이블은 항목을 몇 개이든 포함할 수 있지만 각각은 이름 및 값으로 정의됩니다.

@{ <name> = <value>; [<name> = <value> ] ...}

예를 들어 다음 식은 인터넷 검색에 대한 값이 있는 해시 테이블을 예상하는 활동 매개 변수의 데이터 원본으로 사용될 해시 테이블을 만듭니다.

$query = "Azure Automation"
$count = 10
$h = @{'q'=$query; 'lr'='lang_ja';  'count'=$Count}
$h

다음 예제에서는 Get Twitter Connection이라는 활동의 출력을 사용하여 해시 테이블을 채웁니다.

@{'ApiKey'=$ActivityOutput['Get Twitter Connection'].ConsumerAPIKey;
    'ApiSecret'=$ActivityOutput['Get Twitter Connection'].ConsumerAPISecret;
    'AccessToken'=$ActivityOutput['Get Twitter Connection'].AccessToken;
    'AccessTokenSecret'=$ActivityOutput['Get Twitter Connection'].AccessTokenSecret}

Azure 리소스 인증

Azure 리소스를 관리하는 Azure Automation의 Runbook에는 Azure에 대한 인증이 필요합니다. 관리 ID는 Automation Runbook을 사용하여 구독의 Azure Resource Manager 리소스에 액세스하는 기본 메커니즘입니다. 자동화 계정의 시스템 할당 관리 ID를 활용하여 Azure 리소스를 인증하고 액세스하는 자동화 계정으로 다음 Runbook을 가져와 그래픽 Runbook에 이 기능을 추가할 수 있습니다.

wget https://raw.githubusercontent.com/azureautomation/runbooks/master/Utility/AzMI/AzureAutomationTutorialWithIdentityGraphical.graphrunbook -outfile AzureAutomationTutorialWithIdentityGraphical.graphrunbook

그래픽 Runbook 내보내기

게시된 버전의 그래픽 Runbook만 내보낼 수 있습니다. Runbook이 아직 게시되지 않은 경우 내보내기 단추를 사용할 수 없습니다. 내보내기 단추를 클릭하면 Runbook이 로컬 컴퓨터에 다운로드됩니다. 파일 이름은 .graphrunbook 확장명이 추가된 Runbook 이름과 일치합니다.

그래픽 Runbook 가져오기

Runbook을 추가할 때 가져오기 옵션을 선택하여 그래픽 또는 그래픽 PowerShell 워크플로 Runbook 파일을 가져올 수 있습니다. 가져올 파일을 선택할 때 동일한 이름을 유지하거나 새 이름을 제공할 수 있습니다. 선택한 파일을 평가한 후 Runbook 형식 필드에 Runbook의 유형이 표시됩니다. 잘못된 다른 형식을 선택하려고 하면 그래픽 편집기에서 충돌이 발생할 수 있다는 메시지를 표시되며 변환하는 동안 구문 오류가 발생할 수 있습니다.

Import runbook

그래픽 Runbook 테스트

Azure Automation의 각 그래픽 Runbook에는 초안 버전과 게시된 버전이 있습니다. 게시된 버전만 실행할 수 있고 초안 버전만 편집할 수 있습니다. 게시됨 버전은 초안 버전 변경 내용의 영향을 받지 않습니다. 사용할 준비가 된 초안 버전을 게시하여 현재 게시된 버전을 초안 버전으로 덮어씁니다.

게시된 버전을 변경하지 않고 Azure Portal에서 Runbook의 초안 버전을 테스트할 수 있습니다. 또는 Runbook이 게시되기 전에 새 Runbook을 테스트하여 버전 교체 전에 Runbook이 제대로 작동하는지 확인할 수 있습니다. Runbook 테스트는 초안 버전을 실행하고 수행한 모든 작업이 완료되도록 합니다. 작업 기록은 생성되지 않지만 테스트 출력 창에는 출력이 표시됩니다.

편집을 위해 Runbook을 열고 테스트 창을 클릭하여 그래픽 Runbook에 대한 테스트 컨트롤을 엽니다. 테스트 컨트롤에서 입력 매개 변수를 묻는 메시지가 표시되면 시작을 클릭하여 Runbook을 시작할 수 있습니다.

그래픽 Runbook 게시

편집용 Runbook을 열고 게시를 클릭하여 그래픽 Runbook을 게시할 수 있습니다. Runbook에서 가능한 상태는 다음과 같습니다.

  • 신규 - Runbook이 아직 게시되지 않았습니다.
  • 게시됨 - Runbook이 게시되었습니다.
  • 편집 - Runbook이 게시된 후 편집되었으며 초안 버전과 게시된 버전이 다릅니다.

Runbook statuses

게시된 버전의 Runbook으로 되돌릴 수 있는 옵션이 있습니다. 이 작업을 수행하면 Runbook을 마지막으로 게시한 이후 변경된 내용이 모두 삭제됩니다. Runbook의 초안 버전을 게시된 버전으로 바꿉니다.

다음 단계