참고 자료
Azure virtual machine extensions and features - docs.microsoft.com/en-us/azure/virtual-machines/extensions/overview
Custom Script Extension for Windows - docs.microsoft.com/en-us/azure/virtual-machines/extensions/custom-script-windows
Virtual machine extensions and features for Linux - docs.microsoft.com/en-us/azure/virtual-machines/extensions/features-linux
Azure에서 VM을 사용하던 중, VM에 어떤 응용 프로그램을 설치해야 하거나 설정 변경이 필요하다면, 보통 VM에 RDP나 SSH로 연결해서 작업합니다.
운영하는 VM 수가 몇 대 수준이라면 별 문제가 되지 않습니다. 한 대씩 한 대씩 RDP나 SSH로 연결해서 하나 하나 작업하면 됩니다.
VM 수가 열 대 이상이라면 작업을 스크립트로 만들고 실행하는 것을 고민할 겁니다. VM에 RDP나 SSH로 연결한 후 스크립트를 실행해서 필요한 작업들이 진행되도록 할 겁니다.
그런데 VM 수가 수십, 수백 대라면 어떻게 해야 할까요? 심지어 일부 VM은 관리자 계정이 무엇인지 알지 못해서 RDP나 SSH로 연결할 수 없다면요?
이런 경우 Azure VM Extension을 사용하면 됩니다.
- VM에서 작업할 내용을 Script로 만들고,
- 이 Script 파일을 Azure Blob Storage에 올립니다.
- Azure PowerShell이나 Azure CLI의 VM Extension 명령을 사용하여 이 Script 파일을 실행합니다.
아래는 Azure PowerShell에서 Azure VM Extension을 사용하는 예제입니다. 지정한 VM에서 스크립트가 실행됩니다.
Set-AzVMCustomScriptExtension -ResourceGroupName <resourceGroupName> `
-VMName <vmName> `
-Location myLocation `
-FileUri <fileUrl> `
-Run 'myScript.ps1' `
-Name DemoScriptExtension
VM이 수십 수백 대라면, 반복문과 병렬 실행문 사이에 VM Extension 명령을 실행하면 됩니다.
아래는 특정 Resource Group의 모든 VM에 대해 VM Extension을 실행하는 PowerShell 예제입니다.
$vmResourceGroup = "myResourceGroup"
$vms = Get-AzVM -ResourceGroupName $vmResourceGroup
Foreach ($vm in $vms) {
Start-Job -Name $vm.Name -ScriptBlock {
param ($vmResourceGroup, $vmName, $location)
Set-AzVMCustomScriptExtension -ResourceGroupName $vmResourceGroup `
-VMName $vmName `
-Location $location `
-FileUri <fileUrl> `
-Run 'myScript.ps1' `
-Name DemoScriptExtension
} -ArgumentList $vmResourceGroup, $vm.Name, $vm.Location
}
당연하겠지만, 테스트 환경에서 검증 후 운영 환경에 사용해야 합니다.
'Microsoft > Azure' 카테고리의 다른 글
Azure Firewall의 SNAT Private IP 주소 범위 (0) | 2021.02.06 |
---|---|
Automation Account 을 사용하여 Disk Snapshot 생성 (0) | 2021.01.31 |
온프레미스에서 Azure Private DNS 사용 (0) | 2020.12.12 |
Azure VMSS의 Load Balancer를 Application Gateway로 변경 (0) | 2020.12.10 |
Azure VPN Gateway 배포 및 S2S VPN 연결 (1) | 2020.12.09 |