연습 - 리소스 배포 순서 제어

완료됨

이 부분에서는 몇 가지 기본 설정 작업으로 시작합니다. Visual Studio Code에서 무료 Azure 샌드박스 환경이 제공하는 Azure 구독에 터미널 세션을 연결합니다. 이렇게 하면 Azure에 명령을 인증할 수 있습니다.

그런 다음 Linux VM(가상 머신)을 프로비전하는 기본 ARM 템플릿을 실행합니다. 배포가 완료되면 VM이 실행 중이고 연결 가능한지 확인합니다.

VM을 만드는 것은 일반적인 작업이지만 그전에 VM 리소스에 필요한 네트워킹 및 스토리지 구성 요소가 존재해야 합니다. dependsOn 구문을 통해 리소스가 프로비전되는 순서를 설정할 수 있습니다.

설치 프로그램

여기서는 Visual Studio Code를 열고 PowerShell 세션을 만들어 무료 Azure 샌드박스 환경이 제공하는 Azure 구독에 연결합니다.

이 설정 작업은 이 모듈에서 한 번만 수행하면 됩니다. 로그아웃하거나 연결이 끊어진 경우 이후 연습에서 이러한 단계를 다시 참조할 수 있습니다.

Visual Studio Code에서 PowerShell 열기

  1. Visual Studio Code를 엽니다.

  2. 터미널 메뉴를 사용하여 터미널 창을 엽니다.

  3. 터미널 창의 오른쪽에 있는 드롭다운 메뉴에 pwsh가 표시되면 올바른 셸을 사용하고 있는 것이며 다음 섹션으로 건너뛸 수 있습니다.

    Screenshot of Terminal window, terminal type.

  4. 해당 항목이 표시되지 않으면 드롭다운을 선택하고 기본 셸 선택을 선택합니다.

  5. pwsh를 선택합니다.

    Screenshot that shows selecting a shell from the drop-down menu.

  6. 터미널에서 +를 선택하여 셸로 pwsh를 사용하여 새 터미널을 만듭니다.

Azure에 로그인

  1. Connect-AzAccount를 실행하여 계정에 로그인합니다.

    Connect-AzAccount
    

    브라우저 창이 표시됩니다.

  2. 샌드박스를 활성화하는 데 사용한 계정을 선택하고 메시지가 표시되면 브라우저 창을 닫습니다.

활성 구독 설정

  1. Get-AzSubscription을 실행하여 샌드박스 환경의 구독 ID를 가져옵니다.

    Get-AzSubscription
    

    Concierge Subscription을 찾고 두 번째 열을 복사합니다. 두 번째 열은 cf49fbbc-217c-4eb6-9eb5-a6a6c68295a0과 같이 표시됩니다.

  2. 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 및 이를 실행하는 데 필요한 모든 리소스를 프로비전합니다.

  1. 다음 curl 명령을 실행하여 ARM 템플릿을 다운로드합니다.

    curl -O 'https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-linux/azuredeploy.json'
    
  2. ConvertTo-SecureString cmdlet을 실행하고 결과를 $secure라는 PowerShell 변수에 할당합니다.

    $secure = "insecurepassword123!" | ConvertTo-SecureString -AsPlainText -Force
    

    이제 배포 스크립트를 다음에 전달할 수 있는 암호화된 버전의 암호가 있습니다.

  3. 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를 통해 연결 가능한지 확인합니다. 이를 수행하려면:

  1. Invoke-Expression 명령을 실행하여 SSH를 통해 VM에 연결합니다.

    Invoke-Expression (Get-AzResourceGroupDeployment -Name azuredeploy -ResourceGroupName <rgn>your resource group</rgn>).outputs.sshCommand.value
    

    메시지가 표시되면 yes를 입력하여 연결을 계속 진행합니다. 그런 다음 관리자 암호 insecurepassword123!를 입력합니다.

    중요

    실제에서는 암호를 안전하게 유지하세요. 또한 퍼블릭 키 인증을 사용할 수 있습니다. 일반적으로 이 방법이 암호를 사용하는 것보다 안전합니다.

  2. VM에 대한 SSH 연결에서 hostname을 실행하여 VM의 호스트 이름을 출력합니다.

    hostname
    

    VM의 내부 호스트 이름 vm1이 표시됩니다.

    vm1
    
  3. exit를 실행하여 SSH 세션을 종료합니다.

    exit
    

축하합니다. ARM 템플릿을 사용하여 Linux VM을 성공적으로 배포했습니다. VM은 종속 리소스를 포함하는 공용 리소스 유형입니다.

설치 프로그램

여기서는 Visual Studio Code를 열고 터미널 세션을 만들어 무료 Azure 샌드박스 환경이 제공하는 Azure 구독에 연결합니다.

이 설정 작업은 이 모듈에서 한 번만 수행하면 됩니다. 로그아웃하거나 연결이 끊어진 경우 이후 연습에서 이러한 단계를 다시 참조할 수 있습니다.

Visual Studio Code에서 셸 열기

  1. Visual Studio Code를 엽니다.

  2. 터미널 메뉴를 사용하여 터미널 창을 엽니다.

  3. 드롭다운 메뉴에 원하는 셸(예: bash 또는 zsh)이 표시되는 경우 다음 섹션으로 건너뛸 수 있습니다.

  4. 해당 항목이 표시되지 않으면 드롭다운을 선택하고 기본 셸 선택을 선택합니다.

  5. 원하는 셸 유형을 선택합니다.

    Screenshot that shows selecting a shell from the drop-down menu.

  6. 터미널에서 +를 선택하여 선택한 셸 유형으로 새 터미널을 만듭니다.

Azure에 로그인

  1. 터미널에서 az login을 실행합니다.

    az login
    

    브라우저 창이 표시됩니다.

  2. 샌드박스를 활성화하는 데 사용한 계정을 선택하고 메시지가 표시되면 브라우저 창을 닫습니다.

활성 구독 설정

다음 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 및 이를 실행하는 데 필요한 모든 리소스를 프로비전합니다.

  1. 다음 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
    
  2. 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를 통해 연결 가능한지 확인합니다. 이를 수행하려면:

  1. 다음 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
    
  2. 다음 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
    
  3. 명령을 다시 실행합니다. 이번에는 $() 구문을 사용하여 SSH 명령을 실행합니다.

    $(az deployment group show \
      --name azuredeploy \
      --query properties.outputs.sshCommand.value \
      --output tsv)
    

    메시지가 표시되면 yes를 입력하여 연결을 계속 진행합니다. 그런 다음 관리자 암호 insecurepassword123!를 입력합니다.

    중요

    실제에서는 암호를 안전하게 유지하세요. 또한 퍼블릭 키 인증을 사용할 수 있습니다. 일반적으로 이 방법이 암호를 사용하는 것보다 안전합니다.

  4. VM에 대한 SSH 연결에서 hostname을 실행하여 VM의 호스트 이름을 출력합니다.

    hostname
    

    VM의 내부 호스트 이름 vm1이 표시됩니다.

    vm1
    
  5. exit를 실행하여 SSH 세션을 종료합니다.

    exit
    

축하합니다. ARM 템플릿을 사용하여 Linux VM을 성공적으로 배포했습니다. VM은 종속 리소스를 포함하는 공용 리소스 유형입니다.