Ejercicio: Configuración del entorno

Completado

Importante

Para realizar este ejercicio, se necesita una suscripción de Azure propia y puede que se apliquen cargos. Si aún no tiene una suscripción de Azure, cree una cuenta gratuita antes de comenzar.

Antes de empezar a trabajar en el flujo de trabajo del sitio web de la empresa de juguetes, debe configurar el entorno. En esta unidad, se asegurará de que los entornos de Azure y GitHub están configurados para completar el resto de este módulo.

Para cumplir estos objetivos, tendrá que:

  • Configurar un repositorio de GitHub para este módulo.
  • Clonar el repositorio del proyecto en el equipo.
  • Cree dos identidades de carga de trabajo en Microsoft Entra ID.
  • Crear dos grupos de recursos en Azure.
  • Cree secretos y entornos en GitHub.

Obtención del repositorio de GitHub

Aquí se asegura de que el repositorio de GitHub está configurado para completar el resto de este módulo. Para ello, cree un repositorio basado en uno de plantillas. El repositorio de plantillas incluye los archivos que necesita para empezar a trabajar con este módulo.

Los módulos de esta ruta de aprendizaje forman parte de una progresión. Con fines de aprendizaje, cada módulo tiene asociado un repositorio de plantillas de GitHub.

Sugerencia

Aunque haya completado el módulo anterior de la ruta de aprendizaje, siga estas instrucciones para crear un nuevo repositorio y asegúrese de darle un nuevo nombre.

Inicio desde el repositorio de plantillas

Ejecute una plantilla que configura el repositorio de GitHub.

En el sitio de GitHub, siga estos pasos para crear un repositorio a partir de la plantilla:

  1. Seleccione Usar esta plantilla>Crear un nuevo repositorio.

    Captura de pantalla de la interfaz de GitHub en la que se muestra el repositorio de plantillas, con el botón

  2. Seleccione el nombre de usuario de GitHub en la lista desplegable Propietario.

  3. Escriba un nombre de repositorio para el proyecto nuevo, como toy-website-end-to-end.

  4. Seleccione la opción Público.

    Al crear sus propios repositorios, es posible que quiera hacerlos privados. En este módulo, trabajará con algunas características de GitHub que solo funcionan con repositorios públicos y con cuentas de GitHub Enterprise.

  5. Seleccione Create repository (Crear repositorio).

    Captura de pantalla de la interfaz de GitHub en la que se muestra la página de creación del repositorio.

Importante

El último ejercicio de este módulo contiene pasos de limpieza importantes. Asegúrese de realizar los pasos de limpieza, aunque no haya completado este módulo.

Clonación del repositorio

Ya tiene una copia del repositorio de plantillas en su propia cuenta. Ahora clonarás este repositorio localmente para que puedas empezar a trabajar en él.

  1. Seleccione Code (Código) y después el icono de copiar.

    Captura de pantalla de la interfaz de GitHub en la que se muestra el repositorio nuevo, con el botón Copiar la dirección URL del repositorio resaltado.

  2. Abra Visual Studio Code.

  3. En Visual Studio Code, abra una nueva ventana del terminal. Para ello, seleccione Terminal>Nuevo terminal. La ventana se suele abrir en la parte inferior de la pantalla.

  4. Navegue en el terminal hasta el directorio donde desea clonar el repositorio de GitHub en el equipo local. Por ejemplo, para clonar el repositorio en la carpeta toy-website-environments, ejecute el comando siguiente:

    cd toy-website-end-to-end
    
  5. Escriba git clone, luego pegue la URL que copió antes. El comando debería ser algo parecido a esto:

    git clone https://github.com/mygithubuser/toy-website-end-to-end.git
    
  6. Vuelva a abrir Visual Studio Code en la carpeta del repositorio ejecutando el comando siguiente en el terminal de Visual Studio Code:

    code -r toy-website-end-to-end
    

Inicio de sesión en Azure

Para trabajar con grupos de recursos en Azure, inicie sesión en la cuenta de Azure desde el terminal de Visual Studio Code. Asegúrese de que ha instalado las herramientas de la CLI de Azure.

  1. En el menú Terminal, seleccione Nuevo terminal. Normalmente, la ventana de terminal se abre en la mitad inferior de la pantalla.

    El shell predeterminado suele ser pwsh, como se muestra en el lado derecho de la ventana del terminal.

    Recorte de pantalla de la ventana del terminal de Visual Studio Code, en la que pwsh se muestra como la opción del shell.

  2. Seleccione la lista desplegable Iniciar perfil y, después, Azure Cloud Shell (Bash).

    Recorte de pantalla de la ventana del terminal de Visual Studio Code. Se muestran la lista desplegable del shell del terminal y la opción de menú Azure Cloud Shell (Bash).

    Se abre un nuevo shell.

