Terraform 계획을 사용하여 Amazon Elastic Compute Cloud에 Amazon Linux 2 인스턴스를 배포하고 Azure Arc에 연결

이 문서에서는 제공된 Terraform 계획을 사용하여 AWS(Amazon Web Services) Amazon EC2(Elastic Compute Cloud) Linux 2 인스턴스를 배포하고 Azure Arc가 지원되는 서버 리소스로 연결하기 위한 지침을 제공합니다.

필수 조건

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

    git clone https://github.com/microsoft/azure_arc.git
    
  2. Azure CLI 설치 또는 업데이트. Azure CLI는 버전 2.7.0 이상을 실행해야 합니다. az --version을 사용하여 현재 설치된 버전을 확인합니다.

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

  4. 무료 AWS 계정 만들기

  5. Terraform 설치 >= 0.12

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

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

    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://AzureArcAWS" --role contributor --scopes "/subscriptions/00000000-0000-0000-0000-000000000000"
    

    출력은 다음과 같습니다.

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

    참고 항목

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

AWS 자격 증명 만들기

Terraform이 AWS에서 리소스를 만들려면 적절한 권한이 있는 새 AWS IAM 역할을 만들고 이를 사용하도록 Terraform을 구성해야 합니다.

  1. AWS 관리 콘솔에 로그인

  2. 로그인한 후 왼쪽 위에 있는 서비스 드롭다운 목록을 선택합니다. 보안, ID 및 규정 준수에서 IAM을 선택하여 ID 및 액세스 관리 페이지에 액세스합니다.

    A screenshot of the AWS cloud console.

    A screenshot of an identity and access management AWS cloud console.

  3. 왼쪽 메뉴에서 사용자를 클릭한 다음, 사용자 추가를 선택하여 새 IAM 사용자를 만듭니다.

    A screenshot of how to create a new user in an AWS cloud console.

  4. 사용자 추가 페이지에서 사용자 Terraform 이름을 지정하고 프로그래밍 방식 액세스 확인란을 선택한 다음, 다음을 선택합니다.

    Second screenshot of how to create a new user in an AWS cloud console.

  5. 권한 설정 페이지에서 기존 정책 직접 연결을 선택한 다음, 스크린샷에 표시된 대로 AmazonEC2FullAccess 옆에 있는 상자를 선택하고, 다음을 선택합니다.

    Third screenshot of how to create a new user in an AWS cloud console.

  6. 태그 페이지에서 azure-arc-demo 키가 있는 태그를 할당한 다음 다음을 선택하여 검토 페이지로 진행합니다.

    A screenshot of tags in an AWS cloud console.

  7. 모든 것이 올바른지 확인한 다음 사용자 만들기를 선택합니다.

    Fourth screenshot of how to create a new user in an AWS cloud console.

  8. 사용자가 만들어지면 사용자의 액세스 키 ID 및 비밀 액세스 키가 표시됩니다. 닫기를 선택하기 전에 이러한 값을 아래로 복사합니다. 다음 페이지에서는 다음과 같은 예제를 볼 수 있습니다. 이러한 키가 있으면 이를 Terraform과 함께 사용하여 AWS 리소스를 만들 수 있습니다.

    A screenshot of creating a user successfully in an AWS cloud console.

Terraform 구성

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

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

  2. Terraform 계획은 Microsoft Azure와 AWS 모두에서 리소스를 만듭니다. 그런 다음, AWS EC2 가상 머신에서 스크립트를 실행하여 Azure Arc 에이전트 및 필요한 모든 아티팩트를 설치합니다. 이 스크립트에는 AWS 및 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
    • AWS_ACCESS_KEY_ID = AWS 액세스 키입니다.
    • AWS_SECRET_ACCESS_KEY = AWS 비밀 키
  3. Azure CLI에서 복제된 리포지토리의 azure_arc_servers_jumpstart/aws/al2/terraform 디렉터리로 이동합니다.

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

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

  6. Terraform AzureRM 공급자를 다운로드하는 terraform init 명령을 실행합니다.

    A screenshot of the terraform init command.

배포

  1. terraform apply --auto-approve 명령을 실행하고 플랜이 완료되기를 기다립니다. 완료되면 AWS Amazon Linux 2 EC2 인스턴스가 배포되고 새 리소스 그룹 내에서 새 Azure Arc 지원 서버로 연결됩니다.

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

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

반자동 배포(선택 사항)

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

A screenshot of the azcmagent connect command.

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

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

    A screenshot of the azcmagent connect command commented out.

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

    A screenshot of output from Terraform.

  3. xx.xx.xx.xx이(가) 호스트 IP인 ssh ec2-user@xx.xx.xx.xx을(를) 사용하여 VM으로 SSH합니다.

    A screenshot of an SSH key connecting to an EC2 server.

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

    A screenshot of exported environment variables in var.sh.

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

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

    Another screenshot of the azcmagent connect command.

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

배포 삭제

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

또는 AWS 콘솔에서 종료하여 AWS EC2 인스턴스를 직접 삭제할 수 있습니다. A screenshot of how to terminate an instance in the AWS console.