Een Terraform-plan gebruiken om een Ubuntu-exemplaar van Google Cloud Platform 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 het GCP-exemplaar (Google Cloud Platform) 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 Google Cloud Platform-account maken

  5. Terraform >installeren = 0.12

  6. Maak een Azure-service-principal.

    Als u de virtuele GCP-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://AzureArcGCP" --role contributor --scopes "/subscriptions/00000000-0000-0000-0000-000000000000"
    

    De uitvoer moet er ongeveer als volgt uitzien:

    {
      "appId": "XXXXXXXXXXXXXXXXXXXXXXXXXXXX",
      "displayName": "http://AzureArcGCP",
      "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 nieuw GCP-project maken

  1. Blader naar de Google API-console en meld u aan met uw Google-account. Zodra u bent aangemeld, maakt u een nieuw project met de naam Azure Arc demo. Nadat u deze hebt gemaakt, moet u de project-id omlaag kopiëren, omdat deze meestal anders is dan de projectnaam.

    First screenshot of the New Project page in the GCP console.

    Second screenshot of the New Project page in the GCP console.

  2. Zodra het nieuwe project is gemaakt en geselecteerd in de vervolgkeuzelijst boven aan de pagina, moet u de toegang tot de Compute Engine-API voor het project inschakelen. Klik op + API's en services inschakelen en zoek naar de berekeningsengine. Selecteer Vervolgens Inschakelen om API-toegang in te schakelen.

    First screenshot of Compute Engine API in the GCP console.

    Second screenshot of Compute Engine API in the GCP console.

  3. Stel vervolgens een serviceaccountsleutel in die Terraform gebruikt om resources in uw GCP-project te maken en te beheren. Ga naar de pagina serviceaccountsleutel maken. Selecteer Nieuw serviceaccount in de vervolgkeuzelijst, geef het een naam, selecteer project en eigenaar als de rol, JSON als sleuteltype en selecteer Maken. Hiermee downloadt u een JSON-bestand met alle referenties die nodig zijn voor Terraform om de resources te beheren. Kopieer het gedownloade JSON-bestand naar de azure_arc_servers_jumpstart/gcp/ubuntu/terraform map.

    A screenshot of how to create a service account in the GCP console.

  4. Controleer ten slotte of 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.

Implementatie

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

  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 Google Cloud Platform. Vervolgens wordt een script uitgevoerd op een virtuele GCP-machine om de Azure Arc-agent en alle benodigde artefacten te installeren. Dit script vereist bepaalde informatie over uw GCP- 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
    • TF_VAR_gcp_project_id = GCP-project-id
    • TF_VAR_gcp_credentials_filename = JSON-bestandsnaam van GCP-referenties
  3. Navigeer vanuit CLI naar de azure_arc_servers_jumpstart/gcp/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 GCP-machine als onderdeel van de Terraform-implementatie.

    source ./scripts/vars.sh
    
  5. Voer de terraform init opdracht uit waarmee de Terraform AzureRM-provider wordt gedownload.

    A screenshot of the terraform init command.

  6. Voer vervolgens de terraform apply --auto-approve opdracht uit en wacht tot het plan is voltooid. Na voltooiing hebt u een GCP Ubuntu-VM geïmplementeerd en verbonden als een nieuwe server met Azure Arc in een nieuwe resourcegroep.

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

    A screenshot of 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 running 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 GCP-VM op door uit te voeren terraform output.

    A screenshot of output from Terraform.

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

    A screenshot of an SSH key connecting to a GCP server.

  4. Alle omgevingsvariabelen exporteren in vars.sh

    A screenshot of environment variables exporting with 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 "Azure Arc gcp-demo" --tenant-id $TF_VAR_tenant_id --location "westus2" --subscription-id $TF_VAR_subscription_id
    

    A screenshot of the azcmagent connect command completing successfully.

  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 de GCP-VM ook rechtstreeks uit de GCP-console verwijderen.

A screenshot showing how to delete a virtual machine from the GCP console.