Inicio de sesión en Azure mediante la CLI de Azure

  1. En el terminal de Visual Studio Code, ejecute el siguiente comando para iniciar sesión en Azure:

    az login
    
  2. En el explorador que se abre, inicie sesión en su cuenta de Azure.

Para trabajar con grupos de recursos en Azure, inicie sesión en la cuenta de Azure desde el terminal de Visual Studio Code. Asegúrese de que ha instalado Azure PowerShell.

  1. En el menú Terminal, seleccione Nuevo terminal. Normalmente, la ventana de terminal se abre en la mitad inferior de la pantalla.

    El shell predeterminado suele ser pwsh, como se muestra en el lado derecho de la ventana del terminal.

    Recorte de pantalla de la ventana del terminal de Visual Studio Code, en la que pwsh se muestra como la opción del shell.

  2. Seleccione la lista desplegable Perfil de inicio y, después, seleccione Azure Cloud Shell (PowerShell).

    Recorte de pantalla de la ventana del terminal de Visual Studio Code. Se muestran la lista desplegable del shell del terminal y la opción de menú Azure Cloud Shell (PowerShell).

    Se abre un nuevo shell.

Inicio de sesión en Azure mediante Azure PowerShell

  1. En el terminal de Visual Studio Code, ejecute el siguiente comando para iniciar sesión en Azure:

    Connect-AzAccount
    
  2. En el explorador que se abre, inicie sesión en su cuenta de Azure.

Creación de dos identidades de carga de trabajo

