Använd en Terraform-plan för att distribuera Google Cloud Platform Ubuntu-instans och ansluta den till Azure ArcUse a Terraform plan to deploy a Google Cloud Platform Ubuntu instance and connect it to Azure Arc

Den här artikeln innehåller råd om hur du använder den angivna Terraform-planen för att distribuera en Google Cloud Platform -instans (GCP) och ansluta den som en Azure Arc-aktiverad serverresurs.This article provides guidance for using the provided Terraform plan to deploy Google Cloud Platform (GCP) instance and connect it as an Azure Arc enabled server resource.

FörutsättningarPrerequisites

  1. Klona lagringsplatsen Azure Arc Jumpstart.Clone the Azure Arc Jumpstart repository.

    git clone https://github.com/microsoft/azure_arc.git
    
  2. Installera eller uppdatera Azure CLI till version 2.7 och senare.Install or update Azure CLI to version 2.7 and above. Använd följande kommando för att kontrollera din aktuella installerade version.Use the following command to check your current installed version.

    az --version
    
  3. Generera SSH-nyckel (eller använd befintlig SSH-nyckel)Generate SSH key (or use existing SSH key)

  4. Skapa ett kostnadsfritt Google Cloud Platform kontoCreate free Google Cloud Platform account

  5. Installera Terraform >= 0.12Install Terraform >= 0.12

  6. Skapa azure-tjänstens huvudnamn.Create an Azure service principal.

    För att ansluta den virtuella GCP-datorn Azure Arc måste du ha ett huvudnamn för Azure-tjänsten som tilldelats rollen Deltagare.To connect the GCP virtual machine to Azure Arc, an Azure service principal assigned with the Contributor role is required. Skapa det genom att logga in på ditt Azure-konto och köra följande kommando.To create it, sign in to your Azure account and run the following command. Du kan också köra det här kommandot i Azure Cloud Shell.You can also run this command in Azure Cloud Shell.

    az login
    az ad sp create-for-rbac -n "<Unique SP Name>" --role contributor
    

    Exempel:For example:

    az ad sp create-for-rbac -n "http://AzureArcGCP" --role contributor
    

    Utdata bör se ut så här:Output should look like this:

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

    Anteckning

    Vi rekommenderar starkt att du omfångsomfånget för tjänstens huvudnamn till en specifik Azure-prenumeration och resursgrupp.We highly recommend that you scope the service principal to a specific Azure subscription and resource group.

Skapa ett nytt GCP-projektCreate a new GCP project

  1. Bläddra till Google API-konsolen och logga in med ditt Google-konto.Browse to the Google API console and sign-in with your Google account. När du har loggat in skapar du ett nytt projekt med namnet Azure Arc demo .Once logged in, create a new project named Azure Arc demo. När du har skapat det bör du kopiera projekt-ID:t eftersom det vanligtvis skiljer sig från projektnamnet.After creating it, be sure to copy down the project ID since it's usually different then the project name.

    Första skärmbilden av sidan Nytt projekt i GCP-konsolen.

    Andra skärmbilden av sidan Nytt projekt i GCP-konsolen.

  2. När det nya projektet har skapats och valts i listrutan överst på sidan måste du aktivera COMPUTE Engine API-åtkomst för projektet.Once the new project is created and selected in the dropdown at the top of the page, you must enable Compute Engine API access for the project. Klicka på + Aktivera API:er och tjänster och sök efter beräkningsmotorn.Click on + Enable APIs and Services and search for compute engine. Välj sedan Aktivera för att aktivera API-åtkomst.Then select Enable to enable API access.

    Första skärmbilden av Compute Engine API i GCP-konsolen.

    Andra skärmbilden av Compute Engine API i GCP-konsolen.

  3. Konfigurera sedan en nyckel för tjänstkontot som Terraform använder för att skapa och hantera resurser i ditt GCP-projekt.Next, set up a service account key, which Terraform will use to create and manage resources in your GCP project. Gå till sidan skapa nyckel för tjänstkonto.Go to the create service account key page. Välj Nytt tjänstkonto i listrutan, ge det ett namn, välj projekt och sedan ägare som roll, JSON som nyckeltyp och välj Skapa.Select New Service Account from the dropdown, give it a name, select project then owner as the role, JSON as the key type, and select Create. Då laddas en JSON-fil ned med alla autentiseringsuppgifter som krävs för att Terraform ska kunna hantera resurserna.This downloads a JSON file with all the credentials that will be needed for Terraform to manage the resources. Kopiera den nedladdade JSON-filen till azure_arc_servers_jumpstart/gcp/ubuntu/terraform katalogen.Copy the downloaded JSON file to the azure_arc_servers_jumpstart/gcp/ubuntu/terraform directory.

    En skärmbild av hur du skapar ett tjänstkonto i GCP-konsolen.

  4. Kontrollera slutligen att dina SSH-nycklar är tillgängliga i ~/.ssh och med namnet och id_rsa.pub id_rsa .Finally, make sure your SSH keys are available in ~/.ssh and named id_rsa.pub and id_rsa. Om du följde ssh-keygen-guiden ovan för att skapa nyckeln bör detta redan vara korrekt.If you followed the ssh-keygen guide above to create your key then this should already be setup correctly. Annars kan du behöva ändra för att main.tf använda en nyckel med en annan sökväg.If not, you may need to modify main.tf to use a key with a different path.

