Uso de un plan de Terraform para implementar una instancia de Windows en Google Cloud Platform y conectarla a Azure Arc

Este artículo proporciona una guía para usar el plan de Terraform proporcionado para implementar una instancia de Windows Server de Google Cloud Platform (GCP) y conectarla como un recurso de servidor habilitado para Azure Arc.

Prerrequisitos

  1. Clone el repositorio Jumpstart de Azure Arc.

    git clone https://github.com/microsoft/azure_arc.git
    
  2. Instale o actualice la CLI de Azure a la versión 2.7 y superior. Use el siguiente comando para comprobar la versión instalada actual.

    az --version
    
  3. Instale Terraform >= 0.12

  4. Cuenta de Google Cloud Platform con la facturación habilitada:cree una cuenta de evaluación gratuita. Para crear máquinas virtuales con Windows Server, debe actualizar la cuenta para habilitar la facturación. Seleccione Facturación en el menú y, a continuación, seleccione Actualizar en la parte inferior derecha.

    First screenshot showing how to enable billing on a GCP account.

    Second screenshot showing how to enable billing on a GCP account.

    Third screenshot showing how to enable billing on a GCP account.

    Declinación de responsabilidades: Para evitar cargos inesperados, siga las instrucciones de la sección "Eliminar la implementación", que se encuentra al final de este artículo.

  5. Cree una entidad de servicio de Azure.

    Para conectar la máquina virtual de GCP a Azure Arc se necesita una entidad de servicio de Azure con el rol Colaborador. Para su creación, inicie sesión en la cuenta de Azure y ejecute el siguiente comando. También puede ejecutar este comando en 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>"
    

    Por ejemplo:

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

    El resultado debe ser similar al siguiente:

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

    Nota:

    Se recomienda encarecidamente que el ámbito de la entidad de servicio se establezca en un grupo de recursos y una suscripción de Azure específicos.

Creación de un nuevo proyecto de GCP

  1. Vaya a la consola API de Google e inicie sesión con la cuenta de Google. Una vez que haya iniciado sesión, cree un proyecto denominado Azure Arc demo. Después de crearlo, asegúrese de copiar el identificador del proyecto, ya que normalmente es diferente del nombre del proyecto.

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

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

  2. Una vez que se crea el nuevo proyecto y se selecciona en la lista desplegable de la parte superior de la página, debe habilitar el acceso de Compute Engine API al proyecto. Haga clic en + Habilitar API y servicios y busque compute engine. Luego seleccione Habilitar para habilitar el acceso de la API.

    First screenshot of Compute Engine API in the GCP console.

    Second screenshot of Compute Engine API in the GCP console.

  3. Luego configure una clave de cuenta de servicio para que Terraform la use para crear y administrar recursos en el proyecto de GCP. Vaya a la página Crear clave de cuenta de servicio. Seleccione Nueva cuenta de servicio en la lista desplegable, asígnele un nombre, seleccione el proyecto, elija Propietario en Rol, seleccione JSON como el tipo de clave y, finalmente, seleccione Crear. Con esto se descarga un archivo JSON con todas las credenciales necesarias para que Terraform administre los recursos. Copie el archivo JSON descargado en el directorio azure_arc_servers_jumpstart/gcp/windows/terraform.

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

Implementación

