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
Clonare il repository delle risorse introduttive per Azure Arc.
git clone https://github.com/microsoft/azure_arc.git
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.Generare una chiave SSH (o usarne una esistente)
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.
Accedere alla console di gestione di AWS
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
Selezionare Utenti dal menu a sinistra e quindi Aggiungi utente per creare un nuovo utente IAM.
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)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.
Nella pagina Tag assegnare un tag con una chiave di
azure-arc-demo
, quindi selezionare Next (Avanti) per passare alla pagina di revisione.Verificare che tutto sia corretto, quindi selezionare Create user (Crea utente).
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.
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.
Recuperare gli ID della sottoscrizione e del tenant di Azure usando il comando
az account list
.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 AzureTF_VAR_client_id
= ID applicazione dell'entità servizio di AzureTF_VAR_client_secret
= password dell'entità servizio di AzureTF_VAR_tenant_id
= ID tenant di AzureAWS_ACCESS_KEY_ID
= chiave di accesso AWSAWS_SECRET_ACCESS_KEY
= chiave privata AWS
Nell'interfaccia della riga di comando di Azure passare alla directory
azure_arc_servers_jumpstart/aws/al2/terraform
del repository clonato.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
Assicurarsi che le chiavi SSH siano disponibili in
~/.ssh
e denominateid_rsa.pub
eid_rsa
. Se per creare la chiave è stata seguita la guidassh-keygen
precedente, dovrebbe essere già configurata correttamente. In caso contrario, potrebbe essere necessario modificaremain.tf
per usare una chiave con un percorso diverso.Eseguire il comando
terraform init
per scaricare il provider AzureRM di Terraform.
Distribuzione
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.Aprire il portale di Azure e passare al gruppo di risorse
arc-servers-demo
. La macchina virtuale creata in AWS sarà visibile come risorsa.
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.
Se si vuole dimostrare/controllare il processo di registrazione effettivo, procedere come segue:
Nel modello di script
install_arc_agent.sh.tmpl
impostare come commento la sezionerun connect command
e salvare il file.Ottenere l'indirizzo IP pubblico della macchina virtuale AWS eseguendo
terraform output
.Accedere con SSH alla macchina virtuale usando
ssh ec2-user@xx.xx.xx.xx
, dovexx.xx.xx.xx
è l'indirizzo IP dell'host.Esportare tutte le variabili di ambiente in
vars.sh
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
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.
In alternativa, è possibile eliminare direttamente l'istanza di AWS EC2 terminando l'istanza dalla console di AWS.
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per