Uso de un plan de Terraform para implementar una instancia de Amazon Web Services en Amazon Elastic Compute Cloud y conectarla a Azure Arc

Este artículo proporciona una guía para usar el plan de Terraform proporcionado para implementar una instancia de Amazon Elastic Compute Cloud (EC2) de Amazon Web Services (AWS) y conectarla como 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. Genere una clave SSH (o use una existente).

  4. Cree una cuenta gratuita de AWS.

  5. Instale Terraform >= 0.12

  6. Cree una entidad de servicio de Azure.

    Para conectar la máquina virtual de AWS a Azure Arc se necesita una entidad de servicio de Azure con el rol Colaborador. Para crearla, inicie sesión en su 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://AzureArcAWS" --role contributor --scopes "/subscriptions/00000000-0000-0000-0000-000000000000"
    

    El resultado debe ser similar al siguiente:

    {
      "appId": "XXXXXXXXXXXXXXXXXXXXXXXXXXXX",
      "displayName": "http://AzureArcAWS",
      "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 una identidad de AWS

Para que Terraform cree recursos en AWS, es necesario crear un nuevo rol de IAM de AWS con los permisos adecuados y configurar Terraform para usarlo.

  1. Inicie sesión en la consola de administración de AWS.

  2. Después de iniciar sesión, seleccione la lista desplegable Servicios de la parte superior izquierda. En Seguridad, identidad y cumplimiento, seleccione IAM para acceder a la página de administración de identidad y acceso.

    A screenshot of an AWS cloud console.

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

  3. Haga clic en Usuarios en el menú de la izquierda y seleccione Agregar usuario para crear un nuevo usuario de IAM.

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

  4. En la página Agregar usuario, asigne el nombre Terraform al usuario, active la casilla Acceso mediante programación y, a continuación, seleccione Siguiente.

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

  5. En la página Establecer permisos, seleccione Adjuntar directivas existentes directamente, seleccione la casilla situada junto a AmazonEC2FullAccess como se ha visto en la captura de pantalla y seleccione Siguiente.

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

  6. En la página Etiquetas, asigne una etiqueta con una clave azure-arc-demo y seleccione Siguiente para pasar a la página Revisión.

    A screenshot of tags in an AWS cloud console.

  7. Compruebe que todo es correcto y seleccione Crear usuario cuando todo esté listo.

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

  8. Una vez creado el usuario, se ve el identificador de la clave de acceso del usuario y la clave de acceso secreta. Copie estos valores antes de seleccionar Cerrar. En la página siguiente puede ver un ejemplo de su aspecto. Una vez que tenga estas claves, puede usarlas con Terraform para crear recursos de AWS.

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

Configuración de Terraform

Antes de ejecutar el plan de Terraform, debe exportar las variables de entorno que se van a usar en él. Estas variables se basan en la suscripción de Azure y el inquilino, la entidad de servicio de Azure, y el usuario y las claves de IAM de AWS que acaba de crear.

  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 AWS. Luego ejecuta un script en una máquina virtual de EC2 de AWS para instalar el agente de Azure Arc y todos los artefactos necesarios. Este script requiere determinada información sobre los entornos de AWS 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
    • AWS_ACCESS_KEY_ID = clave de acceso de AWS
    • AWS_SECRET_ACCESS_KEY = clave secreta de AWS
  3. En la CLI de Azure, vaya al directorio azure_arc_servers_jumpstart/aws/ubuntu/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. Tenga en cuenta que este script también se ejecuta automáticamente de forma remota en la máquina virtual de AWS como parte de la implementación de Terraform.

    source ./scripts/vars.sh
    
  5. Asegúrese de que las claves SSH están disponibles en ~/.ssh y tienen el nombre id_rsa.pub e id_rsa. Si ha seguido la guía de ssh-keygen anterior para crear la clave, ya debería estar configurada correctamente. Si no, puede que tenga que modificar main.tf para usar una clave con otra ruta de acceso.

  6. Ejecute el comando terraform init, que descargará el proveedor de AzureRM de Terraform.

    A screenshot of the terraform init command.

Implementación

  1. Ejecute el comando terraform apply --auto-approve y espere a que finalice el plan. Cuando termine, tendrá una instancia de Amazon Linux 2 en EC2 de AWS implementada y conectada como un nuevo servidor habilitado para Azure Arc en un nuevo grupo de recursos.

  2. Abra Azure Portal y vaya al grupo de recursos arc-aws-demo. La máquina virtual creada en AWS es visible como un recurso.

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

    A screenshot of AWS console displaying EC2 instances.

Implementación semiautomatizada (opcional)

Como puede que haya observado, el último paso de la ejecución es registrar la máquina virtual como un nuevo recurso de servidor habilitado para Azure Arc.

A screenshot of the azcmagent connect command.

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

  1. En la plantilla de script install_arc_agent.sh.tmpl, comente la sección run connect command y guarde el archivo.

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

  2. Para obtener la dirección IP pública de la máquina virtual de AWS, ejecute terraform output.

    A screenshot of output from Terraform.

  3. Aplique SSH a la máquina virtual mediante ssh ubuntu@xx.xx.xx.xx, donde xx.xx.xx.xx es la dirección IP del host.

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

  4. Exporte todas las variables de entorno de vars.sh.

    A screenshot of exported environment variables in vars.sh.

  5. Ejecute el siguiente comando:

    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. Cuando termina, la máquina virtual se registra en Azure Arc y está visible en el grupo de recursos mediante Azure Portal.

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 instancia de EC2 de AWS directamente desde la consola de AWS. Tenga en cuenta que la instancia tardará unos minutos en eliminarse realmente.

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

Si elimina la instancia manualmente, también debe eliminar *./scripts/install_arc_agent.sh, que crea el plan de Terraform.