Configure los scripts de aprovisionamiento para las imágenes de Managed DevOps Pools

Los grupos administrados de DevOps permiten ejecutar un script de PowerShell (Windows) o de Bash (Linux) en una imagen de un grupo antes de asignarla a un agente para ejecutar un trabajo. Esta característica habilita escenarios como la instalación de entidades de certificación raíz de confianza y la configuración de variables de entorno.

Importante

Los scripts de aprovisionamiento se encuentran actualmente en versión preliminar. La característica puede cambiar antes de la disponibilidad general.

Los grupos de DevOps administrados usan una identidad administrada asociada al grupo para descargar los scripts de Azure Blob Storage al agente y cargar registros de scripts de aprovisionamiento para solucionar problemas. El script de aprovisionamiento se ejecuta cuando se inicia el agente y puede configurar el agente para que se reinicie después de que se ejecute el script.

Para configurar una imagen de grupo de DevOps administrado para ejecutar un script de aprovisionamiento, siga estos pasos:

  1. Cree dos contenedores de blobs en una cuenta de Blob Storage: una para los scripts de aprovisionamiento y los archivos auxiliares, y otra para cargar registros de scripts de aprovisionamiento. Cargue los scripts de aprovisionamiento y los archivos de soporte en el contenedor de blobs del script.
  2. Asocie una identidad administrada al grupo de DevOps administrado y asigne los roles necesarios a la identidad administrada en los ámbitos adecuados para que el agente pueda leer los scripts de aprovisionamiento y cargar los registros de scripts de aprovisionamiento.
  3. Configure las imágenes para usar los scripts de aprovisionamiento deseados.

Prerequisites

Creación de contenedores de blobs

Los grupos administrados de DevOps descargan scripts de aprovisionamiento y sus archivos auxiliares desde objetos binarios almacenados en un contenedor de una cuenta de Blob Storage. Los grupos de DevOps administrados requieren dos contenedores de blobs en la cuenta de almacenamiento: uno para descargar el script de aprovisionamiento y los archivos auxiliares, y otro para cargar registros de scripts de aprovisionamiento.

Cree los dos contenedores de blobs siguientes en la cuenta de Blob Storage.

contenedor de Blob Storage Description
Contenedor de blobs para scripts. Si no especifica un nombre personalizado en punto de entrada (provisioningScriptEntryPoint) al configurar la imagen para ejecutar un script de aprovisionamiento, el nombre predeterminado es provisioningscript. Contiene el script de aprovisionamiento y los archivos auxiliares. El script de aprovisionamiento debe llamarse Startup.ps1 para imágenes de Windows, o Startup.sh para imágenes de Linux.
Contenedor de registros del script de aprovisionamiento. No se puede configurar este nombre de contenedor; debe ser mdpprovisioningscriptlogs.

Los grupos de DevOps administrados pueden crear automáticamente el mdpprovisioningscriptlogs contenedor de blobs, pero para el acceso con privilegios mínimos se recomienda crear el mdpprovisioningscriptlogs contenedor manualmente. Para obtener más información, consulte Asignación de roles de Azure a la identidad administrada.
Incluye los registros stdout y stderr generados por el script de aprovisionamiento y una copia del script. Los nombres de blob usan el nombre de máquina del agente como directorio virtual.

Cargue el script de aprovisionamiento y los archivos auxiliares en el contenedor de blobs de scripts. El script de aprovisionamiento debe llamarse Startup.ps1 para imágenes de Windows, o Startup.sh para imágenes de Linux. Puede incluir en el blob cualquier archivo de apoyo que requieran los scripts. Cuando se inicia el agente, estos archivos se descargan en el directorio de trabajo del agente y el script de aprovisionamiento se ejecuta desde esa ubicación.

Asignación de roles de Azure a la identidad administrada

Managed DevOps Pools usa una identidad administrada para acceder a los contenedores de blobs de los scripts de aprovisionamiento y sus registros. Debe asociar una identidad administrada con el grupo de DevOps administrado y asignar los roles especificados a la identidad administrada en los ámbitos descritos en esta sección. Si el grupo de DevOps administrado no tiene una identidad administrada, cree una siguiendo los pasos descritos en Configuración de una identidad administrada para el grupo de DevOps administrado.

  • Si su Managed DevOps Pool tiene una única identidad administrada asociada, esa identidad se utiliza para acceder al script de aprovisionamiento y a los contenedores de registros del script de aprovisionamiento.
  • Si su grupo administrado de DevOps tiene más de una identidad administrada asociada, designe una identidad administrada específica para usarla con los scripts de aprovisionamiento; para ello, especifique la propiedad Id. de cliente de identidad administrada (provisioningScriptManagedIdentityResourceId) al configurar su imagen para usar un script de aprovisionamiento.

Asigne los roles de la siguiente tabla a la identidad administrada asociada del grupo de Managed DevOps en los ámbitos especificados para permitir que el agente descargue los scripts y cargue los registros del script de aprovisionamiento. Para obtener más información sobre cómo asignar roles de Azure, consulte Pasos para asignar un rol de Azure.

Función Ámbito
Lector de datos de Storage Blob Ámbito del contenedor de blobs del script. Si no especifica un nombre en el punto de entrada (provisioningScriptEntryPoint) al configurar la imagen para ejecutar un script de aprovisionamiento, el nombre predeterminado es provisioningscript.
Colaborador de datos de Storage Blob Para un acceso con privilegios mínimos, cree manualmente el contenedor de registros del script de aprovisionamiento (mdpprovisioningscriptlogs) y asigne el rol a la identidad administrada en el ámbito de ese contenedor de blobs.

