연습 - 리소스 배포 순서 제어
이 부분에서는 몇 가지 기본 설정 작업으로 시작합니다. Visual Studio Code에서 무료 Azure 샌드박스 환경이 제공하는 Azure 구독에 터미널 세션을 연결합니다. 이렇게 하면 Azure에 명령을 인증할 수 있습니다.
그런 다음 Linux VM(가상 머신)을 프로비전하는 기본 ARM 템플릿을 실행합니다. 배포가 완료되면 VM이 실행 중이고 연결 가능한지 확인합니다.
VM을 만드는 것은 일반적인 작업이지만 그전에 VM 리소스에 필요한 네트워킹 및 스토리지 구성 요소가 존재해야 합니다. dependsOn
구문을 통해 리소스가 프로비전되는 순서를 설정할 수 있습니다.
설치 프로그램
여기서는 Visual Studio Code를 열고 PowerShell 세션을 만들어 무료 Azure 샌드박스 환경이 제공하는 Azure 구독에 연결합니다.
이 설정 작업은 이 모듈에서 한 번만 수행하면 됩니다. 로그아웃하거나 연결이 끊어진 경우 이후 연습에서 이러한 단계를 다시 참조할 수 있습니다.
Visual Studio Code에서 PowerShell 열기
Visual Studio Code를 엽니다.
터미널 메뉴를 사용하여 터미널 창을 엽니다.
터미널 창의 오른쪽에 있는 드롭다운 메뉴에 pwsh가 표시되면 올바른 셸을 사용하고 있는 것이며 다음 섹션으로 건너뛸 수 있습니다.
해당 항목이 표시되지 않으면 드롭다운을 선택하고 기본 셸 선택을 선택합니다.
pwsh를 선택합니다.
터미널에서 +를 선택하여 셸로 pwsh를 사용하여 새 터미널을 만듭니다.
Azure에 로그인
Connect-AzAccount
를 실행하여 계정에 로그인합니다.Connect-AzAccount
브라우저 창이 표시됩니다.
샌드박스를 활성화하는 데 사용한 계정을 선택하고 메시지가 표시되면 브라우저 창을 닫습니다.
활성 구독 설정
Get-AzSubscription
을 실행하여 샌드박스 환경의 구독 ID를 가져옵니다.Get-AzSubscription
Concierge Subscription
을 찾고 두 번째 열을 복사합니다. 두 번째 열은 cf49fbbc-217c-4eb6-9eb5-a6a6c68295a0과 같이 표시됩니다.Set-AzContext
를 실행하여 활성 구독을 컨시어지 구독으로 변경합니다.참고
{Your subscription ID}를 방금 마지막 명령에서 얻은 컨시어지 구독의 ID로 대체해야 합니다.
$subscription = Get-AzSubscription -SubscriptionId {Your subscription ID} Set-AzContext $subscription
기본 리소스 그룹 설정
일반적으로 Azure CLI 명령을 실행할 때는 리소스 그룹을 지정해야 합니다.
샌드박스는 기본 리소스 그룹을 제공합니다. 이어지는 Azure CLI 명령을 보다 쉽게 실행하려면 여기서 기본 리소스 그룹을 설정합니다.
Set-AzDefault
cmdlet을 실행하여 기본 리소스 그룹을 설정합니다.
Set-AzDefault -ResourceGroupName <rgn>resource group name</rgn>
참고
일반적으로 PowerShell을 사용하여 Azure에 리소스를 배포하는 경우 리소스 그룹을 지정해야 합니다. Set-AzDefault
를 사용하여 배포 컨텍스트를 설정하면 이 요구 사항을 무시할 수 있습니다.
일반적인 VM 배포에는 무엇이 포함되나요?
VM을 배포하는 경우 VM이 작동하려면 함께 배포해야 하는 여러 리소스가 있다는 점에 유의하세요.
다음은 일반적으로 VM과 함께 배포해야 하는 리소스의 유형을 간략히 요약한 것입니다.
- Microsoft.Storage/storageAccounts. 스토리지 계정은 운영 체제 및 파일을 위한 디스크 공간을 제공합니다.
- Microsoft.Network/publicIPAddresses. 공용 IP 주소를 사용하면 인터넷에서 VM에 연결할 수 있습니다.
- Microsoft.Network/networkSecurityGroups. 네트워크 보안 그룹에는 가상 네트워크에 대한 인바운드 및 아웃바운드 트래픽을 처리하는 규칙이 들어 있습니다.
- Microsoft.Network/virtualNetworks. VM은 가상 네트워크에 배치해야 합니다. 이 리소스를 사용하려면 먼저 네트워크 보안 그룹을 배포해야 합니다.
- Microsoft.Network/networkInterfaces. 이 리소스는 공용 IP 주소 및 가상 네트워크라는 두 가지 리소스에 종속됩니다.
- Microsoft.Compute/virtualMachines. 가상 머신은 배포하려는 기본 리소스입니다. 스토리지 계정 및 네트워크 인터페이스와 같은 두 가지 리소스에 종속됩니다.
Linux VM 배포
여기서는 Microsoft가 제공하는 GitHub 리포지토리에서 ARM 템플릿을 다운로드합니다. 이 템플릿은 Linux VM 및 이를 실행하는 데 필요한 모든 리소스를 프로비전합니다.
다음
curl
명령을 실행하여 ARM 템플릿을 다운로드합니다.curl -O 'https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-linux/azuredeploy.json'
ConvertTo-SecureString
cmdlet을 실행하고 결과를$secure
라는 PowerShell 변수에 할당합니다.$secure = "insecurepassword123!" | ConvertTo-SecureString -AsPlainText -Force
이제 배포 스크립트를 다음에 전달할 수 있는 암호화된 버전의 암호가 있습니다.
New-AzResourceGroupDeployment
명령을 실행하여 템플릿을 배포합니다.New-AzResourceGroupDeployment ` -TemplateFile "./azuredeploy.json" ` -adminUsername "azureuser" ` -vmName "vm1" ` -adminPasswordOrKey $secure
이 명령을 실행하는 데 몇 분 정도 걸릴 수 있습니다. 명령을 실행하는 동안 원하는 경우 별도의 브라우저 탭에서 ARM 템플릿을 검사할 수 있습니다.
dependsOn
키를 검색하여 리소스 종속성을 확인합니다. 예를 들어 가상 머신 리소스는 다음과 같은 네트워크 인터페이스에 종속됩니다."type": "Microsoft.Compute/virtualMachines", "apiVersion": "2020-06-01", "name": "[parameters('vmName')]", "location": "[parameters('location')]", "dependsOn": [ "[resourceId('Microsoft.Network/networkInterfaces/', variables('networkInterfaceName'))]" ],
배포 확인
VM이 프로비전되고 SSH를 통해 연결 가능한지 확인합니다. 이를 수행하려면:
Invoke-Expression
명령을 실행하여 SSH를 통해 VM에 연결합니다.Invoke-Expression (Get-AzResourceGroupDeployment -Name azuredeploy -ResourceGroupName <rgn>your resource group</rgn>).outputs.sshCommand.value
메시지가 표시되면
yes
를 입력하여 연결을 계속 진행합니다. 그런 다음 관리자 암호insecurepassword123!
를 입력합니다.중요
실제에서는 암호를 안전하게 유지하세요. 또한 퍼블릭 키 인증을 사용할 수 있습니다. 일반적으로 이 방법이 암호를 사용하는 것보다 안전합니다.
VM에 대한 SSH 연결에서
hostname
을 실행하여 VM의 호스트 이름을 출력합니다.hostname
VM의 내부 호스트 이름
vm1
이 표시됩니다.vm1
exit
를 실행하여 SSH 세션을 종료합니다.exit
축하합니다. ARM 템플릿을 사용하여 Linux VM을 성공적으로 배포했습니다. VM은 종속 리소스를 포함하는 공용 리소스 유형입니다.
설치 프로그램
여기서는 Visual Studio Code를 열고 터미널 세션을 만들어 무료 Azure 샌드박스 환경이 제공하는 Azure 구독에 연결합니다.
이 설정 작업은 이 모듈에서 한 번만 수행하면 됩니다. 로그아웃하거나 연결이 끊어진 경우 이후 연습에서 이러한 단계를 다시 참조할 수 있습니다.
Visual Studio Code에서 셸 열기
Visual Studio Code를 엽니다.
터미널 메뉴를 사용하여 터미널 창을 엽니다.
드롭다운 메뉴에 원하는 셸(예: bash 또는 zsh)이 표시되는 경우 다음 섹션으로 건너뛸 수 있습니다.
해당 항목이 표시되지 않으면 드롭다운을 선택하고 기본 셸 선택을 선택합니다.
원하는 셸 유형을 선택합니다.
터미널에서 +를 선택하여 선택한 셸 유형으로 새 터미널을 만듭니다.
Azure에 로그인
터미널에서
az login
을 실행합니다.az login
브라우저 창이 표시됩니다.
샌드박스를 활성화하는 데 사용한 계정을 선택하고 메시지가 표시되면 브라우저 창을 닫습니다.
활성 구독 설정
다음 az account set
명령을 실행하여 Azure 샌드박스 환경을 활성 구독으로 설정합니다.
az account set -s "Concierge Subscription"
참고
명령이 실패하는 경우 az account list --refresh --all
을 실행한 다음 az account set
명령을 다시 실행합니다.
기본 리소스 그룹 설정
일반적으로 Azure CLI 명령을 실행할 때는 리소스 그룹을 지정해야 합니다.
샌드박스는 기본 리소스 그룹을 제공합니다. 이어지는 Azure CLI 명령을 보다 쉽게 실행하려면 여기서 기본 리소스 그룹을 설정합니다.
다음 az configure
명령을 실행하여 기본 리소스 그룹을 설정합니다.
az configure --defaults group=<rgn>resource group name</rgn>
일반적인 VM 배포에는 무엇이 포함되나요?
VM을 배포하는 경우 VM이 작동하려면 함께 배포해야 하는 여러 리소스가 있다는 점에 유의하세요.
다음은 일반적으로 VM과 함께 배포해야 하는 리소스의 유형을 간략히 요약한 것입니다.
- Microsoft.Storage/storageAccounts. 스토리지 계정은 운영 체제 및 파일을 위한 디스크 공간을 제공합니다.
- Microsoft.Network/publicIPAddresses. 공용 IP 주소를 사용하면 인터넷에서 VM에 연결할 수 있습니다.
- Microsoft.Network/networkSecurityGroups. 네트워크 보안 그룹에는 가상 네트워크에 대한 인바운드 및 아웃바운드 트래픽을 처리하는 규칙이 들어 있습니다.
- Microsoft.Network/virtualNetworks. VM은 가상 네트워크에 배치해야 합니다. 이 리소스를 사용하려면 먼저 네트워크 보안 그룹을 배포해야 합니다.
- Microsoft.Network/networkInterfaces. 이 리소스는 공용 IP 주소 및 가상 네트워크라는 두 가지 리소스에 종속됩니다.
- Microsoft.Compute/virtualMachines. 가상 머신은 배포하려는 기본 리소스입니다. 스토리지 계정 및 네트워크 인터페이스와 같은 두 가지 리소스에 종속됩니다.
Linux VM 배포
여기서는 Microsoft가 제공하는 GitHub 리포지토리에서 ARM(Azure Resource Manager) 템플릿을 다운로드합니다. 이 템플릿은 Linux VM 및 이를 실행하는 데 필요한 모든 리소스를 프로비전합니다.
다음
wget
명령을 실행하여 ARM 템플릿을 다운로드합니다.wget https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-linux/azuredeploy.json
wget
이 설치되어 있지 않은 경우 이curl
명령을 실행할 수 있습니다.curl https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-linux/azuredeploy.json > azuredeploy.json
az deployment group create
명령을 실행하여 템플릿을 배포합니다.az deployment group create \ --template-file azuredeploy.json \ --parameters adminUsername=azureuser vmName=vm1 adminPasswordOrKey='insecurepassword123!'
이 명령을 실행하는 데 몇 분 정도 걸릴 수 있습니다. 명령을 실행하는 동안 원하는 경우 별도의 브라우저 탭에서 ARM 템플릿을 검사할 수 있습니다.
dependsOn
키를 검색하여 리소스 종속성을 확인합니다. 예를 들어 가상 머신 리소스는 다음과 같은 네트워크 인터페이스에 종속됩니다."type": "Microsoft.Compute/virtualMachines", "apiVersion": "2020-06-01", "name": "[parameters('vmName')]", "location": "[parameters('location')]", "dependsOn": [ "[resourceId('Microsoft.Network/networkInterfaces/', variables('networkInterfaceName'))]" ],
배포 확인
VM이 프로비전되고 SSH를 통해 연결 가능한지 확인합니다. 이를 수행하려면:
다음
az deployment group list
명령을 실행하여 구독의 배포 그룹을 나열합니다.az deployment group list --output table
azuredeploy라는 배포 그룹 하나를 볼 수 있습니다.
Name ResourceGroup State Timestamp Mode ----------- ------------------------------------------ --------- -------------------------------- ----------- azuredeploy learn-1ef901aa-3f6a-46aa-8e93-a7f11e5192b8 Succeeded 2020-11-24T17:55:39.762517+00:00 Incremental
다음
az deployment group show
명령을 실행하여 VM에 연결하는 데 사용할 수 있는 SSH 명령을 표시합니다.az deployment group show \ --name azuredeploy \ --query properties.outputs.sshCommand.value \ --output tsv
ARM 템플릿은
output
섹션에서 이 속성을 정의합니다. 예를 들면 다음과 같습니다.ssh azureuser@simplelinuxvm-a33zb3sc332ue.westus.cloudapp.azure.com
명령을 다시 실행합니다. 이번에는
$()
구문을 사용하여 SSH 명령을 실행합니다.$(az deployment group show \ --name azuredeploy \ --query properties.outputs.sshCommand.value \ --output tsv)
메시지가 표시되면
yes
를 입력하여 연결을 계속 진행합니다. 그런 다음 관리자 암호insecurepassword123!
를 입력합니다.중요
실제에서는 암호를 안전하게 유지하세요. 또한 퍼블릭 키 인증을 사용할 수 있습니다. 일반적으로 이 방법이 암호를 사용하는 것보다 안전합니다.
VM에 대한 SSH 연결에서
hostname
을 실행하여 VM의 호스트 이름을 출력합니다.hostname
VM의 내부 호스트 이름
vm1
이 표시됩니다.vm1
exit
를 실행하여 SSH 세션을 종료합니다.exit
축하합니다. ARM 템플릿을 사용하여 Linux VM을 성공적으로 배포했습니다. VM은 종속 리소스를 포함하는 공용 리소스 유형입니다.