Verwenden eines Terraform-Plans zum Bereitstellen einer Amazon Linux 2-Instanz in Amazon Elastic Compute Cloud und Herstellen einer Verbindung mit Azure Arc

In diesem Artikel finden Sie eine Anleitung zum Verwenden des bereitgestellten Terraform-Plans, um eine Instanz von Amazon Web Services (AWS) Amazon Elastic Compute Cloud (EC2) Linux 2 bereitzustellen und sie mit einer Serverressource mit Azure Arc-Unterstützung zu verbinden.

Voraussetzungen

  1. Klonen Sie das Repository für den Schnelleinstieg in Azure Arc.

    git clone https://github.com/microsoft/azure_arc.git
    
  2. Installieren oder aktualisieren Sie Azure CLI. Die ausgeführte Azure CLI-Version muss mindestens 2.7.0 sein. Überprüfen Sie mit az --version Ihre aktuell installierte Version.

  3. Generieren Sie einen SSH-Schlüssel (oder verwenden Sie einen vorhandenen SSH-Schlüssel)

  4. Erstellen Sie ein kostenloses AWS-Konto

  5. Installieren Sie Terraform >= Version 0.12.

  6. Erstellen Sie einen Azure-Dienstprinzipal.

    Um die AWS-VM mit Azure Arc zu verbinden, ist ein Azure-Dienstprinzipal mit der Rolle „Mitwirkender“ erforderlich. Zum Erstellen dieses Dienstprinzipals melden Sie sich bei Ihrem Azure-Konto an und führen die folgenden Befehle aus:

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

    Beispiel:

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

    Die Ausgabe sollte wie folgt aussehen:

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

    Hinweis

    Es wird dringend empfohlen, dass Sie für den Dienstprinzipal ein bestimmtes Azure-Abonnement und eine bestimmte Ressourcengruppe festlegen.

Erstellen einer AWS-Identität

Damit Terraform Ressourcen in AWS erstellen kann, muss eine neue AWS IAM-Rolle mit den erforderlichen Berechtigungen erstellt und Terraform für die Verwendung dieser Rolle konfiguriert werden.

  1. Melden Sie sich bei der AWS-Managementkonsole an.

  2. Wählen Sie nach der Anmeldung links oben die Dropdownliste Services aus. Wählen Sie unter Security, Identity, and Compliance (Sicherheit, Identität und Compliance) IAM aus, um auf die Seite „Identity and Access Management“ (Identitäts- und Zugriffsverwaltung) zuzugreifen.

    A screenshot of the AWS cloud console.

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

  3. Klicken Sie im Menü auf der linken Seite auf User (Benutzer), und wählen Sie Add user (Benutzer hinzufügen) aus, um einen neuen IAM-Benutzer zu erstellen.

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

  4. Nennen Sie auf der Seite Add User (Benutzer hinzufügen) den Benutzer Terraform. Aktivieren Sie das Kontrollkästchen Programmatic Access (Programmgesteuerter Zugriff), und wählen Sie dann Next (Weiter) aus.

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

  5. Wählen Sie auf der Seite Set Permissions (Berechtigungen festlegen) die Option Attach existing policies directly (Vorhandene Richtlinien direkt anfügen) aus. Aktivieren Sie dann das Kontrollkästchen neben AmazonEC2FullAccess (siehe Screenshot), und wählen Sie dann Next (Weiter) aus.

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

  6. Weisen Sie auf der Seite Tags ein Tag mit dem Schlüssel azure-arc-demo zu. Wählen Sie dann Next (Weiter) aus, um zur Überprüfungsseite zu gelangen.

    A screenshot of tags in an AWS cloud console.

  7. Vergewissern Sie sich, dass alles stimmt, und wählen Sie dann Create User (Benutzer erstellen) aus.

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

  8. Nach dem Erstellen des Benutzers sehen Sie die Zugriffsschlüssel-ID und den geheimen Zugriffsschlüssel des Benutzers. Kopieren Sie diese Werte, ehe Sie Close (Schließen) auswählen. Auf der nächsten Seite sehen Sie ein Beispiel, wie dies aussehen sollte. Sobald Sie diese Schlüssel haben, können Sie mithilfe von Terraform AWS-Ressourcen erstellen.

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

Konfigurieren von Terraform

