Terraform planı kullanarak Amazon Elastic Compute Cloud'da bir Amazon Linux 2 örneği dağıtma ve Azure Arc'a bağlama

Bu makalede, sağlanan Terraform planını kullanarak bir Amazon Web Services (AWS) Amazon Elastic Compute Cloud (EC2) Linux 2 örneği dağıtmak ve bunu Azure Arc özellikli bir sunucu kaynağı olarak bağlamak için yönergeler sağlanmaktadır.

Önkoşullar

  1. Azure Arc Jumpstart deposunu kopyalayın.

    git clone https://github.com/microsoft/azure_arc.git
    
  2. Azure CLI'yi yükleyin veya güncelleştirin. Azure CLI 2.7.0 veya sonraki bir sürümü çalıştırıyor olmalıdır. Geçerli yüklü sürümünüzü denetlemek için kullanın az --version .

  3. SSH anahtarı oluşturma (veya mevcut SSH anahtarını kullanma)

  4. Ücretsiz AWS hesabı oluşturma

  5. Terraform >'u yükleme = 0,12

  6. Azure hizmet sorumlusu oluşturma.

    AWS sanal makinesini Azure Arc'a bağlamak için Katkıda Bulunan rolüyle atanmış bir Azure hizmet sorumlusu gereklidir. Oluşturmak için Azure hesabınızda oturum açın ve aşağıdaki komutları çalıştırın:

    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>"
    

    Örneğin:

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

    Çıkış şu şekilde görünmelidir:

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

    Dekont

    Hizmet sorumlusunu belirli bir Azure aboneliği ve kaynak grubuyla kapsamanızı kesinlikle öneririz.

AWS kimliği oluşturma

Terraform'un AWS'de kaynak oluşturabilmesi için uygun izinlere sahip yeni bir AWS IAM rolü oluşturmamız ve Terraform'u bunu kullanacak şekilde yapılandırmamız gerekir.

  1. AWS yönetim konsolunda oturum açma

  2. Oturum açtıktan sonra sol üstteki Hizmetler açılan listesini seçin. Güvenlik, Kimlik ve Uyumluluk altında, kimlik ve erişim yönetimi sayfasına erişmek için IAM'yiseçin

    A screenshot of the AWS cloud console.

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

  3. Soldaki menüden Kullanıcılar'a tıklayın ve ardından Yeni bir IAM kullanıcısı oluşturmak için Kullanıcı ekle'yi seçin.

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

  4. Kullanıcı Ekle sayfasında kullanıcıyı adlandırın Terraform ve Programlı Erişim onay kutusunu seçin ve ardından İleri'yi seçin

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

  5. İzinleri Ayarla sayfasında Var olan ilkeleri doğrudan ekle'yi seçin ve ardından ekran görüntüsünde görüldüğü gibi AmazonEC2FullAccess'in yanındaki kutuyu seçin ve ardından İleri'yi seçin.

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

  6. Etiketler sayfasında, anahtarıyla bir etiket atayın azure-arc-demove ardından gözden geçirme sayfasına gitmek için İleri'yi seçin.

    A screenshot of tags in an AWS cloud console.

  7. Her şeyin doğru olduğunu doğrulayın, ardından Kullanıcı oluştur'u seçin.

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

  8. Kullanıcı oluşturulduktan sonra kullanıcının erişim anahtarı kimliğini ve gizli dizi erişim anahtarını görürsünüz. Kapat'ı seçmeden önce bu değerleri aşağı kopyalayın. Sonraki sayfada, bunun nasıl görünmesi gerektiğini gösteren bir örnek görebilirsiniz. Bu anahtarlara sahip olduktan sonra bunları Terraform ile kullanarak AWS kaynakları oluşturabilirsiniz.

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

Terraform'ı yapılandırma