Antes de ejecutar el plan de Terraform, debe establecer y exportar luego las variables de entorno que se van a usar en el plan. Estas variables se basan en la entidad de servicio de Azure que acaba de crear, en el inquilino y la suscripción de Azure, y en el nombre del proyecto de GCP.

  1. Recupere el identificador de la suscripción de Azure y el identificador del inquilino mediante el comando az account list.

  2. El plan de Terraform crea recursos tanto en Microsoft Azure como en Google Cloud Platform. Luego ejecuta un script en una máquina virtual de GCP para instalar el agente de Azure Arc y todos los artefactos necesarios. Este script requiere determinada información sobre los entornos de GCP y Azure. Edite scripts/vars.sh y actualice cada una de las variables con los valores adecuados.

    • TF_VAR_subscription_id: identificador de la suscripción de Azure
    • TF_VAR_client_id = identificador de aplicación de la entidad de servicio de Azure
    • TF_VAR_client_secret = contraseña de la entidad de servicio de Azure
    • TF_VAR_tenant_id = identificador del inquilino de Azure
    • TF_VAR_gcp_project_id = id. del proyecto de GCP
    • TF_VAR_gcp_credentials_filename = archivo JSON de credenciales de GCP
  3. En la CLI, vaya al directorio azure_arc_servers_jumpstart/gcp/windows/terraform del repositorio clonado.

  4. Exporte las variables de entorno que ha editado mediante la ejecución de scripts/vars.sh con el comando source, como se muestra a continuación. Terraform requiere que se establezcan para que el plan se ejecute correctamente.

    source ./scripts/vars.sh
    
  5. Ejecute el comando terraform init, que descargará el proveedor de AzureRM de Terraform.

    A screenshot of the terraform init command.

  6. Luego ejecute el comando terraform apply --auto-approve y espere a que finalice el plan. Tras finalizar el script de Terraform, habrá implementado una máquina virtual Windows Server 2019 de GCP e iniciado un script para descargar el agente de Azure Arc en la máquina virtual y conectar esa máquina virtual como un nuevo servidor habilitado para Azure Arc en un nuevo grupo de recursos de Azure. El agente tardará unos minutos en finalizar el aprovisionamiento, así que tenga un poco de paciencia.

    A screenshot of the terraform apply command.

  7. Después de unos minutos, debería poder abrir Azure Portal y desplazarse hasta el grupo de recursos arc-gcp-demo. La máquina virtual Windows Server creada en GCP será visible como recurso.

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

Implementación semiautomatizada (opcional)

El plan de Terraform instala automáticamente el agente de Azure Arc y conecta la máquina virtual a Azure como un recurso administrado mediante la ejecución de un script de PowerShell cuando se inicia la máquina virtual por primera vez.

A screenshot of the azcmagent connect command.

Si quiere mostrar o controlar el proceso de registro real, haga lo siguiente:

  1. Antes de ejecutar el comando terraform apply, abra main.tf, marque como comentario la línea windows-startup-script-ps1 = local-file.install_arc_agent-ps1.content y guarde el archivo.

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

  2. Ejecute terraform apply --auto-approve tal y como se indicó anteriormente.

  3. Abra la consola de GCP y vaya hasta la página de instancias de Compute Engine. A continuación, seleccione la máquina virtual que se creó.

    A screenshot of a server in the GCP console.

    A screenshot showing how to reset a password for a Windows Server in the GCP console.

  4. Cree un usuario y una contraseña para la máquina virtual. Para ello, seleccione Definir contraseña y especifique un nombre de usuario.

    A screenshot showing how to set a username and password for a Windows Server in the GCP console.

  5. Use el protocolo RDP en la máquina virtual. Para ello, elija el botón RDP en la página de la máquina virtual en la consola de GCP e inicie sesión con el nombre de usuario y la contraseña que acaba de crear.

    A screenshot showing how to RDP into a GCP instance.

  6. Una vez que haya iniciado sesión, abra PowerShell ISE como administrador. Asegúrese de que está ejecutando la versión x64 de PowerShell ISE y no la versión x86. Una vez abierto, seleccione Archivo > Nuevo para crear un archivo .ps1 vacío. A continuación, pegue todo el contenido de ./scripts/install_arc_agent.ps1. Haga clic en el botón de reproducción para ejecutar el script. Cuando haya finalizado, debería ver el resultado que muestra que la incorporación de la máquina se ha realizado correctamente.

    Screenshot showing the Windows PowerShell integrated scripting environment with an Azure Arc agent connection script.

Eliminar la implementación

Para eliminar todos los recursos creados como parte de esta demo, use el comando terraform destroy --auto-approve, como se muestra a continuación.

A screenshot of the terraform destroy command.

También puede eliminar la máquina virtual de GCP directamente desde la consola de GCP.

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