Terraform 계획을 사용하여 Google Cloud Platform Ubuntu 인스턴스 배포 및 Azure Arc에 연결

이 문서에서는 제공된 Terraform 계획을 사용하여 GCP(Google Cloud Platform) 인스턴스를 배포하고 Azure Arc 지원 서버 리소스로 연결하기 위한 지침을 제공합니다.

필수 조건

  1. Azure Arc Jumpstart 리포지토리를 복제합니다.

    git clone https://github.com/microsoft/azure_arc.git
    
  2. Azure CLI를 설치하거나 버전 2.7 이상으로 업데이트합니다. 다음 명령을 사용하여 현재 설치된 버전을 확인합니다.

    az --version
    
  3. SSH 키 생성(또는 기존 SSH 키 사용)

  4. 무료 Google Cloud Platform 계정 만들기

  5. Terraform 설치 >= 0.12

  6. Azure 서비스 주체를 만듭니다.

    GCP 가상 머신을 Azure Arc에 연결하려면 기여자 역할이 할당된 Azure 서비스 주체가 필요합니다. 이를 만들려면 Azure 계정에 로그인하고 다음 명령을 실행합니다. Azure Cloud Shell에서 이 명령을 실행할 수도 있습니다.

    az login
    az account set -s <Your Subscription ID>
    az ad sp create-for-rbac -n "<Unique SP Name>" --role contributor --scopes "/subscriptions/<Your Subscription ID>"
    

    예시:

    az ad sp create-for-rbac -n "http://AzureArcGCP" --role contributor --scopes "/subscriptions/00000000-0000-0000-0000-000000000000"
    

    출력은 다음과 같습니다.

    {
      "appId": "XXXXXXXXXXXXXXXXXXXXXXXXXXXX",
      "displayName": "http://AzureArcGCP",
      "password": "XXXXXXXXXXXXXXXXXXXXXXXXXXXX",
      "tenant": "XXXXXXXXXXXXXXXXXXXXXXXXXXXX"
    }
    

    참고 항목

    서비스 주체의 범위를 특정 Azure 구독 및 리소스 그룹으로 지정하는 것이 좋습니다.

새 GCP 프로젝트 만들기

  1. Google API 콘솔로 이동하여 Google 계정으로 로그인합니다. 로그인한 다음 Azure Arc demo라는 이름의 새 프로젝트를 만듭니다. 만든 후 프로젝트 ID는 일반적으로 프로젝트 이름과 다르기 때문에 프로젝트 ID를 복사해야 합니다.

    First screenshot of the New Project page in the GCP console.

    Second screenshot of the New Project page in the GCP console.

  2. 페이지 맨 위에 있는 드롭다운 목록에서 새 프로젝트를 만들고 선택하면 프로젝트에 대한 컴퓨팅 엔진 API 액세스를 활성화해야 합니다. + API 및 서비스 사용을 클릭하고 컴퓨팅 엔진을 검색합니다. 그런 다음 사용을 선택하여 API 액세스를 사용하도록 설정합니다.

    First screenshot of Compute Engine API in the GCP console.

    Second screenshot of Compute Engine API in the GCP console.

  3. 다음으로, Terraform이 GCP 프로젝트에서 리소스를 만들고 관리하는 데 사용할 서비스 계정 키를 설정합니다. 서비스 계정 키 만들기 페이지로 이동합니다. 드롭다운 목록에서 새 서비스 계정을 선택하고 이름을 지정한 다음, 프로젝트에서 소유자를 역할로 선택하고 JSON을 키 유형으로 선택한 다음, 만들기를 선택합니다. 그러면 Terraform이 리소스를 관리하는 데 필요한 모든 자격 증명이 포함된 JSON 파일이 다운로드됩니다. 다운로드한 JSON 파일을 azure_arc_servers_jumpstart/gcp/ubuntu/terraform 디렉터리에 복사합니다.

    A screenshot of how to create a service account in the GCP console.

  4. 마지막으로 ~/.ssh에서 SSH 키를 사용할 수 있고 id_rsa.pubid_rsa의 이름을 지정했는지 확인합니다. 위의 ssh-keygen 가이드에 따라 키를 만든 경우 이미 올바르게 설정되었어야 합니다. 그렇지 않은 경우 다른 경로의 키를 사용하도록 main.tf로 수정해야 할 수 있습니다.

배포

