Utiliser un plan Terraform pour déployer une instance Amazon Linux 2 sur Amazon Elastic Compute Cloud (EC2) et la connecter à Azure Arc
Cet article offre des conseils sur l’utilisation du plan Terraform fourni pour déployer une instance Linux 2 Amazon Elastic Compute Cloud (EC2) d’Amazon Web Services (AWS) et la connecter en tant que ressource de serveur avec Azure Arc.
Prérequis
Clonez le référentiel Azure Arc JumpStart.
git clone https://github.com/microsoft/azure_arc.git
Installez ou mettez à jour l’interface Azure CLI. Azure CLI doit exécuter la version 2.7.0 ou une version ultérieure. Utilisez
az --version
pour vérifier la version actuellement installée.Générer une clé SSH (ou utiliser une clé SSH existante)
Créez un principal de service Azure.
Pour connecter la machine virtuelle AWS à Azure Arc, un principal de service Azure auquel est affecté le rôle Contributeur est requis. Pour le créer, connectez-vous à votre compte Azure et exécutez les commandes suivantes :
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>"
Par exemple :
az ad sp create-for-rbac -n "http://AzureArcAWS" --role contributor --scopes "/subscriptions/00000000-0000-0000-0000-000000000000"
La sortie doit ressembler à ceci :
{ "appId": "XXXXXXXXXXXXXXXXXXXXXXXXXXXX", "displayName": "http://AzureArcAWS", "password": "XXXXXXXXXXXXXXXXXXXXXXXXXXXX", "tenant": "XXXXXXXXXXXXXXXXXXXXXXXXXXXX" }
Remarque
Nous vous recommandons vivement d’étendre le principal de service à un abonnement et groupe de ressources Azure spécifique.
Créer une identité AWS
Pour que Terraform puisse créer des ressources dans AWS, nous devons créer un nouveau rôle IAM dans AWS avec les autorisations appropriées et configurer Terraform pour l’utiliser.
Se connecter à la console de gestion AWS
Après vous être connecté, sélectionnez la liste déroulante Services en haut à gauche. Sous Sécurité, identité et conformité, sélectionnez IAM pour accéder à la page de gestion des identités et des accès
Cliquez sur Utilisateurs dans le menu de gauche, puis sélectionnez Ajouter un utilisateur pour créer un nouvel utilisateur IAM.
Dans la page Ajouter un utilisateur, nommez l’utilisateur
Terraform
et cochez la case Accès programmatique, puis sélectionnez Suivant.Dans la page Set Permissions (Définir les autorisations), sélectionnez Attach existing policies directly (Joindre les stratégies existantes directement), cochez la case à côté de AmazonEC2FullAccess comme indiqué dans la capture d’écran, puis sélectionnez Suivant.
Dans la page Étiquettes, affectez une étiquette avec une clé de
azure-arc-demo
, puis sélectionnez Suivant pour passer à la page de vérification.Vérifiez que tout est correct, puis sélectionnez Créer un utilisateur.
Une fois que l’utilisateur est créé, vous voyez l’ID de clé d’accès et la clé d’accès secrète de l’utilisateur. Copiez ces valeurs avant de sélectionner Fermer. Sur la page suivante, vous pouvez voir un exemple du résultat. Une fois que vous disposez de ces clés, vous pouvez les utiliser avec Terraform pour créer des ressources AWS.
Configurer Terraform
Avant d’exécuter le plan Terraform, vous devez exporter les variables d’environnement qui seront utilisées par le plan. Ces variables sont basées sur votre abonnement et votre locataire Azure, sur le principal de service Azure, ainsi que sur l’utilisateur IAM et les clés dans AWS que vous venez de créer.
Récupérez votre ID d’abonnement et votre ID de locataire Azure à l’aide de la commande
az account list
.Le plan Terraform crée des ressources à la fois dans Microsoft Azure et AWS. Il exécute ensuite un script sur une machine virtuelle AWS EC2 pour installer l’agent Azure Arc et tous les artefacts nécessaires. Ce script nécessite certaines informations sur vos environnements AWS et Azure. Modifiez
scripts/vars.sh
et mettez à jour chacune des variables avec les valeurs appropriées.TF_VAR_subscription_id
= votre ID d’abonnement AzureTF_VAR_client_id
= votre ID de l’application du principal de service AzureTF_VAR_client_secret
= votre mot de passe du principal de service AzureTF_VAR_tenant_id
= votre ID de locataire AzureAWS_ACCESS_KEY_ID
= clé d’accès AWSAWS_SECRET_ACCESS_KEY
= clé secrète AWS
À partir de l’interface Azure CLI, accédez au répertoire
azure_arc_servers_jumpstart/aws/al2/terraform
du référentiel cloné.Exportez les variables d’environnement que vous avez modifiées en exécutant
scripts/vars.sh
avec la commande source, comme indiqué ci-dessous. Terraform exige que ces variables soient définies pour que le plan s’exécute correctement. Notez que ce script est également exécuté automatiquement à distance sur la machine virtuelle AWS dans le cadre du déploiement Terraform.source ./scripts/vars.sh
Assurez-vous que vos clés SSH sont disponibles dans
~/.ssh
et qu’elles sont nomméesid_rsa.pub
etid_rsa
. Si vous avez suivi le guidessh-keygen
ci-dessus pour créer votre clé, la configuration doit déjà être correcte. Si ce n’est pas le cas, vous devez éventuellement modifiermain.tf
pour utiliser une clé avec un chemin différent.Exécutez la commande
terraform init
qui télécharge le fournisseur Terraform AzureRM.
Déploiement
Exécutez la commande
terraform apply --auto-approve
et patientez jusqu’à ce que le plan se termine. Une fois l’exécution terminée, une instance Amazon Linux 2 EC2 pour AWS est déployée et connectée en tant que nouveau serveur avec Azure Arc dans un nouveau groupe de ressources.Dans le portail Azure, accédez au groupe de ressources
arc-servers-demo
. La machine virtuelle créée dans AWS est visible en tant que ressource.
Déploiement semi-automatisé (facultatif)
Comme vous l’avez peut-être remarqué, la dernière étape de l’exécution consiste à inscrire la machine virtuelle en tant que nouvelle ressource de serveur avec Azure Arc.
Si vous souhaitez contrôler le processus d’inscription proprement dit ou en voir une démonstration, procédez comme suit :
Dans le modèle de script
install_arc_agent.sh.tmpl
, placez en commentaire la sectionrun connect command
et enregistrez le fichier.Récupérez l’adresse IP publique de la machine virtuelle AWS en exécutant
terraform output
.Établissez une connexion SSH à la machine virtuelle à l’aide de
ssh ec2-user@xx.xx.xx.xx
oùxx.xx.xx.xx
est l’adresse IP hôte.Exportez toutes les variables d’environnement dans
vars.sh
Exécutez la commande suivante :
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
Quand cette opération est effectuée, votre machine virtuelle est inscrite auprès d’Azure Arc et visible dans le groupe de ressources via le portail Azure.
Suppression du déploiement
Pour supprimer toutes les ressources que vous avez créées dans le cadre de cette démonstration, utilisez la commande terraform destroy --auto-approve
comme indiqué ci-dessous.
Vous pouvez également supprimer l’instance AWS EC2 directement en la terminant à partir de la console AWS.
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour