Condividi tramite


Usare un piano di Terraform per distribuire un'istanza di Google Cloud Platform Ubuntu e connetterla ad Azure Arc

Questo articolo fornisce indicazioni per l'uso del piano di Terraform fornito per distribuire un'istanza di Google Cloud Platform (GCP) e connetterla come risorsa server abilitata per Azure Arc.

Prerequisiti

  1. Clonare il repository delle risorse introduttive per Azure Arc.

    git clone https://github.com/microsoft/azure_arc.git
    
  2. Installare l'interfaccia della riga di comando di Azure 2.7 e successive o eseguirne l'aggiornamento a tale versione. Usare il comando seguente per verificare l'attuale versione installata.

    az --version
    
  3. Generare una chiave SSH (o usarne una esistente)

  4. Creare un account Google Cloud Platform gratuito

  5. Installare Terraform >= 0.12

  6. Creare un'entità servizio di Azure.

    Per connettere la macchina virtuale GCP ad Azure Arc, è necessario avere un'entità servizio di Azure assegnata con il ruolo Collaboratore. Per crearla, accedere al proprio account Azure ed eseguire il comando seguente. È possibile eseguire il comando anche in 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>"
    

    Ad esempio:

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

    L'output dovrebbe essere simile al seguente:

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

    Nota

    È consigliabile impostare l'ambito dell'entità servizio su una sottoscrizione e un gruppo di risorse di Azure specifici.

Creare un nuovo progetto GCP

  1. Passare alla console di API Google e accedere con l'account Google. Dopo aver eseguito l'accesso, creare un nuovo progetto denominato Azure Arc demo. Dopo la creazione, assicurarsi di copiare l'ID progetto perché in genere è diverso dal nome del progetto.

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

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

  2. Dopo aver creato e selezionato il nuovo progetto nell'elenco a discesa nella parte superiore della pagina, è necessario abilitare l'accesso all'API del motore di calcolo per il progetto. Fare clic su + Enable APIs and Services (Abilita API e servizi) e cercare il motore di calcolo. Selezionare quindi Enable (Abilita) per abilitare l'accesso alle API.

    First screenshot of Compute Engine API in the GCP console.

    Second screenshot of Compute Engine API in the GCP console.

  3. Successivamente configurare una chiave dell'account del servizio che Terraform userà per creare e gestire le risorse nel progetto GCP. Passare alla pagina per creare la chiave dell'account del servizio. Selezionare New Service Account (Nuovo account del servizio) nell'elenco a discesa, assegnare un nome, selezionare il progetto e quindi il ruolo di proprietario, il tipo di chiave JSON e selezionare Create (Crea). Verrà scaricato un file JSON con tutte le credenziali necessarie a Terraform per gestire le risorse. Copiare il file JSON scaricato nella directory azure_arc_servers_jumpstart/gcp/ubuntu/terraform.

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

  4. Assicurarsi infine che le chiavi SSH siano disponibili in ~/.ssh e denominate id_rsa.pub e id_rsa. Se per creare la chiave è stata seguita la guida ssh-keygen precedente, dovrebbe essere già configurata correttamente. In caso contrario, potrebbe essere necessario modificare main.tf per usare una chiave con un percorso diverso.

Distribuzione

Prima di eseguire il piano di Terraform, è necessario esportare le variabili di ambiente che verranno usate. Queste variabili si basano sull'entità servizio di Azure appena creata, sulla sottoscrizione e sul tenant di Azure, nonché sul nome del progetto GCP.

  1. Recuperare gli ID della sottoscrizione e del tenant di Azure usando il comando az account list.

  2. Il piano di Terraform crea risorse sia in Microsoft Azure sia in Google Cloud Platform. Esegue quindi uno script nella macchina virtuale GCP per installare l'agente di Azure Arc e tutti gli artefatti necessari. Questo script richiede determinate informazioni sugli ambienti GCP e Azure in uso. Modificare scripts/vars.sh e aggiornare ciascuna variabile con i valori appropriati.

    • TF_VAR_subscription_id = ID sottoscrizione di Azure
    • TF_VAR_client_id = ID applicazione dell'entità servizio di Azure
    • TF_VAR_client_secret = password dell'entità servizio di Azure
    • TF_VAR_tenant_id = ID tenant di Azure
    • TF_VAR_gcp_project_id = ID progetto GCP
    • TF_VAR_gcp_credentials_filename = nome del file JSON delle credenziali GCP
  3. Nell'interfaccia della riga di comando passare alla directory azure_arc_servers_jumpstart/gcp/ubuntu/terraform del repository clonato.

  4. Esportare le variabili di ambiente modificate eseguendo scripts/vars.sh con il comando source, come illustrato di seguito. Terraform ne richiede l'impostazione per il corretto funzionamento del piano. Questo script verrà eseguito automaticamente anche in remoto nella macchina virtuale nell'ambito della distribuzione di Terraform.

    source ./scripts/vars.sh
    
  5. Eseguire il comando terraform init per scaricare il provider AzureRM di Terraform.

    A screenshot of the terraform init command.

  6. Eseguire quindi il comando terraform apply --auto-approve e attendere il completamento del piano. Al termine, si avrà una macchina virtuale Ubuntu GCP distribuita e connessa come nuovo server abilitato per Azure Arc all'interno di un nuovo gruppo di risorse.

  7. Aprire il portale di Azure e passare al gruppo di risorse arc-gcp-demo. La macchina virtuale creata in GCP sarà visibile come risorsa.

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

Distribuzione semi-automatizzata (facoltativo)

Come si può notare, l'ultimo passaggio dell'esecuzione consiste nel registrare la macchina virtuale come nuova risorsa server abilitata per Azure Arc.

A screenshot of running the azcmagent connect command.

Se si vuole dimostrare/controllare il processo di registrazione effettivo, procedere come segue:

  1. Nel modello di script install_arc_agent.sh.tmpl impostare come commento la sezione run connect command e salvare il file.

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

  2. Ottenere l'indirizzo IP pubblico della macchina virtuale GCP eseguendo terraform output.

    A screenshot of output from Terraform.

  3. Accedere tramite SSH alla macchina virtuale usando ssh arcadmin@xx.xx.xx.xx, dove xx.xx.xx.xx è l'indirizzo IP dell'host.

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

  4. Esportare tutte le variabili di ambiente in vars.sh

    A screenshot of environment variables exporting with vars.sh.

  5. Esegui questo comando:

    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. Al termine, la macchina virtuale verrà registrata con Azure Arc e sarà visibile nel gruppo di risorse attraverso il portale di Azure.

Eliminare la distribuzione

Per eliminare tutte le risorse create nell'ambito di questa demo, usare il comando terraform destroy --auto-approve come illustrato sotto.

A screenshot of the terraform destroy command.

In alternativa, è possibile eliminare la macchina virtuale GCP direttamente dalla console GCP.

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