Terraform 계획을 실행하기 전에 계획에서 사용할 환경 변수를 내보내야 합니다. 이러한 변수는 방금 만든 Azure 서비스 주체, Azure 구독 및 테넌트, GCP 프로젝트 이름을 기반으로 합니다.

  1. az account list 명령을 사용하여 Azure 구독 ID 및 테넌트 ID를 검색합니다.

  2. Terraform 계획은 Microsoft Azure 및 Google Cloud Platform 모두에서 리소스를 만듭니다. 그런 다음 GCP 가상 머신에서 스크립트를 실행하여 Azure Arc 에이전트 및 필요한 모든 아티팩트 설치합니다. 이 스크립트에는 GCP 및 Azure 환경에 대한 특정 정보가 필요합니다. scripts/vars.sh을 편집하고 각 변수를 적절한 값으로 업데이트합니다.

    • TF_VAR_subscription_id= Azure 구독 ID
    • TF_VAR_client_id = Azure 서비스 주체 애플리케이션 ID
    • TF_VAR_client_secret = Azure 서비스 주체 암호
    • TF_VAR_tenant_id = Azure 테넌트 ID
    • TF_VAR_gcp_project_id = GCP 프로젝트 ID
    • TF_VAR_gcp_credentials_filename = GCP 자격 증명 JSON 파일 이름
  3. CLI에서 복제된 리포지토리의 azure_arc_servers_jumpstart/gcp/ubuntu/terraform 디렉터리로 이동합니다.

  4. 아래와 같이 원본 명령을 사용하여 scripts/vars.sh를 실행하여 편집한 환경 변수를 내보냅니다. Terraform에서 플랜이 제대로 실행되려면 이 환경 변수를 설정해야 합니다. 또한 이 스크립트는 Terraform 배포의 일부로 GCP 가상 머신에서 원격으로 자동으로 실행됩니다.

    source ./scripts/vars.sh
    
  5. Terraform AzureRM 공급자를 다운로드하는 terraform init 명령을 실행합니다.

    A screenshot of the terraform init command.

  6. 다음으로, terraform apply --auto-approve 명령을 실행하고 계획이 완료되기를 기다립니다. 완료되면 GCP Ubuntu VM이 배포되고 새 리소스 그룹 내에서 새 Azure Arc 지원 서버로 연결됩니다.

  7. Azure Portal을 열고 arc-gcp-demo 리소스 그룹으로 이동합니다. GCP에서 만든 가상 머신은 리소스로 표시됩니다.

    A screenshot of an Azure Arc-enabled server in the Azure portal.

반자동 배포(선택 사항)

알고 계신 것처럼 실행의 마지막 단계는 VM을 새 Azure Arc 지원 서버 리소스로 등록하는 것입니다.

A screenshot of running the azcmagent connect command.

실제 등록 프로세스를 데모/제어하려면 다음을 수행합니다.

  1. install_arc_agent.sh.tmpl 스크립트 템플릿에서 run connect command 섹션을 주석으로 처리하고 파일을 저장합니다.

    A screenshot showing main.tf being commented out to disable automatic onboarding of an Azure Arc agent.

  2. terraform output을 실행하여 GCP VM의 공용 IP를 가져옵니다.

    A screenshot of output from Terraform.

  3. ssh arcadmin@xx.xx.xx.xx를 사용하여 VM을 SSH합니다. 여기서 xx.xx.xx.xx는 호스트 IP입니다.

    A screenshot of an SSH key connecting to a GCP server.

  4. vars.sh에서 모든 환경 변수 내보내기

    A screenshot of environment variables exporting with vars.sh.

  5. 다음 명령을 실행합니다.

    azcmagent connect --service-principal-id $TF_VAR_client_id --service-principal-secret $TF_VAR_client_secret --resource-group "Azure Arc gcp-demo" --tenant-id $TF_VAR_tenant_id --location "westus2" --subscription-id $TF_VAR_subscription_id
    

    A screenshot of the azcmagent connect command completing successfully.

  6. 완료되면 VM이 Azure Arc에 등록되고 Azure Portal을 통해 리소스 그룹에 표시됩니다.

배포 삭제

이 데모의 일부로 만든 모든 리소스를 삭제하려면 아래와 같이 terraform destroy --auto-approve 명령을 사용합니다.

A screenshot of the terraform destroy command.

또는 GCP 콘솔에서 직접 GCP VM을 삭제할 수 있습니다.

A screenshot showing how to delete a virtual machine from the GCP console.