Share via


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

  1. Clonez le référentiel Azure Arc JumpStart.

    git clone https://github.com/microsoft/azure_arc.git
    
  2. 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.

  3. Générer une clé SSH (ou utiliser une clé SSH existante)

  4. Créer un compte AWS gratuit

  5. Installer Terraform >= 0.12

  6. 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.

  1. Se connecter à la console de gestion AWS

  2. 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

    A screenshot of the AWS cloud console.

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

  3. Cliquez sur Utilisateurs dans le menu de gauche, puis sélectionnez Ajouter un utilisateur pour créer un nouvel utilisateur IAM.

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

  4. Dans la page Ajouter un utilisateur, nommez l’utilisateur Terraform et cochez la case Accès programmatique, puis sélectionnez Suivant.

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

  5. 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.

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

  6. 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.

    A screenshot of tags in an AWS cloud console.

  7. Vérifiez que tout est correct, puis sélectionnez Créer un utilisateur.

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

  8. 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.

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

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.

  1. Récupérez votre ID d’abonnement et votre ID de locataire Azure à l’aide de la commande az account list.

  2. 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 Azure
    • TF_VAR_client_id = votre ID de l’application du principal de service Azure
    • TF_VAR_client_secret = votre mot de passe du principal de service Azure
    • TF_VAR_tenant_id= votre ID de locataire Azure
    • AWS_ACCESS_KEY_ID = clé d’accès AWS
    • AWS_SECRET_ACCESS_KEY = clé secrète AWS
  3. À partir de l’interface Azure CLI, accédez au répertoire azure_arc_servers_jumpstart/aws/al2/terraform du référentiel cloné.

  4. 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
    
  5. Assurez-vous que vos clés SSH sont disponibles dans ~/.ssh et qu’elles sont nommées id_rsa.pub et id_rsa. Si vous avez suivi le guide ssh-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 modifier main.tf pour utiliser une clé avec un chemin différent.

  6. Exécutez la commande terraform init qui télécharge le fournisseur Terraform AzureRM.

    A screenshot of the terraform init command.

Déploiement

  1. 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.

  2. 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.

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

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.

A screenshot of the azcmagent connect command.

Si vous souhaitez contrôler le processus d’inscription proprement dit ou en voir une démonstration, procédez comme suit :

  1. Dans le modèle de script install_arc_agent.sh.tmpl, placez en commentaire la section run connect command et enregistrez le fichier.

    A screenshot of the azcmagent connect command commented out.

  2. Récupérez l’adresse IP publique de la machine virtuelle AWS en exécutant terraform output.

    A screenshot of output from Terraform.

  3. Établissez une connexion SSH à la machine virtuelle à l’aide de ssh ec2-user@xx.xx.xx.xxxx.xx.xx.xx est l’adresse IP hôte.

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

  4. Exportez toutes les variables d’environnement dans vars.sh

    A screenshot of exported environment variables in var.sh.

  5. 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
    

    Another screenshot of the azcmagent connect command.

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

Vous pouvez également supprimer l’instance AWS EC2 directement en la terminant à partir de la console AWS. A screenshot of how to terminate an instance in the AWS console.