¿Qué son las pilas de implementación?

Completado

Una pila de implementación de Azure es un tipo de recurso de Azure que permite administrar el ciclo de vida de una colección de recursos de Azure como una sola unidad atómica, incluso si abarcan varios grupos de recursos o suscripciones. Permite implementaciones coherentes y repetibles, simplifica la administración y permite el escalado y la actualización eficientes de los recursos.

En esta unidad, obtendrá información sobre la organización de recursos en Azure y cómo las pilas de implementación pueden ayudarle a administrar los recursos de maneras que no eran posibles antes.

Organización de recursos

Hay muchas maneras de organizar los recursos en Azure. Puede optar por organizar los recursos en función de un entorno (producción, ensayo, desarrollo), un ciclo de vida de la aplicación o una función (por ejemplo, conectividad o recursos de proceso). Los factores como el tamaño de la organización, el número de aplicaciones y la residencia de datos influyen en estas decisiones y existen procedimientos recomendados generales para cada escenario.

En el caso de los entornos de implementación, puede separarlos en distintas suscripciones o incluso en grupos de administración. Todos los componentes de una aplicación pueden existir en un único grupo de recursos, varios grupos de recursos o incluso en varias suscripciones. En el caso de la organización de recursos de Azure, los procedimientos recomendados sugieren organizar los recursos en grupos de recursos en función del ciclo de vida y la seguridad.

Aplicación de grupo de recursos único

Hay ocasiones en las que el uso de un único grupo de recursos para la aplicación tiene sentido. Si no está familiarizado con Azure y acaba de empezar a trabajar con un entorno de desarrollo o implementar una aplicación de producción sin muchos recursos, un único grupo de recursos puede funcionar.

Un grupo de recursos se usa con frecuencia como límite de seguridad para los permisos. Puede administrar una sola asignación de control de acceso basado en rol (RBAC) en el ámbito del grupo de recursos si los requisitos de seguridad no son estrictos.

Supongamos que la aplicación consta de un servicio de aplicaciones, Application Insights y una base de datos SQL implementada en un único grupo de recursos. Su organización tiene equipos independientes para administrar el proceso, las aplicaciones web y las bases de datos. Si la directiva de seguridad de la organización requiere RBAC pormenorizado, es necesario definir el ámbito de los permisos en el ámbito de recursos en lugar del ámbito del grupo de recursos.

Diagrama que representa una aplicación con sus recursos implementados en un único grupo de recursos.

Con el tiempo, es posible que los recursos no relacionados con la aplicación también se implementen en el mismo grupo de recursos. Por ejemplo, un compañero de la implementación implementa un nuevo almacén de claves de Azure y elige accidentalmente el grupo de recursos incorrecto en el momento de la implementación. Este escenario puede dificultar la determinación de los recursos que pertenecen a la aplicación y podría provocar problemas como la eliminación accidental de un recurso crítico.

Aplicación de grupo de varios recursos

¿Qué ocurre cuando la aplicación se escala hasta el punto en el que se necesita un cambio? Puede que sea necesario tomar partes de la aplicación y dividirlas en grupos de recursos independientes para controles de seguridad simplificados. Por ejemplo, puede colocar todos los recursos de proceso en el grupo de recursos de proceso, los recursos de la aplicación en el grupo de recursos de la aplicación y todas las bases de datos en el grupo de recursos de base de datos.

Diagrama que representa una aplicación con sus recursos implementados en varios grupos de recursos.

Este modelo permite limitar los permisos a los equipos de proceso, aplicación y base de datos a sus grupos de recursos adecuados. Aunque esta práctica puede resolver un problema, introdujo la administración descentralizada. A medida que la mayoría de las implementaciones de Azure están limitadas al grupo de recursos, ya no tiene la capacidad de administrar los recursos como una sola unidad.

Si los recursos de la aplicación se implementan en grupos de recursos independientes, puede resultar difícil identificar qué recursos forman parte de la aplicación. Puede usar etiquetas de Azure para ayudar a identificar los recursos de una aplicación, pero es posible que un recurso no esté etiquetado correctamente.

Es posible que sea necesario realizar operaciones de implementación más de una vez en el modelo de grupo de varios recursos. Al implementar recursos, en función del método de implementación, puede que sea necesario ejecutar varios comandos de implementación. La mayoría de las implementaciones de Azure se limitan al grupo de recursos, por lo que sería necesario implementar primero los recursos de red, seguidos de los recursos de la aplicación. Lo mismo se aplica a las operaciones de eliminación. Si necesita quitar todos los grupos de recursos relacionados con la aplicación, es posible que tenga que ejecutar varias operaciones de eliminación.

