PowerShell Script
지정된 String
으로 시작하는 리소스 그룹을 일괄 삭제 후, 같은 이름으로 생성하는 스크립트이다. 매일 검증 작업에 사용할 리소스 그룹을 생성 및 삭제하는 작업이 귀찮았다.
Tip. 리소스 그룹은 Subscription에 동일한 이름이 존재하는 경우, 생성이 불가능하다.
# 'chanpu-'로 시작하는 모든 리소스 그룹의 이름을 가져옵니다.
$rgsToDelete = az group list --query "[?starts_with(name, 'chanpu-')].name" --output tsv
# 각 리소스 그룹을 순회하며 삭제하고, 동일한 이름으로 새 리소스 그룹을 생성합니다.
foreach ($rg in $rgsToDelete)
{
# 리소스 그룹을 삭제합니다.
az group delete --name $rg --yes --no-wait
# 삭제가 완료될 때까지 기다립니다.
Do {
Start-Sleep -Seconds 5
$status = az group exists --name $rg
} While ($status -eq "true")
# 삭제 후, 동일한 이름으로 새 리소스 그룹을 생성합니다.
az group create --name $rg --location japaneast
}
스크립트 개요
위 스크립트는 두 가지 주요 작업을 수행한다.
- 특정 패턴을 가진 리소스 그룹을 일괄적으로 삭제
- 삭제된 리소스 그룹과 동일한 이름으로 새 리소스 그룹을 생성
스크립트 구성
–query “–query “[?starts_with(name, ‘String’)].name””
# chanpu-'로 시작하는 모든 리소스 그룹의 이름을 가져옵니다.
$rgsToDelete = az group list --query "[?starts_with(name, 'chanpu-')].name" --output tsv
리소스 그룹을 만들 때, 사용자를 특정하기 위해서 이름을 붙이는 경우가 많은데 나 같은 경우에는 chanpu-
를 사용한다.
위 코드는 chanpu-
로 시작하는 리소스 그룹을 $rgsToDelete 함수에 저장한다.
TIM. 일본인 택배 기사가 내 이름을 잘못 발음한 이후로 친구들에게 그 에피소드를 얘기했더니 그 뒤로 내 별명은 챤뿌가 되었다.
foreach ($rg in $rgsToDelete) {}
foreach ($rg in $rgsToDelete)
{
...
}
foreach
로 반복 작업을 수행한다.
Tip. $rgsToDelete의 값을 순서대로 $rg에 전달하여 작업을 수행한다.
az group delete –name $rg –yes –no-wait
# 리소스 그룹을 삭제합니다.
az group delete --name $rg --yes --no-wait
az group delete --nage $rg
를 실행하면, 삭제 확인을 묻는 프롬프트가 출력되므로 --yes
옵션을 추가한다.
Do { Start-Sleep -Seconds 5 $status = az group exists –name $rg } While ($status -eq “true”)
# 삭제가 완료될 때까지 기다립니다.
Do {
Start-Sleep -Seconds 5
$status = az group exists --name $rg
} While ($status -eq "true")
리소스 그룹의 경우, 동일한 구독(Subscription)
에서 같은 이름의 리소스 그룹은 생성할 수 없으므로, 삭제가 완료될 때까지 대기한다. Tip. 리소스 그룹의 리소스 양에 따라서 삭제가 완료될 때까지 시간이 걸리는 경우가 있으므로 Static 값으로 시간을 지정하면 경우에 따라 실패할 가능성이 존재한다.
az group create –name $rg –location japaneast
# 삭제 후, 동일한 이름으로 새 리소스 그룹을 생성합니다.
az group create --name $rg --location japaneast
삭제가 완료되면 동일한 이름($rg value)
으로 리소스 그룹을 생성한다.
주의 사항
- 리소스 그룹을 삭제할 때 하당 그룹 안의 모든 리소스도 삭제된다.
- 리소스 그룹의 리소스 종류 및 수에 따라 스크립트 실행 시간이 오래 걸릴 수 도 있다.
ex)Azure SQL Managed Instance
의 경우 생성도 오래 걸리지만, 삭제도 오래 걸린다.