Si quiere que los grupos de DevOps administrados creen el contenedor, asigne el rol a la identidad administrada en el ámbito de la cuenta de almacenamiento. Si asigna el rol Colaborador de datos de Storage Blob en el ámbito de la cuenta de almacenamiento, no es necesario asignar el rol Lector de datos de Storage Blob en el ámbito del contenedor de scripts.

Configure su imagen para usar el script de aprovisionamiento

Para usar un script de aprovisionamiento con una imagen, configure las siguientes propiedades de imagen.

Property Description
Identificador de recurso de la cuenta de almacenamiento
provisioningScriptStorageAccountResourceId
Obligatorio. Identificador de recurso de la cuenta de almacenamiento que contiene el contenedor del script (nombre predeterminado: provisioningscript) y el contenedor mdpprovisioningscriptlogs.
Punto de entrada
provisioningScriptEntryPoint
Nombre del contenedor de blobs que contiene el script de aprovisionamiento y los archivos auxiliares. Si no especifica un valor, el valor predeterminado es provisioningscript.
Identificador de cliente de identidad administrada
provisioningScriptManagedIdentityClientId
Obligatorio si el grupo está asociado a más de una identidad administrada. Identificador de cliente de la identidad administrada que se va a usar para acceder a los blobs en el script y aprovisionar contenedores de registros de scripts. Si el grupo de DevOps administrado tiene más de una identidad administrada asociada, debe especificar cuál se usará aquí. Si el grupo solo tiene una identidad, esta propiedad es opcional.
Reinicio después de la ejecución del script
provisioningScriptShouldRestart
Si el agente debe reiniciarse después de ejecutar el script de aprovisionamiento y antes de enviar tareas al agente. Si no especifica un valor, el valor predeterminado es false.

Reiniciar después de que la ejecución del script aumente el tiempo de aprovisionamiento y solo se debe realizar si el script de aprovisionamiento realiza cambios que requieren un reinicio para surtir efecto.

Note

Los scripts de aprovisionamiento están disponibles en la versión 2026-06-02 de LA API o versiones posteriores.

Si actualiza el grupo mediante una versión anterior de la API después de configurar scripts de aprovisionamiento, no se conservará la configuración del script de aprovisionamiento.

Para configurar los ajustes del script de aprovisionamiento para una imagen, vaya a la sección Imágenes de la configuración del grupo y seleccione ...>Configure provisioning script.

Captura de pantalla que muestra la opción de menú Configurar script de aprovisionamiento.

Agregue o actualice la configuración del script de aprovisionamiento de la imagen y seleccione Guardar.

Captura de pantalla que muestra la configuración del script de aprovisionamiento.

Errores de aprovisionamiento

En la tabla siguiente se enumeran los códigos de error y las descripciones del script de aprovisionamiento.

Código de error Description
ProvisioningScriptDownloadFailed El script de aprovisionamiento no se pudo descargar en la máquina durante el aprovisionamiento.
ProvisioningScriptAccessFailed El proceso de aprovisionamiento no pudo acceder a la secuencia de comandos de aprovisionamiento. Normalmente, este error se produce debido a un problema de acceso o permisos al recuperar el script.
ProvisioningScriptExecutionFailed El script de aprovisionamiento se descargó, pero no se pudo ejecutar en la máquina.
ProvisioningScriptLogUploadFailed El proceso de aprovisionamiento generó registros de script de aprovisionamiento, pero no los pudo cargar.

Registros del script de aprovisionamiento

Los registros de script de aprovisionamiento contienen la salida estándar (stdout) y el error estándar (stderr) generados por el script. Managed DevOps Pools escribe estos registros en el contenedor de blobs mdpprovisioningscriptlogs de la cuenta de almacenamiento que especifique. Los blobs se organizan en un directorio virtual cuyo nombre usa el formato mdp-{poolName}-{agentMachineName}. Este directorio virtual contiene un output directorio virtual con stderr.log archivos y stdout.log y un script directorio virtual con una copia del script que se ejecutó.

Managed DevOps Pools no administra estos registros, por lo que debe administrar su retención en la cuenta de almacenamiento mediante las directivas de administración del ciclo de vida de Azure Blob Storage. La siguiente directiva de ejemplo denominada DeleteOldMDPLogs elimina blobs de registro tres días después de la última modificación.

{
  "rules": [
    {
      "enabled": true,
      "name": "DeleteOldMDPLogs",
      "type": "Lifecycle",
      "definition": {
        "actions": {
          "baseBlob": {
            "delete": {
              "daysAfterModificationGreaterThan": 3
            }
          }
        },
        "filters": {
          "blobTypes": [
            "blockBlob"
          ],
          "prefixMatch": [
            "mdpprovisioningscriptlogs/"
          ]
        }
      }
    }
  ]
}

Puede obtener ayuda de inteligencia artificial de GitHub Copilot para crear directivas de administración del ciclo de vida de Azure Blob Storage. Personalice el siguiente mensaje para crear directivas de administración del ciclo de vida de Azure Blob Storage.

Build an Azure Blob Storage lifecycle management policy named DeleteOldMDPLogs that deletes logs after three days.

Para obtener más detalles sobre la directiva generada por Copilot, puede pedir Copilot que proporcione una explicación de la directiva generada en el mensaje.

Copilot funciona con IA, por lo que es posible que se produzcan sorpresas y errores. Para obtener más información, consulte las preguntas frecuentes sobre el uso general de Copilot.

Para obtener más información, consulte Azure Blob Storage directivas de administración del ciclo de vida y Configuración de una directiva de administración del ciclo de vida.

Consulte también