DistributionDeployment

Innan du kör Terraform-planen måste du exportera miljövariablerna som ska användas av planen.Before executing the Terraform plan, you must export the environment variables which will be used by the plan. De här variablerna baseras på azure-tjänstens huvudnamn som du precis har skapat, din Azure-prenumeration och klientorganisation samt GCP-projektnamnet.These variables are based on the Azure service principal you've just created, your Azure subscription and tenant, and the GCP project name.

  1. Hämta id:t för din Azure-prenumeration och ditt klientorganisations-ID med hjälp av az account list kommandot .Retrieve your Azure subscription ID and tenant ID using the az account list command.

  2. Terraform-planen skapar resurser i både Microsoft Azure och Google Cloud Platform.The Terraform plan creates resources in both Microsoft Azure and Google Cloud Platform. Den kör sedan ett skript på en virtuell GCP-dator för att Azure Arc agenten och alla nödvändiga artefakter.It then executes a script on a GCP virtual machine to install the Azure Arc agent and all necessary artifacts. Det här skriptet kräver viss information om dina GCP- och Azure-miljöer.This script requires certain information about your GCP and Azure environments. Redigera scripts/vars.sh och uppdatera var och en av variablerna med lämpliga värden.Edit scripts/vars.sh and update each of the variables with the appropriate values.

    • TF_VAR_subscription_id= id för din Azure-prenumerationTF_VAR_subscription_id= your Azure subscription ID
    • TF_VAR_client_id = program-ID för tjänstens huvudnamn i AzureTF_VAR_client_id = your Azure service principal application ID
    • TF_VAR_client_secret = lösenordet för Azure-tjänstens huvudnamnTF_VAR_client_secret = your Azure service principal password
    • TF_VAR_tenant_id = ditt Azure-klientorganisations-IDTF_VAR_tenant_id = your Azure tenant ID
    • TF_VAR_gcp_project_id = GCP-projekt-IDTF_VAR_gcp_project_id = GCP project ID
    • TF_VAR_gcp_credentials_filename = JSON-filnamn för GCP-autentiseringsuppgifterTF_VAR_gcp_credentials_filename = GCP credentials JSON filename
  3. Från CLI navigerar du till katalogen azure_arc_servers_jumpstart/gcp/ubuntu/terraform för den klonade lagringsplatsen.From CLI, navigate to the azure_arc_servers_jumpstart/gcp/ubuntu/terraform directory of the cloned repo.

  4. Exportera miljövariablerna som du redigerade genom scripts/vars.sh att köra med källkommandot enligt nedan.Export the environment variables you edited by running scripts/vars.sh with the source command as shown below. Terraform kräver att dessa anges för att planen ska köras korrekt.Terraform requires these to be set for the plan to execute properly. Observera att det här skriptet också fjärrstyrs på den virtuella GCP-datorn som en del av Terraform-distributionen.Note that this script will also be automatically executed remotely on the GCP virtual machine as part of the Terraform deployment.

    source ./scripts/vars.sh
    
  5. Kör kommandot terraform init som laddar ned Terraform AzureRM-providern.Run the terraform init command which will download the Terraform AzureRM provider.

    En skärmbild av kommandot "terraform init".

  6. Kör sedan kommandot terraform apply --auto-approve och vänta tills planen har avslutats.Next, run the terraform apply --auto-approve command and wait for the plan to finish. När det är klart har du en virtuell GCP Ubuntu-dator distribuerad och ansluten som en ny Azure Arc aktiverad server i en ny resursgrupp.Upon completion, you will have a GCP Ubuntu VM deployed and connected as a new Azure Arc enabled server inside a new resource group.

  7. Öppna Azure Portal och gå till arc-gcp-demo resursgruppen.Open the Azure portal and navigate to the arc-gcp-demo resource group. Den virtuella datorn som skapas i GCP visas som en resurs.The virtual machine created in GCP will be visible as a resource.

    En skärmbild av en Azure Arc aktiverad server i Azure Portal.