Después, cree dos identidades de carga de trabajo en Microsoft Entra ID: una para el entorno de prueba y otra para el entorno de producción.

  1. Ejecute el código siguiente para definir variables para el nombre de usuario de GitHub y el nombre del repositorio. Asegúrese de reemplazar mygithubuser por el nombre de usuario de GitHub, que anotó anteriormente en este ejercicio. Asegúrese también de especificar el nombre correcto del repositorio de GitHub.

    githubOrganizationName='mygithubuser'
    githubRepositoryName='toy-website-end-to-end'
    
  2. Cree una identidad de carga de trabajo para las implementaciones en el entorno de prueba. La identidad de la carga de trabajo necesita dos credenciales federadas: una se usa cuando el flujo de trabajo ejecuta el trabajo de validación, ya que este trabajo no está asociado a un entorno de GitHub. La segunda se usa cuando el flujo de trabajo ejecuta el trabajo de implementación, que se ejecuta en el entorno de GitHub de prueba.

    testApplicationRegistrationDetails=$(az ad app create --display-name 'toy-website-end-to-end-test')
    testApplicationRegistrationObjectId=$(echo $testApplicationRegistrationDetails | jq -r '.id')
    testApplicationRegistrationAppId=$(echo $testApplicationRegistrationDetails | jq -r '.appId')
    
    az ad app federated-credential create \
       --id $testApplicationRegistrationObjectId \
       --parameters "{\"name\":\"toy-website-end-to-end-test\",\"issuer\":\"https://token.actions.githubusercontent.com\",\"subject\":\"repo:${githubOrganizationName}/${githubRepositoryName}:environment:Test\",\"audiences\":[\"api://AzureADTokenExchange\"]}"
    
    az ad app federated-credential create \
       --id $testApplicationRegistrationObjectId \
       --parameters "{\"name\":\"toy-website-end-to-end-test-branch\",\"issuer\":\"https://token.actions.githubusercontent.com\",\"subject\":\"repo:${githubOrganizationName}/${githubRepositoryName}:ref:refs/heads/main\",\"audiences\":[\"api://AzureADTokenExchange\"]}"
    
  3. Ejecute el código siguiente, que crea una identidad de carga de trabajo similar y credenciales federadas para el entorno de producción:

    productionApplicationRegistrationDetails=$(az ad app create --display-name 'toy-website-end-to-end-production')
    productionApplicationRegistrationObjectId=$(echo $productionApplicationRegistrationDetails | jq -r '.id')
    productionApplicationRegistrationAppId=$(echo $productionApplicationRegistrationDetails | jq -r '.appId')
    
    az ad app federated-credential create \
       --id $productionApplicationRegistrationObjectId \
       --parameters "{\"name\":\"toy-website-end-to-end-production\",\"issuer\":\"https://token.actions.githubusercontent.com\",\"subject\":\"repo:${githubOrganizationName}/${githubRepositoryName}:environment:Production\",\"audiences\":[\"api://AzureADTokenExchange\"]}"
    
    az ad app federated-credential create \
       --id $productionApplicationRegistrationObjectId \
       --parameters "{\"name\":\"toy-website-end-to-end-production-branch\",\"issuer\":\"https://token.actions.githubusercontent.com\",\"subject\":\"repo:${githubOrganizationName}/${githubRepositoryName}:ref:refs/heads/main\",\"audiences\":[\"api://AzureADTokenExchange\"]}"
    
  1. Ejecute el código siguiente para definir variables para el nombre de usuario de GitHub y el nombre del repositorio. Asegúrese de reemplazar mygithubuser por el nombre de usuario de GitHub, que anotó anteriormente en este ejercicio. Asegúrese también de especificar el nombre correcto del repositorio de GitHub.

    $githubOrganizationName = 'mygithubuser'
    $githubRepositoryName = 'toy-website-end-to-end'
    
  2. Ejecute el código siguiente, que crea una identidad de carga de trabajo para el entorno de prueba y la asocia al repositorio de GitHub:

    $testApplicationRegistration = New-AzADApplication -DisplayName 'toy-website-end-to-end-test'
    New-AzADAppFederatedCredential `
       -Name 'toy-website-end-to-end-test' `
       -ApplicationObjectId $testApplicationRegistration.Id `
       -Issuer 'https://token.actions.githubusercontent.com' `
       -Audience 'api://AzureADTokenExchange' `
       -Subject "repo:$($githubOrganizationName)/$($githubRepositoryName):environment:Test"
    New-AzADAppFederatedCredential `
       -Name 'toy-website-end-to-end-test-branch' `
       -ApplicationObjectId $testApplicationRegistration.Id `
       -Issuer 'https://token.actions.githubusercontent.com' `
       -Audience 'api://AzureADTokenExchange' `
       -Subject "repo:$($githubOrganizationName)/$($githubRepositoryName):ref:refs/heads/main"
    
  3. Ejecute el código siguiente, que sigue un proceso similar para el entorno de producción:

    $productionApplicationRegistration = New-AzADApplication -DisplayName 'toy-website-end-to-end-production'
    New-AzADAppFederatedCredential `
       -Name 'toy-website-end-to-end-production' `
       -ApplicationObjectId $productionApplicationRegistration.Id `
       -Issuer 'https://token.actions.githubusercontent.com' `
       -Audience 'api://AzureADTokenExchange' `
       -Subject "repo:$($githubOrganizationName)/$($githubRepositoryName):environment:Production"
    New-AzADAppFederatedCredential `
       -Name 'toy-website-end-to-end-production-branch' `
       -ApplicationObjectId $productionApplicationRegistration.Id `
       -Issuer 'https://token.actions.githubusercontent.com' `
       -Audience 'api://AzureADTokenExchange' `
       -Subject "repo:$($githubOrganizationName)/$($githubRepositoryName):ref:refs/heads/main"
    

Creación de dos grupos de recursos en Azure y concesión del acceso a la identidad de la carga de trabajo

