Een Terraform-plan gebruiken om een Amazon Web Services Amazon Elastic Compute Cloud-exemplaar te implementeren en deze te verbinden met Azure Arc

Dit artikel bevat richtlijnen voor het gebruik van het opgegeven Terraform-plan voor het implementeren van een Amazon Web Services -exemplaar (AWS) Amazon Elastic Compute Cloud (EC2) en het verbinden als een serverresource met Azure Arc.

Vereisten

  1. Kloon de Azure Arc Jumpstart-opslagplaats.

    git clone https://github.com/microsoft/azure_arc.git
    
  2. Azure CLI installeren of bijwerken naar versie 2.7 en hoger. Gebruik de volgende opdracht om uw huidige geïnstalleerde versie te controleren.

    az --version
    
  3. SSH-sleutel genereren (of bestaande SSH-sleutel gebruiken)

  4. Gratis AWS-account maken

  5. Terraform >installeren = 0.12

  6. Maak een Azure-service-principal.

    Als u de virtuele AWS-machine wilt verbinden met Azure Arc, is een Azure-service-principal vereist die is toegewezen met de rol Inzender. Als u deze wilt maken, meldt u zich aan bij uw Azure-account en voert u de volgende opdracht uit. U kunt deze opdracht ook uitvoeren 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>"
    

    Voorbeeld:

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

    De uitvoer moet er ongeveer als volgt uitzien:

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

    Notitie

    We raden u ten zeerste aan om de service-principal te koppelen aan een specifiek Azure-abonnement en een specifieke resourcegroep.

Een AWS-identiteit maken

Om ervoor te zorgen dat Terraform resources maakt in AWS, moeten we een nieuwe AWS IAM-rol maken met de juiste machtigingen en Terraform configureren om deze te gebruiken.

  1. Aanmelden bij de AWS-beheerconsole

  2. Nadat u zich hebt aangemeld, selecteert u de vervolgkeuzelijst Services in de linkerbovenhoek. Selecteer onder Beveiliging, Identiteit en Naleving IAM voor toegang tot de pagina identiteits- en toegangsbeheer

    A screenshot of an AWS cloud console.

    A screenshot of identity and access management in the AWS cloud console.

  3. Klik in het linkermenu op Gebruikers en selecteer Vervolgens Gebruiker toevoegen om een nieuwe IAM-gebruiker te maken.

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

  4. Geef op de pagina Gebruiker toevoegen de gebruiker Terraform een naam en schakel het selectievakje Programmatische toegang in en selecteer vervolgens Volgende.

    Second screenshot of creating a new user in an AWS cloud console.

  5. Selecteer op de pagina Machtigingen instellen de optie Bestaande beleidsregels rechtstreeks bijvoegen en selecteer vervolgens het vakje naast AmazonEC2FullAccess, zoals wordt weergegeven in de schermafbeelding en selecteer vervolgens Volgende.

    Third screenshot of creating a new user in an AWS cloud console.

  6. Wijs op de pagina Tags een tag toe met een sleutel van azure-arc-demo en selecteer Volgende om door te gaan naar de pagina Controleren .

    A screenshot of tags in an AWS cloud console.

  7. Controleer of alles juist is en selecteer Gebruiker maken wanneer u klaar bent.

    Fourth screenshot of creating a user in an AWS cloud console.

  8. Nadat de gebruiker is gemaakt, ziet u de toegangssleutel-id en geheime toegangssleutel van de gebruiker. Kopieer deze waarden voordat u Sluiten selecteert. Op de volgende pagina ziet u een voorbeeld van hoe dit eruit moet zien. Zodra u deze sleutels hebt, kunt u deze gebruiken met Terraform om AWS-resources te maken.

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

Terraform configureren