Halvautomatisk distribution (valfritt)Semi-automated deployment (optional)

Som du kanske har märkt är det sista steget i körningen att registrera den virtuella datorn som en ny Azure Arc-aktiverad serverresurs.As you may have noticed, the last step of the run is to register the VM as a new Azure Arc enabled server resource.

En skärmbild av att köra kommandot "azcmagent connect".

Om du vill visa/styra den faktiska registreringsprocessen gör du följande:If you want to demo/control the actual registration process, do the following:

  1. I install_arc_agent.sh.tmpl skriptmallen kommenterar du run connect command ut avsnittet och sparar filen.In the install_arc_agent.sh.tmpl script template, comment out the run connect command section and save the file.

    En skärmbild som visar att "main.tf" kommenteras bort för att inaktivera automatisk registrering av en Azure Arc agent.

  2. Hämta den offentliga IP-adressen för den virtuella GCP-datorn genom att köra terraform output .Get the public IP of the GCP VM by running terraform output.

    En skärmbild av terraform-utdata.

  3. SSH den virtuella datorn med ssh arcadmin@xx.xx.xx.xx hjälp av där är xx.xx.xx.xx värdens IP-adress.SSH the VM using the ssh arcadmin@xx.xx.xx.xx where xx.xx.xx.xx is the host IP.

    En skärmbild av en SSH-nyckel som ansluter till en GCP-server.

  4. Exportera alla miljövariabler i vars.shExport all the environment variables in vars.sh

    En skärmbild av miljövariabler som exporteras med "vars.sh".

  5. Kör följande kommando:Run the following command:

    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
    

    En skärmbild av kommandot "azcmagent connect" har slutförts.

  6. När du är klar registreras den virtuella datorn Azure Arc och visas i resursgruppen via Azure Portal.When complete, your VM will be registered with Azure Arc and visible in the resource group via the Azure portal.

Ta bort distributionenDelete the deployment

Om du vill ta bort alla resurser som du har skapat som en del av den här demonstrationen terraform destroy --auto-approve använder du kommandot enligt nedan.To delete all the resources you created as part of this demo use the terraform destroy --auto-approve command as shown below.

En skärmbild av kommandot "terraform destroy".

Du kan också ta bort den virtuella GCP-datorn direkt från GCP-konsolen.Alternatively, you can delete the GCP VM directly from GCP console.

En skärmbild som visar hur du tar bort en virtuell dator från GCP-konsolen.