A continuación, cree un grupo de recursos para cada entorno. Este proceso también concede a la identidad de carga de trabajo correspondiente el rol Colaborador en el grupo de recursos, lo que permite que el flujo de trabajo se implemente en dicho grupo de recursos.

  1. Para crear el grupo de recursos del entorno de prueba y conceder el acceso de identidad de carga de trabajo a él, ejecute los comandos siguientes de la CLI de Azure en el terminal de Visual Studio Code:

    testResourceGroupResourceId=$(az group create --name ToyWebsiteTest --location westus3 --query id --output tsv)
    
    az ad sp create --id $testApplicationRegistrationObjectId
    az role assignment create \
       --assignee $testApplicationRegistrationAppId \
       --role Contributor \
       --scope $testResourceGroupResourceId
    
  2. Ejecute un proceso similar para crear el grupo de recursos del entorno de producción:

    productionResourceGroupResourceId=$(az group create --name ToyWebsiteProduction --location westus3 --query id --output tsv)
    
    az ad sp create --id $productionApplicationRegistrationObjectId
    az role assignment create \
       --assignee $productionApplicationRegistrationAppId \
       --role Contributor \
       --scope $productionResourceGroupResourceId
    
  1. Para crear el grupo de recursos del entorno de prueba y conceder el acceso de identidad de carga de trabajo a él, ejecute los comandos siguientes de Azure PowerShell en el terminal de Visual Studio Code:

    $testResourceGroup = New-AzResourceGroup -Name ToyWebsiteTest -Location westus3
    
    New-AzADServicePrincipal -AppId $($testApplicationRegistration.AppId)
    New-AzRoleAssignment `
       -ApplicationId $($testApplicationRegistration.AppId) `
       -RoleDefinitionName Contributor `
       -Scope $($testResourceGroup.ResourceId)
    
  2. Ejecute un proceso similar para crear el grupo de recursos del entorno de producción:

    $productionResourceGroup = New-AzResourceGroup -Name ToyWebsiteProduction -Location westus3
    
    New-AzADServicePrincipal -AppId $($productionApplicationRegistration.AppId)
    New-AzRoleAssignment `
       -ApplicationId $($productionApplicationRegistration.AppId) `
       -RoleDefinitionName Contributor `
       -Scope $($productionResourceGroup.ResourceId)
    

Preparación de secretos de GitHub

Ejecute el código siguiente para generar los valores que necesita crear como secretos de GitHub:

echo "AZURE_CLIENT_ID_TEST: $testApplicationRegistrationAppId"
echo "AZURE_CLIENT_ID_PRODUCTION: $productionApplicationRegistrationAppId"
echo "AZURE_TENANT_ID: $(az account show --query tenantId --output tsv)"
echo "AZURE_SUBSCRIPTION_ID: $(az account show --query id --output tsv)"
$azureContext = Get-AzContext
Write-Host "AZURE_CLIENT_ID_TEST: $($testApplicationRegistration.AppId)"
Write-Host "AZURE_CLIENT_ID_PRODUCTION: $($productionApplicationRegistration.AppId)"
Write-Host "AZURE_TENANT_ID: $($azureContext.Tenant.Id)"
Write-Host "AZURE_SUBSCRIPTION_ID: $($azureContext.Subscription.Id)"

Creación de secretos de GitHub

Ha creado dos identidades de carga de trabajo y grupos de recursos en los que se pueden implementar. Ahora, cree un secreto en Acciones de GitHub.

  1. En el explorador, vaya al repositorio de GitHub.

  2. Seleccione Configuración>Secretos y variables>Acciones.

  3. Seleccione New repository secret (Nuevo secreto del repositorio).

    Captura de pantalla de la interfaz de GitHub que muestra la página

  4. Asigne el nombre AZURE_CLIENT_ID_TEST al secreto.

  5. En el campo Valor, pegue el GUID de la primera línea de la salida del terminal. No incluya AZURE_CLIENT_ID_TEST, los dos puntos ni los espacios en el valor.

  6. Seleccione Add secret (Agregar secreto).

    Captura de pantalla de la interfaz de GitHub que muestra la página

  7. Repita el proceso para crear los secretos para AZURE_CLIENT_ID_PRODUCTION, AZURE_TENANT_ID y AZURE_SUBSCRIPTION_ID, copiando los valores de los campos correspondientes en la salida del terminal.

  8. Compruebe que en la lista de secretos se muestran ahora los cuatro secretos.

    Captura de pantalla de la interfaz de GitHub con la lista de secretos, incluidos los secretos de prueba y de producción.

Creación de entornos en GitHub

  1. En el explorador, vaya Settings>Environments (Configuración > Entornos).

  2. Seleccione Nuevo entorno.

    Captura de pantalla de la interfaz de GitHub en la que se muestra la página Entornos y el botón para crear un entorno.

  3. Escriba Prueba como nombre de entorno.

    Captura de pantalla de la página de GitHub de un nuevo entorno denominado Prueba, con el botón Configurar entorno.

  4. Seleccione Configure environment (Configurar el entorno).

  5. Seleccione Entornos para volver a la lista de entornos.

    Captura de pantalla de la página de GitHub de un nuevo entorno denominado Prueba, con el vínculo Entorno.

  6. Repita el proceso para crear otro entorno de nombre Producción.

Nota:

En los módulos anteriores de esta ruta de aprendizaje, agregó una regla de protección al entorno de producción. En este módulo, por motivos de simplicidad, se omite la regla de protección. Sin embargo, puede agregar la regla de protección usted mismo si lo desea.