Implementación de archivos de Bicep mediante un flujo de trabajo
Ahora que ha creado un flujo de trabajo básico, está listo para configurarlo y así implementar tus archivos Bicep. En esta unidad, aprenderá a implementar código de Bicep desde un flujo de trabajo y a configurar los pasos de implementación.
Nota:
Los comandos de esta unidad se muestran para ilustrar conceptos. No los ejecute todavía. Pronto va a practicar lo que aprenderá aquí.
Echa un vistazo al código
Los archivos de Bicep se almacenan en el repositorio de Git. En Acciones de GitHub, debe indicar explícitamente al flujo de trabajo que consulte los archivos del repositorio de Git. De lo contrario, el flujo de trabajo no tendrá acceso a los archivos. Este paso suele ser lo primero que hace el trabajo.
Para comprobar el código, puede usar la actions/checkout@v3
acción:
name: MyWorkflow
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
path: repo
Observe que el flujo de trabajo incluye la uses
palabra clave . La palabra clave indica que desea usar una acción predefinida denominada actions/checkout
.
Al igual que los recursos de Bicep, las acciones siempre tienen versiones. En este caso, el flujo de trabajo usa la versión 3, por lo que @v3
se anexa al nombre de la acción.
Cuando el flujo de trabajo incluye esta acción, el código se extrae del repositorio y se pone en el sistema de archivos del ejecutor. Especifique la ruta de acceso en la que se deben almacenar los archivos utilizando el parámetro path
.
Autentíquese en Azure
Al implementar un archivo de Bicep desde su propio equipo, se usa la CLI de Azure o Azure PowerShell. Para poder implementar el código, debe iniciar sesión en Azure. Normalmente, las herramientas le piden que escriba sus credenciales en un explorador. Una vez comprobadas las credenciales, se confirman los permisos para implementar recursos y ya puede usar las herramientas para implementar el archivo de Bicep.
Sugerencia
En este módulo, creará una entidad de identidad de carga de trabajo para que la use el flujo de trabajo. El módulo Autenticación del flujo de trabajo de implementación de Azure mediante identidades de carga de trabajo proporciona una explicación más detallada de las identidades de carga de trabajo, incluido cómo funcionan, así como cómo crearlas, asignarles roles y administrarlas.
La implementación por flujo de trabajo también requiere autenticación. Dado que los flujos de trabajo se ejecutan sin intervención humana, los flujos de trabajo se autentican en Azure mediante una identidad de carga de trabajo. GitHub y microsoft Entra ID funcionan juntos para autenticar de forma segura el flujo de trabajo sin necesidad de credenciales.
Cuando el flujo de trabajo necesita comunicarse con Azure, un paso del flujo de trabajo inicia sesión en Azure mediante una identidad de carga de trabajo. A continuación, los pasos definidos en el flujo de trabajo usan la identidad del flujo de trabajo.
Debe asegurarse de que la identidad de carga de trabajo tenga los permisos necesarios para poder ejecutar los pasos de la implementación. Por ejemplo, es posible que tenga que asignar a la identidad de carga de trabajo el rol Colaborador para el grupo de recursos donde implementa los recursos.
Advertencia
Puede parecer más fácil almacenar las credenciales de usuario en el archivo YAML y, a continuación, iniciar sesión con el az login
comando . Nunca debe usar este enfoque para autenticar el flujo de trabajo. Las credenciales de un archivo YAML se almacenan en texto sin formato. Cualquier persona que tenga acceso al repositorio puede ver y usar las credenciales. Incluso si restringe el acceso al repositorio de GitHub, siempre que alguien clone el repositorio, el archivo YAML que contiene las credenciales estará en el equipo de esa persona.
Inicio de sesión en Azure
Antes de que el flujo de trabajo pueda ejecutar comandos en su entorno de Azure, primero debe iniciar sesión. Hay una acción denominada azure/login
que controla el proceso de inicio de sesión. También debe conceder permiso para que el flujo de trabajo funcione con tokens de autenticación.
name: MyWorkflow
on: [workflow_dispatch]
permissions:
id-token: write
contents: read
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
path: repo
- uses: azure/login@v1
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
La azure/login
acción requiere que proporcione tres fragmentos de información para usar una identidad de carga de trabajo: un identificador de aplicación de Microsoft Entra, el identificador de inquilino (directorio) de Microsoft Entra y el identificador de suscripción de Azure con el que desea trabajar.
Una vez ejecutada esta acción, el ejecutor se autenticará y podrá ejecutar instrucciones en el entorno de Azure.
Implementación del archivo de Bicep
Una vez que el flujo de trabajo inicie sesión en Azure, puede usar la identidad de carga de trabajo para ejecutar la implementación de Bicep. En Acciones de GitHub, use la acción azure/arm-deploy
para iniciar una implementación de Bicep.
Nota:
Hay otras maneras de implementar archivos de Bicep desde Acciones de GitHub. Por ejemplo, puede usar la acción azure/CLI
y luego proporcionar comandos de la CLI de Azure para ejecutar las implementaciones. Sin embargo, dado que la azure/arm-deploy
tarea está diseñada específicamente para despliegues, la usarás en este módulo.
Este es un ejemplo de cómo puede configurar un paso para usar la azure/arm-deploy
acción:
name: MyWorkflow
on: [workflow_dispatch]
permissions:
id-token: write
contents: read
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
path: repo
- uses: azure/login@v1
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- uses: azure/arm-deploy@v1
with:
resourceGroupName: ${{ env.AZURE_RESOURCEGROUP_NAME }}
template: ./deploy/main.bicep
parameters: environmentType=Test
La azure/arm-deploy
acción acepta varios parámetros, entre los que se incluyen:
resourceGroupName
: el nombre del grupo de recursos en el que desea implementar los recursos definidos en el archivo de Bicep.template
: La ruta de acceso al archivo de Bicep en el repositorio. La ruta de acceso es relativa a la raíz del repositorio.parameters
: indica los valores de parámetro que proporcione en tiempo de implementación. En este ejemplo, se proporciona un valor para el parámetro environmentType .
Dado que la acción anterior azure/login
ya firmó el flujo de trabajo en Azure, el azure/arm-deploy
paso se ejecuta en un ejecutor autenticado.
variables
A menudo, los flujos de trabajo contienen valores que desea reutilizar en varios lugares del archivo de flujo de trabajo. También puede almacenar estos valores en la parte superior del archivo de flujo de trabajo para facilitar la referencia y poder cambiar fácilmente los valores. En el flujo de trabajo, las variables que defina se mostrarán como variables de entorno. Para definir valores reutilizables, use variables.
Crear una variable
Puede crear variables en distintos niveles en el archivo de flujo de trabajo. Sin embargo, si quiere que estén disponibles para todo el archivo de flujo de trabajo, debe definirlos cerca de la parte superior del archivo, justo debajo de la on
instrucción. Para definir las variables, use el env
parámetro :
env:
AZURE_RESOURCEGROUP_NAME: gh-actions
AZURE_WEBAPP_NAME: webapp-gh-actions
En el ejemplo anterior, se especifican dos variables de entorno.
Uso de una variable en el flujo de trabajo
Después de crear una variable, use una sintaxis especial para hacer referencia a ella en el archivo YAML del flujo de trabajo, de la siguiente manera:
${{ env.AZURE_RESOURCEGROUP_NAME }}
Variables de entorno predeterminadas
Acciones de GitHub también usa variables de entorno predeterminadas. Las variables de entorno predeterminadas contienen información predefinida que puede usar en el flujo de trabajo. Estas son algunas de las variables de entorno predeterminadas que puede usar en el flujo de trabajo:
github.sha
: El identificador de la confirmación de Git que desencadenó la ejecución del flujo de trabajo.github.run_number
: un número único para cada ejecución de un flujo de trabajo determinado en un repositorio. Este número comienza en 1 para la primera ejecución del flujo de trabajo e incrementa con cada nueva ejecución. Puede usar esta variable para asignar un nombre a la implementación de Azure, por lo que puede volver a realizar el seguimiento de la implementación a la ejecución específica del flujo de trabajo que la desencadenó.Nota:
En Acciones de GitHub, puede volver a ejecutar una ejecución de flujo de trabajo. Al hacerlo, el número de ejecución no cambia, por lo que no debe usar la
github.run_number
variable para contar cuántas veces se ha ejecutado el flujo de trabajo.
Secretos
A veces, debe almacenar información secreta para que el flujo de trabajo lo use, como una contraseña de base de datos o una clave de API. Los secretos de GitHub se usan para almacenar de forma segura la información que contiene credenciales o información confidencial. El flujo de trabajo puede acceder al valor del secreto.
Los secretos se crean en la configuración del repositorio de GitHub. Un secreto está disponible para todos los flujos de trabajo del repositorio. En un módulo posterior, obtendrá información sobre los entornos, que le permiten restringir el uso de secretos a implementaciones a un entorno específico.
Advertencia
De forma predeterminada, Acciones de GitHub ofusca los valores de variable secretos en los registros de los flujos de trabajo, pero también debe seguir buenas prácticas. Los pasos del flujo de trabajo tienen acceso a los valores de los secretos. Si el flujo de trabajo incluye un paso que no controla un secreto de forma segura, existe la posibilidad de que el valor del secreto se muestre en los registros del flujo de trabajo. Siempre debe revisar atentamente los cambios que se realicen en el archivo de definición de un flujo de trabajo para comprobar que los secretos no se traten incorrectamente.
Puede crear secretos mediante la interfaz web de GitHub. Para hacer referencia a un valor secreto en el flujo de trabajo, use la sintaxis siguiente:
${{ secrets.NAME_OF_THE_SECRET }}
Cuando se inicia el flujo de trabajo, el ejecutor que ejecuta los pasos de implementación tiene acceso al valor secreto de GitHub descifrado. Acciones de GitHub está diseñada para no revelar valores secretos en los registros de flujo de trabajo.
Sugerencia
Al igual que los parámetros de Bicep, no es necesario crear variables para todo. Es una buena idea crear variables para cualquier cosa que pueda cambiar entre entornos y secretos de GitHub para cualquier cosa que sea secreta. Puesto que el flujo de trabajo siempre usará el mismo archivo de Bicep, no es necesario crear una variable para la ruta de acceso.
En este módulo, usará secretos de GitHub para almacenar la información que la tarea azure/login
necesita para iniciar sesión en Azure: la suscripción de Microsoft Entra y el identificador de inquilino y el identificador de registro de aplicación de la identidad de carga de trabajo.