Escribir pilas de implementación

Las pilas de implementación cambian la forma en que piensa en la organización de recursos entre grupos de recursos y suscripciones. Una pila de implementación le permite agrupar todos los recursos que componen la aplicación, independientemente de dónde se encuentren en la jerarquía organizativa de recursos de Azure. Puede administrarlos como una sola unidad. Con las pilas de implementación, puede realizar operaciones de ciclo de vida en la colección de recursos que componen la pila.

Piense en las pilas de implementación como una serie de punteros que agrupan los recursos de la aplicación en una sola unidad. Las pilas de implementación se pueden crear en distintos ámbitos, como grupos de recursos, suscripciones y grupos de administración.

Diagrama que representa los recursos de una aplicación administrados por una pila de implementación e implementados en varios grupos de recursos.

Considere el ejemplo anterior. Al implementar la aplicación y sus recursos con una sola pila, con ámbito en el nivel de suscripción y en todos los grupos de recursos, ahora puede administrar la aplicación como una sola unidad. Cada grupo de recursos y sus recursos se administran mediante la pila.

Uso de pilas de implementación

¿Qué operaciones se pueden realizar en las pilas de implementación? Puede crear, enumerar, actualizar y eliminar pilas de implementación. En el caso de los recursos, puede ver los recursos de la pila, agregar y quitar recursos dentro de la pila y proteger la pila y sus recursos de eliminación.

La creación e implementación de una pila de implementación y sus recursos es casi idéntica a una implementación estándar de Azure y usa las mismas plantillas JSON de ARM, archivos de Bicep o especificaciones de plantilla a las que se usa. Por ejemplo:

El comando de la CLI de Azure para implementar un archivo de Bicep en un grupo de recursos es:

az deployment group create \
    --resource-group rg-depositsApplication \
    --template-file ./main.bicep

El comando de la CLI de Azure para crear una pila de implementación en el ámbito del grupo de recursos es:

az stack group create \
    --name stack-deposits \
    --resource-group rg-depositsApplication \
    --template-file ./main.bicep \
    --action-on-unmanage detachAll \
    --deny-settings-mode none

Las pilas de implementación permiten una limpieza eficaz del entorno. Las pilas de implementación permiten eliminar la pila y todos sus recursos a través de una sola llamada API, sin necesidad de comprender las dependencias. Esta característica simplifica la eliminación de los recursos de forma confiable, lo que mejora la velocidad de eliminación de recursos. Por ejemplo:

El comando de la CLI de Azure para eliminar una pila de implementación en el ámbito del grupo de recursos junto con sus recursos es:

az stack group delete \
    --name stack-deposits \
    --resource-group rg-depositsApplication \
    --action-on-unmanage detachAll

Nota:

Es posible que ya use implementaciones en modo completo como parte de una estrategia de implementación existente. Si lo hace, considere la posibilidad de que las pilas de implementación sean la siguiente evolución, así como una opción más segura.

Recursos administrados

Al enviar un archivo de Bicep, una plantilla JSON de ARM o una especificación de plantilla a una pila de implementación, la pila se hace responsable de la administración de los recursos descritos en el archivo. Los recursos administrados por la pila se conocen como recursosadministrados, pero esos recursos se siguen modificando a través de los archivos de plantilla originales.

Si la pila de implementación ya no necesita administrar un recurso, puede modificar la pila para que ya no incluya el recurso. La acción sobre el comportamiento no administrado de una pila de implementación determina lo que sucede con un recurso que se quita de la definición de la pila de implementación. Este comportamiento, que se describe más adelante en la unidad, determina si un recurso, un grupo de recursos o grupos de administración se desasocia o elimina de la pila.

Configuración de denegación

Además, puede configurar una "configuración de denegación" en la pila y sus recursos que impiden cambios no autorizados. Estas asignaciones de denegación son personalizables. Puede establecer el modo en ninguna marca, eliminación de denegación o escritura y eliminación de denegación, lo que puede parecer similar a los bloqueos de Azure. Además, puede excluir acciones o entidades de servicio específicas de las asignaciones de denegación. Considere la posibilidad de denegar la configuración de una capa adicional de protección frente a modificaciones accidentales y eliminaciones.