Voordat u het Terraform-plan uitvoert, moet u de omgevingsvariabelen exporteren die door het plan worden gebruikt. Deze variabelen zijn gebaseerd op uw Azure-abonnement en -tenant, de Azure-service-principal en de AWS IAM-gebruiker en -sleutels die u zojuist hebt gemaakt.

  1. Haal uw Azure-abonnements-id en tenant-id op met behulp van de az account list opdracht.

  2. Het Terraform-plan maakt resources in zowel Microsoft Azure als AWS. Vervolgens wordt een script uitgevoerd op een virtuele AWS EC2-machine om de Azure Arc-agent en alle benodigde artefacten te installeren. Dit script vereist bepaalde informatie over uw AWS- en Azure-omgevingen. Bewerk en werk scripts/vars.sh elk van de variabelen bij met de juiste waarden.

    • TF_VAR_subscription_id = uw Azure-abonnements-id
    • TF_VAR_client_id = de toepassings-id van uw Azure-service-principal
    • TF_VAR_client_secret = wachtwoord voor uw Azure-service-principal
    • TF_VAR_tenant_id = uw Azure-tenant-id
    • AWS_ACCESS_KEY_ID = AWS-toegangssleutel
    • AWS_SECRET_ACCESS_KEY = AWS-geheime sleutel
  3. Navigeer vanuit de Azure CLI naar de azure_arc_servers_jumpstart/aws/ubuntu/terraform map van de gekloonde opslagplaats.

  4. Exporteer de omgevingsvariabelen die u hebt bewerkt door deze uit te voeren scripts/vars.sh met de bronopdracht, zoals hieronder wordt weergegeven. Terraform vereist dat deze worden ingesteld voor de juiste uitvoering van het plan. Houd er rekening mee dat dit script ook automatisch op afstand wordt uitgevoerd op de virtuele AWS-machine als onderdeel van de Terraform-implementatie.

    source ./scripts/vars.sh
    
  5. Zorg ervoor dat uw SSH-sleutels beschikbaar zijn in ~/.ssh en benoemd id_rsa.pub en id_rsa. Als u de ssh-keygen bovenstaande handleiding hebt gevolgd om uw sleutel te maken, moet deze al correct zijn ingesteld. Zo niet, dan moet u mogelijk een main.tf sleutel met een ander pad gebruiken.

  6. Voer de terraform init opdracht uit waarmee de Terraform AzureRM-provider wordt gedownload.

    A screenshot of the terraform init command.

Implementatie

  1. Voer de terraform apply --auto-approve opdracht uit en wacht tot het plan is voltooid. Na voltooiing hebt u een AWS Amazon Linux 2 EC2-exemplaar geïmplementeerd en verbonden als een nieuwe server met Azure Arc in een nieuwe resourcegroep.

  2. Open Azure Portal en navigeer naar de arc-aws-demo resourcegroep. De virtuele machine die in AWS is gemaakt, is zichtbaar als een resource.

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

    A screenshot of AWS console displaying EC2 instances.

Semi-geautomatiseerde implementatie (optioneel)

Zoals u misschien hebt opgemerkt, is de laatste stap van de uitvoering het registreren van de VIRTUELE machine als een nieuwe serverresource met Azure Arc.

A screenshot of the azcmagent connect command.

Als u het daadwerkelijke registratieproces wilt demo/beheren, gaat u als volgt te werk:

  1. Maak in de install_arc_agent.sh.tmpl scriptsjabloon commentaar bij de run connect command sectie en sla het bestand op.

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

  2. Haal het openbare IP-adres van de AWS-VM op door uit te voeren terraform output.

    A screenshot of output from Terraform.

  3. SSH de VM met behulp van het ssh ubuntu@xx.xx.xx.xxxx.xx.xx.xx host-IP-adres.

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

  4. Exporteer alle omgevingsvariabelen in vars.sh.

    A screenshot of exported environment variables in vars.sh.

  5. Voer de volgende opdracht uit:

    azcmagent connect --service-principal-id $TF_VAR_client_id --service-principal-secret $TF_VAR_client_secret --resource-group "arc-aws-demo" --tenant-id $TF_VAR_tenant_id --location "westus2" --subscription-id $TF_VAR_subscription_id
    

    Another screenshot of the azcmagent connect command.

  6. Wanneer u klaar bent, wordt uw VIRTUELE machine geregistreerd bij Azure Arc en zichtbaar in de resourcegroep via Azure Portal.

De implementatie verwijderen

Als u alle resources die u hebt gemaakt als onderdeel van deze demo wilt verwijderen, gebruikt u de terraform destroy --auto-approve opdracht, zoals hieronder wordt weergegeven.

A screenshot of the terraform destroy command.

U kunt het AWS EC2-exemplaar ook rechtstreeks verwijderen door het uit te sluiten vanuit de AWS-console. Houd er rekening mee dat het enkele minuten duurt voordat het exemplaar daadwerkelijk is verwijderd.

A screenshot of how to terminate an instance in the AWS console.

Als u het exemplaar handmatig verwijdert, moet u ook verwijderen *./scripts/install_arc_agent.sh. Dit wordt gemaakt door het Terraform-plan.