Bevor Sie den Terraform-Plan ausführen, müssen Sie die vom Plan verwendeten Umgebungsvariablen exportieren. Diese Variablen basieren auf Ihrem Azure-Abonnement und -Mandanten, dem Azure-Dienstprinzipal sowie dem AWS IAM-Benutzer und den Schlüsseln, die Sie soeben erstellt haben.

  1. Rufen Sie Ihre Azure-Abonnement-ID und Mandanten-ID mithilfe des Befehls az account list ab.

  2. Durch den Terraform-Plan werden Ressourcen sowohl in Microsoft Azure als auch in AWS erstellt. Anschließend wird ein Skript auf einer AWS EC2-VM ausgeführt, um den Azure Arc-Agent und alle erforderlichen Artefakte zu installieren. Für dieses Skript werden bestimmte Informationen zu Ihrer AWS- und Azure-Umgebung benötigt. Bearbeiten Sie scripts/vars.sh, und aktualisieren Sie alle Variablen mit den entsprechenden Werten.

    • TF_VAR_subscription_id = ID Ihres Azure-Abonnements
    • TF_VAR_client_id = Anwendungs-ID Ihres Azure-Dienstprinzipals
    • TF_VAR_client_secret = Kennwort Ihres Azure-Dienstprinzipals
    • TF_VAR_tenant_id = ID Ihres Azure-Mandanten
    • AWS_ACCESS_KEY_ID = AWS-Zugriffsschlüssel
    • AWS_SECRET_ACCESS_KEY = Geheimer AWS-Schlüssel
  3. Navigieren Sie über die Azure CLI zum Verzeichnis azure_arc_servers_jumpstart/aws/al2/terraform des geklonten Repositorys.

  4. Exportieren Sie die bearbeiteten Umgebungsvariablen, indem Sie scripts/vars.sh mit dem Befehl „source“ ausführen (siehe unten). Diese Variablen sind für eine ordnungsgemäße Ausführung des Terraform-Plans erforderlich. Beachten Sie, dass dieses Skript im Rahmen der Terraform-Bereitstellung auch automatisch remote auf der AWS-VM ausgeführt wird.

    source ./scripts/vars.sh
    
  5. Stellen Sie sicher, dass Ihre SSH-Schlüssel in ~/.ssh verfügbar sind und die Namen id_rsa.pub und id_rsa haben. Wenn Sie den obigen Leitfaden zu ssh-keygen bei der Erstellung Ihres Schlüssels befolgt haben, sollte dieser bereits ordnungsgemäß eingerichtet sein. Andernfalls müssen Sie möglicherweise main.tf ändern, um einen Schlüssel mit einem anderen Pfad zu verwenden.

  6. Führen Sie den Befehl terraform init aus, um die AzureRM-Anbieter für Terraform herunterzuladen.

    A screenshot of the terraform init command.

Bereitstellung

  1. Führen Sie den Befehl terraform apply --auto-approve aus, und warten Sie, bis der Plan ausgeführt wurde. Nach Abschluss des Vorgangs haben Sie eine AWS Amazon Linux 2 EC2-Instanz bereitgestellt und als neuen Server mit Azure Arc-Unterstützung innerhalb einer neuen Ressourcengruppe verbunden.

  2. Öffnen Sie das Azure-Portal, und navigieren Sie zur Ressourcengruppe arc-servers-demo. Die in AWS erstellte VM ist als Ressource sichtbar.

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

Halbautomatisierte Bereitstellung (optional)

Wie Sie vielleicht bemerkt haben, besteht der letzte Schritt darin, die VM als neue Serverressource mit Azure Arc-Unterstützung zu registrieren.

A screenshot of the azcmagent connect command.

Wenn Sie den eigentlichen Registrierungsvorgang demonstrieren/steuern möchten, gehen Sie wie folgt vor:

  1. Kommentieren Sie in der Skriptvorlage install_arc_agent.sh.tmpl den Abschnitt run connect command aus, und speichern Sie die Datei.

    A screenshot of the azcmagent connect command commented out.

  2. Rufen Sie die öffentliche IP-Adresse der AWS-VM durch Ausführen von terraform output ab.

    A screenshot of output from Terraform.

  3. Verbinden Sie sich über SSH mit der VM unter Verwendung von ssh ec2-user@xx.xx.xx.xx, wobei xx.xx.xx.xx die IP-Adresse des Hosts ist.

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

  4. Exportieren Sie alle Umgebungsvariablen in vars.sh.

    A screenshot of exported environment variables in var.sh.

  5. Führen Sie den folgenden Befehl aus:

    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. Nach Abschluss des Vorgangs wird Ihre VM bei Azure Arc registriert und im Azure-Portal in der Ressourcengruppe angezeigt.

Löschen der Bereitstellung

Um alle Ressourcen zu löschen, die Sie als Teil dieser Demo erstellt haben, führen Sie den Befehl terraform destroy --auto-approve wie unten gezeigt aus. A screenshot of the terraform destroy command.

Alternativ können Sie die AWS EC2-Instanz auch direkt löschen, indem Sie sie über die AWS-Konsole außer Betrieb nehmen. A screenshot of how to terminate an instance in the AWS console.