Terraform planını yürütmeden önce, plan tarafından kullanılacak ortam değişkenlerini dışarı aktarmanız gerekir. Bu değişkenler Azure aboneliğinizi ve kiracınızı, Azure hizmet sorumlusunu ve yeni oluşturduğunuz AWS IAM kullanıcısını ve anahtarlarını temel alır.

  1. komutunu kullanarak az account list Azure abonelik kimliğinizi ve kiracı kimliğinizi alın.

  2. Terraform planı hem Microsoft Azure hem de AWS'de kaynaklar oluşturur. Ardından Azure Arc aracısını ve tüm gerekli yapıtları yüklemek için AWS EC2 sanal makinesinde bir betik yürütür. Bu betik, AWS ve Azure ortamlarınız hakkında belirli bilgiler gerektirir. Değişkenlerin her birini uygun değerlerle düzenleyin scripts/vars.sh ve güncelleştirin.

    • TF_VAR_subscription_id= Azure abonelik kimliğiniz
    • TF_VAR_client_id= Azure hizmet sorumlusu uygulama kimliğiniz
    • TF_VAR_client_secret = Azure hizmet sorumlusu parolanız
    • TF_VAR_tenant_id= Azure kiracı kimliğiniz
    • AWS_ACCESS_KEY_ID = AWS erişim anahtarı
    • AWS_SECRET_ACCESS_KEY = AWS gizli anahtarı
  3. Azure CLI'dan kopyalanan deponun dizinine azure_arc_servers_jumpstart/aws/al2/terraform gidin.

  4. Aşağıda gösterildiği gibi kaynak komutuyla çalıştırarak scripts/vars.sh düzenlediğiniz ortam değişkenlerini dışarı aktarın. Terraform, planın düzgün yürütülmesi için bunların ayarlanmasını gerektirir. Bu betiğin Terraform dağıtımının bir parçası olarak AWS sanal makinesinde de otomatik olarak yürütüleceğini unutmayın.

    source ./scripts/vars.sh
    
  5. SSH anahtarlarınızın içinde ~/.ssh ve olarak adlandırıldığından id_rsa.pubid_rsaemin olun. Anahtarınızı oluşturmak için yukarıdaki kılavuzu izlediyseniz ssh-keygen , bu zaten doğru ayarlanmış olmalıdır. Aksi takdirde, farklı bir yola sahip bir anahtar kullanmak için değiştirmeniz main.tf gerekebilir.

  6. terraform init Terraform AzureRM sağlayıcısını indirecek komutu çalıştırın.

    A screenshot of the terraform init command.

Dağıtım

  1. terraform apply --auto-approve komutunu çalıştırın ve planın tamamlanmasını bekleyin. Tamamlandıktan sonra, yeni bir kaynak grubu içinde yeni bir Azure Arc özellikli sunucu olarak dağıtılan ve bağlanan bir AWS Amazon Linux 2 EC2 örneğine sahip olacaksınız.

  2. Azure portalını açın ve kaynak grubuna arc-servers-demo gidin. AWS'de oluşturulan sanal makine kaynak olarak görünür.

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

Yarı otomatik dağıtım (isteğe bağlı)

Fark etmiş olabileceğiniz gibi, çalıştırmanın son adımı VM'yi yeni bir Azure Arc özellikli sunucu kaynağı olarak kaydetmektir.

A screenshot of the azcmagent connect command.

Gerçek kayıt işleminin tanıtımını yapmak/denetlemek istiyorsanız aşağıdakileri yapın:

  1. Betik şablonunda install_arc_agent.sh.tmpl bölümü açıklama satırı yapın run connect command ve dosyayı kaydedin.

    A screenshot of the azcmagent connect command commented out.

  2. komutunu çalıştırarak terraform outputAWS VM'sinin genel IP'sini alın.

    A screenshot of output from Terraform.

  3. SSH'yi kullanarak ssh ec2-user@xx.xx.xx.xxVM'ye geçin. Burada xx.xx.xx.xx ana bilgisayar IP'sini kullanır.

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

  4. içindeki tüm ortam değişkenlerini dışarı aktarma vars.sh

    A screenshot of exported environment variables in var.sh.

  5. Şu komutu çalıştırın:

    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. Tamamlandığında VM'niz Azure Arc'a kaydedilir ve Azure portalı aracılığıyla kaynak grubunda görünür.

Dağıtımı silme

Bu tanıtım kapsamında oluşturduğunuz tüm kaynakları silmek için aşağıda gösterildiği gibi komutunu kullanın terraform destroy --auto-approve . A screenshot of the terraform destroy command.

Alternatif olarak AWS EC2 örneğini AWS konsolundan sonlandırarak doğrudan silebilirsiniz. A screenshot of how to terminate an instance in the AWS console.