Een Terraform-plan gebruiken om een Amazon Linux 2-exemplaar te implementeren in Amazon Elastic Compute Cloud 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 (AWS) Amazon Elastic Compute Cloud (EC2) Linux 2-exemplaar 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. Azure CLI moet versie 2.7.0 of hoger uitvoeren. Gebruik az --version dit om uw huidige geïnstalleerde versie te controleren.

  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 opdrachten uit:

    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 the AWS cloud console.

    A screenshot of an identity and access management 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 how to create 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 how to create 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 how to create a new user in an AWS cloud console.

  6. Wijs op de pagina Tags een tag toe met een sleutel van azure-arc-demoen selecteer Vervolgens om door te gaan naar de controlepagina.

    A screenshot of tags in an AWS cloud console.

  7. Controleer of alles juist is en selecteer vervolgens Gebruiker maken.

    Fourth screenshot of how to create a new 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 omlaag 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/al2/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-servers-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.

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

  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 naar de VIRTUELE machine met behulp van de ssh ec2-user@xx.xx.xx.xx, waar xx.xx.xx.xx is het host-IP-adres.

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

  4. Alle omgevingsvariabelen exporteren in vars.sh

    A screenshot of exported environment variables in var.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-Servers-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. A screenshot of how to terminate an instance in the AWS console.