Verwenden einer Azure Resource Manager-Vorlage zum Bereitstellen und Verbinden einer Ubuntu-VM mit Azure Arc

Dieser Artikel enthält einen Leitfaden zum Verwenden einer Azure Resource Manager-Vorlage (ARM-Vorlage) zum automatischen Integrieren einer Ubuntu-VM in Azure Arc. Mit der bereitgestellten ARM-Vorlage werden die Azure-Ressourcen erstellt und das Skript für das Azure Arc-Onboarding auf der VM ausgeführt.

Auf Azure-VMs wird standardmäßig Azure Instance Metadata Service (IMDS) verwendet. Wenn Sie eine Azure-VM als Server mit Azure Arc-Unterstützung projizieren, entsteht ein Konflikt, durch den verhindert wird, dass die Azure Arc-Serverressourcen bei Verwendung von IMDS als Einheit dargestellt werden. Stattdessen „fungiert“ der Azure Arc-Server weiterhin als native Azure-VM.

In diesem Leitfaden können Sie Azure-VMs nur zu Demonstrationszwecken verwenden und in Azure Arc integrieren. Sie haben die Möglichkeit, einen Server zu simulieren, der außerhalb von Azure bereitgestellt wird, z. B. lokal oder auf anderen Cloudplattformen.

Hinweis

Es wird nicht davon ausgegangen, dass eine Azure-VM als Server mit Azure Arc-Unterstützung projiziert wird. Das folgende Szenario wird nicht unterstützt und sollte nur zu Demonstrations- und Testzwecken verwendet werden.

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 die Azure CLI auf mindestens Version 2.7. Überprüfen Sie mit dem folgenden Befehl die aktuell installierte Version.

    az --version
    
  3. Azure-Abonnement: Wenn Sie über kein Azure-Abonnement verfügen, können Sie ein kostenloses Azure-Konto erstellen.

  4. Erstellen Sie einen Azure-Dienstprinzipal.

    Damit Sie die Azure-Ressourcen mithilfe der ARM-Vorlage bereitstellen können, ist ein Azure-Dienstprinzipal erforderlich, dem die Rolle „Mitwirkender“ zugewiesen ist. Zum Erstellen dieses Dienstprinzipals melden Sie sich bei Ihrem Azure-Konto an und führen den folgenden Befehl aus. Sie können diesen Befehl auch in Azure Cloud Shell ausführen.

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

    Die Ausgabe sollte wie folgt aussehen:

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

    Hinweis

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

Automatisierungsflow

Im Folgenden wird der Ablauf der Automatisierung und Bereitstellung erläutert.

  1. Ein Benutzer bearbeitet die Parameterdatei der ARM-Vorlage (einmalige Bearbeitung). Diese Parameterwerte werden für die gesamte Bereitstellung verwendet.

  2. Die ARM-Vorlage enthält eine benutzerdefinierte Azure-VM-Skripterweiterung, mit der das Shellskript install_arc_agent.sh bereitgestellt wird.

  3. Damit die Azure-VM erfolgreich als Server mit Azure Arc-Unterstützung projiziert werden kann, wird mit dem Skript Folgendes durchgeführt:

    1. Festlegen von lokalen Betriebssystemumgebungsvariablen

    2. Generieren einer Datei des Typs ~/.bash_profile, die bei der ersten Anmeldung des Benutzers initialisiert wird, um die Umgebung zu konfigurieren. Mit diesem Skript werden folgende Vorgänge durchgeführt:

      • Beenden und Deaktivieren des Linux Azure-Gast-Agent-Diensts

      • Erstellen einer neuen Betriebssystem-Firewallregel, um ausgehenden Datenverkehr von Azure IMDS an die Remoteadresse 169.254.169.254 zu blockieren

      • Installieren des mit Connected Machine-Agents für Azure Arc

      • Entfernen Sie die Datei ~/.bash_profile, damit sie nach der ersten Anmeldung nicht ausgeführt wird.

  4. Ein Benutzer stellt eine SSH-Verbindung mit der Linux-VM her, über die das Skript ~/.bash_profile gestartet und die VM in Azure Arc integriert wird.

    Hinweis

    Mit dem Shellskript install_arc_agent.sh werden die Betriebssystem-Firewall aktiviert und neue Regeln für ein- und ausgehende Verbindungen eingerichtet. Standardmäßig wird der gesamte ein- und ausgehende Datenverkehr zugelassen, außer wenn der ausgehende Datenverkehr von Azure IMDS an die Remoteadresse 169.254.169.254 blockiert wird.

