Condividi tramite


Usare un piano Terraform per distribuire un'istanza di Amazon Linux 2 in Amazon Elastic Compute Cloud e connetterla ad Azure Arc

Questo articolo contiene indicazioni per l'uso del piano Terraform disponibile per la distribuzione di un'istanza di Amazon Elastic Compute Cloud (EC2) Linux 2 di Amazon Web Services (AWS) 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 o aggiornare l'interfaccia della riga di comando di Azure. L'interfaccia della riga di comando di Azure deve essere la versione 2.7.0 o successiva. Usare az --version per verificare la versione attualmente installata.

  3. Generare una chiave SSH (o usarne una esistente)

  4. Creare un account AWS gratuito

  5. Installare Terraform >= 0.12

  6. Creare un'entità servizio di Azure.

    Per connettere la macchina virtuale AWS ad Azure Arc, è necessario disporre di un'entità servizio di Azure assegnata con il ruolo Collaboratore. Per crearla, accedere al proprio account Azure ed eseguire i comandi seguenti:

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

    L'output dovrebbe essere simile al seguente:

    {
      "appId": "XXXXXXXXXXXXXXXXXXXXXXXXXXXX",
      "displayName": "http://AzureArcAWS",
      "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'identità AWS

Per consentire a Terraform di creare risorse in AWS, è necessario creare un nuovo ruolo IAM AWS con le autorizzazioni appropriate e configurare Terraform per usarlo.

  1. Accedere alla console di gestione di AWS

  2. Dopo aver effettuato l'accesso, selezionare l'elenco a discesa Services (Servizi) in alto a sinistra. In Security, Identity, and Compliance (Sicurezza, identità e conformità) selezionare IAM per accedere alla pagina di gestione delle identità e degli accessi

    A screenshot of the AWS cloud console.

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

  3. Selezionare Utenti dal menu a sinistra e quindi Aggiungi utente per creare un nuovo utente IAM.

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

  4. Nella pagina Add user (Aggiungi utente) assegnare all'utente il nome Terraform e selezionare la casella di controllo Programmatic Access (Accesso a livello di codice) e quindi Next (Avanti)

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

  5. Nella pagina Imposta autorizzazioni successiva selezionare Collega direttamente i criteri esistenti, quindi la casella accanto ad AmazonEC2FullAccess, come illustrato nello screenshot e infine selezionare Avanti.

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

  6. Nella pagina Tag assegnare un tag con una chiave di azure-arc-demo, quindi selezionare Next (Avanti) per passare alla pagina di revisione.

    A screenshot of tags in an AWS cloud console.

  7. Verificare che tutto sia corretto, quindi selezionare Create user (Crea utente).

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

  8. Dopo aver creato l'utente, verranno visualizzati l'ID della chiave di accesso e la chiave di accesso privata dell'utente. Annotare questi valori prima di selezionare Close (Chiudi). Nella pagina successiva è possibile visualizzare un esempio dell'aspetto che dovrebbe avere. Dopo aver creato queste chiavi, è possibile usarle con Terraform per creare risorse AWS.

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

Configurare Terraform

Prima di eseguire il piano di Terraform, è necessario esportare le variabili di ambiente che verranno usate. Queste variabili si basano sulla sottoscrizione e sul tenant di Azure, sull'entità servizio di Azure, nonché sull'utente e sulle chiavi IAM di AWS appena creati.

  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 AWS. Esegue quindi uno script nella macchina virtuale AWS EC2 per installare l'agente di Azure Arc e tutti gli artefatti necessari. Questo script richiede determinate informazioni sugli ambienti AWS 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
    • AWS_ACCESS_KEY_ID = chiave di accesso AWS
    • AWS_SECRET_ACCESS_KEY = chiave privata AWS
  3. Nell'interfaccia della riga di comando di Azure passare alla directory azure_arc_servers_jumpstart/aws/al2/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 AWS nell'ambito della distribuzione di Terraform.

    source ./scripts/vars.sh
    
  5. Assicurarsi 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.

  6. Eseguire il comando terraform init per scaricare il provider AzureRM di Terraform.

    A screenshot of the terraform init command.

Distribuzione

  1. Eseguire il comando terraform apply --auto-approve e attendere il completamento del piano. Al termine, si avrà un'istanza di AWS Amazon Linux 2 EC2 distribuita e connessa come nuovo server con abilitazione di Azure Arc all'interno di un nuovo gruppo di risorse.

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

    A screenshot showing 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 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 of the azcmagent connect command commented out.

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

    A screenshot of output from Terraform.

  3. Accedere con SSH alla macchina virtuale usando ssh ec2-user@xx.xx.xx.xx, dove xx.xx.xx.xx è l'indirizzo IP dell'host.

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

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

    A screenshot of exported environment variables in var.sh.

  5. Esegui questo comando:

    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. 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 di seguito. A screenshot of the terraform destroy command.

In alternativa, è possibile eliminare direttamente l'istanza di AWS EC2 terminando l'istanza dalla console di AWS. A screenshot of how to terminate an instance in the AWS console.