Bereitstellung

Wie zuvor erwähnt, werden bei dieser Bereitstellung ARM-Vorlagen verwendet. Sie stellen eine einzelne Vorlage bereit, mit der alle Azure-Ressourcen in einer einzelnen Ressourcengruppe erstellt werden und die erstellte VM in Azure Arc integriert wird.

  1. Melden Sie sich vor dem Bereitstellen der ARM-Vorlage über Azure-Befehlszeilenschnittstelle mit dem Befehl az login an.

  2. Bei der Bereitstellung wird die Parameterdatei der ARM-Vorlage verwendet. Bearbeiten Sie vor dem Initiieren der Bereitstellung die Datei azuredeploy.parameters.json im Ordner des lokalen geklonten Repository. Eine Beispielparameterdatei finden Sie hier.

  3. Navigieren Sie zum Bereitstellen der ARM-Vorlage zum lokalen geklonten Bereitstellungsordner, und führen Sie den folgenden Befehl aus:

    az group create --name <Name of the Azure resource group> --location <Azure region> --tags "Project=jumpstart_azure_arc_servers"
    az deployment group create \
    --resource-group <Name of the Azure resource group> \
    --name <The name of this deployment> \
    --template-uri https://raw.githubusercontent.com/microsoft/azure_arc/main/azure_arc_servers_jumpstart/azure/linux/arm_template/azuredeploy.json \
    --parameters <The `azuredeploy.parameters.json` parameters file location>
    

    Hinweis

    Verwenden Sie die gleiche Azure-Ressourcengruppe, die in der Datei azuredeploy.parameters.json verwendet wurde.

    Beispiel:

    az group create --name Arc-Servers-Linux-Demo --location "westeurope" --tags "Project=jumpstart_azure_arc_servers"
    az deployment group create \
    --resource-group Arc-Servers-Linux-Demo \
    --name arclinuxdemo \
    --template-uri https://raw.githubusercontent.com/microsoft/azure_arc/main/azure_arc_servers_jumpstart/azure/linux/arm_template/azuredeploy.json \
    --parameters azuredeploy.parameters.json
    
  4. Nachdem Azure-Ressourcen bereitgestellt wurden, werden sie im Azure-Portal angezeigt.

    A screenshot of an output from an ARM template.

    A screenshot resources in the resource group.

Linux-Anmeldung und Vorgehensweise nach der Bereitstellung

  1. Nach der Erstellung der Linux-VM wird im nächsten Schritt eine Verbindung mit der VM hergestellt. Verwenden Sie die zugehörige öffentliche IP-Adresse, um eine SSH-Verbindung mit der VM herzustellen.

    A screenshot of an Azure VM public IP address.

  2. Bei der ersten Anmeldung wird wie im Abschnitt Automatisierungsflow beschrieben ein Anmeldeskript ausgeführt. Dieses Skript wurde als Teil des automatisierten Bereitstellungsprozesses erstellt.

  3. Führen Sie das Skript aus, und schließen Sie die SSH-Sitzung nicht. Die Sitzung wird nach Abschluss des Vorgangs automatisch geschlossen.

    A screenshot of one type of script output.

    A screenshot of another type of script output.

    A screenshot of a third type of script output.

  4. Nach erfolgreichem Abschluss wird ein neuer Server mit Azure Arc-Unterstützung in der Ressourcengruppe hinzugefügt.

    A screenshot of a resource group from an Azure Arc-enabled server.

    A screenshot of details from an Azure Arc-enabled server.

Cleanup

Zum Löschen der gesamten Bereitstellung löschen Sie die Ressourcengruppe im Azure-Portal.

A screenshot of how to delete resource group