Effettuare il provisioning degli agenti per i gruppi di distribuzione

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

I gruppi di distribuzione semplificano la definizione di gruppi logici di computer di destinazione per la distribuzione e l'installazione dell'agente richiesto in ogni computer. Questo articolo illustra come creare un gruppo di distribuzione e come installare ed effettuare il provisioning dell'agente in ogni macchina virtuale o fisica nel gruppo di distribuzione.

È possibile installare l'agente in uno dei modi seguenti:

Per informazioni sugli agenti e sulle pipeline, vedere:

Eseguire lo script di installazione nei server di destinazione

  1. Nella scheda Gruppi di distribuzione di Azure Pipelines scegliere +Nuovo per creare un nuovo gruppo.

  2. Immettere un nome per il gruppo e facoltativamente una descrizione, quindi scegliere Crea.

  3. Nella sezione Registra computer usando la riga di comando della pagina successiva selezionare il sistema operativo del computer di destinazione.

  4. Scegliere Usa un token di accesso personale nello script per l'autenticazione. Altre informazioni.

  5. Scegliere Copia lo script negli Appunti.

  6. Accedere a ogni computer di destinazione a sua volta usando l'account con le autorizzazioni appropriate e:

    • Aprire un prompt dei comandi di PowerShell Amministrazione istrator, incollare lo script copiato, quindi eseguirlo per registrare il computer con questo gruppo.

    • Se viene visualizzato un errore durante l'esecuzione dello script che non è stato possibile creare un canale sicuro, eseguire questo comando al prompt di PowerShell Amministrazione istrator:

      [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

    • Quando viene richiesto di configurare i tag per l'agente, premere Y e immettere i tag che verranno usati per identificare i subset dei computer nel gruppo per le distribuzioni parziali.

      I tag assegnati consentono di limitare la distribuzione a server specifici quando il gruppo di distribuzione viene usato in un processo Esegui nel gruppo di computer.

    • Quando richiesto per l'account utente, premere Invio per accettare le impostazioni predefinite.

    • Attendere il completamento dello script con il messaggio Service vstsagent.{organization-name}.{computer-name} started successfully.

  7. Nella pagina Gruppi di distribuzione di Azure Pipelines aprire la scheda Computer e verificare che gli agenti siano in esecuzione. Se i tag configurati non sono visibili, aggiornare la pagina.

Installare l'estensione della macchina virtuale di Azure Per l'agente di Azure Pipelines

  1. Nella scheda Gruppi di distribuzione di Azure Pipelines scegliere +Nuovo per creare un nuovo gruppo.

  2. Immettere un nome per il gruppo e facoltativamente una descrizione, quindi scegliere Crea.

  3. Nella portale di Azure, per ogni macchina virtuale che verrà inclusa nel gruppo di distribuzione aprire il pannello Estensione, scegliere + Aggiungi per aprire l'elenco Nuova risorsa e selezionare Agente di Azure Pipelines.

    Installazione dell'estensione Dell'agente di Azure Pipelines

  4. Nel pannello Installa estensione specificare il nome della sottoscrizione di Azure Pipelines da usare. Ad esempio, se l'URL è https://dev.azure.com/contoso, specificare solo contoso.

  5. Specificare il nome del progetto e il nome del gruppo di distribuzione.

  6. Facoltativamente, specificare un nome per l'agente. Se non specificato, usa il nome della macchina virtuale aggiunto con -DG.

  7. Immettere il token di accesso personale da usare per l'autenticazione in Azure Pipelines.

  8. Facoltativamente, specificare un elenco delimitato da virgole di tag che verranno configurati nell'agente. I tag non fanno distinzione tra maiuscole e minuscole e ognuno non deve contenere più di 256 caratteri.

  9. Scegliere OK per avviare l'installazione dell'agente in questa macchina virtuale.

  10. Aggiungere l'estensione a tutte le altre macchine virtuali da includere in questo gruppo di distribuzione.

Usare l'attività di distribuzione del modello di Resource Manager

Importante

Queste istruzioni fanno riferimento alla versione 2 dell'attività. Passare alla versione dell'attività da 3 a 2.

È possibile usare l'attività di distribuzione del modello di Azure Resource Manager per distribuire un modello di Azure Resource Manager (ARM) che installa l'estensione della macchina virtuale di Azure dell'agente di Azure Pipelines durante la creazione di una macchina virtuale o per aggiornare il gruppo di risorse per applicare l'estensione dopo la creazione della macchina virtuale. In alternativa, è possibile usare le opzioni di distribuzione avanzate dell'attività di distribuzione del modello di Resource Manager per distribuire l'agente nei gruppi di distribuzione.

Installare l'estensione della macchina virtuale di Azure "Azure Pipelines Agent" usando un modello di Resource Manager

Un modello di Resource Manager è un file JSON che definisce in modo dichiarativo un set di risorse di Azure. Il modello può essere letto automaticamente e le risorse di cui è stato effettuato il provisioning da Azure. In un unico modello, è possibile distribuire più servizi con le relative dipendenze.

Per una macchina virtuale Windows, creare un modello di Resource Manager e aggiungere un elemento resources sotto la Microsoft.Compute/virtualMachine risorsa, come illustrato di seguito:

"resources": [
  {
    "name": "[concat(parameters('vmNamePrefix'),copyIndex(),'/TeamServicesAgent')]",
    "type": "Microsoft.Compute/virtualMachines/extensions",
    "location": "[parameters('location')]",
    "apiVersion": "2015-06-15",
    "dependsOn": [
        "[resourceId('Microsoft.Compute/virtualMachines/',
                      concat(parameters('vmNamePrefix'),copyindex()))]"
    ],
    "properties": {
      "publisher": "Microsoft.VisualStudio.Services",
      "type": "TeamServicesAgent",
      "typeHandlerVersion": "1.0",
      "autoUpgradeMinorVersion": true,
      "settings": {
        "VSTSAccountName": "[parameters('VSTSAccountName')]",
        "TeamProject": "[parameters('TeamProject')]",
        "DeploymentGroup": "[parameters('DeploymentGroup')]",
        "AgentName": "[parameters('AgentName')]",
        "AgentMajorVersion": "auto|2|3",
        "Tags": "[parameters('Tags')]"
      },
      "protectedSettings": {
      "PATToken": "[parameters('PATToken')]"
     }
   }
  }
]

Nota

In Azure DevOps Server 2022 i valori consentiti per AgentMajorVersion sono auto|N. In Azure DevOps Server 2022.1 e versioni successive i valori consentiti per AgentMajorVersion sono auto|2|3.

"resources": [
  {
    "name": "[concat(parameters('vmNamePrefix'),copyIndex(),'/TeamServicesAgent')]",
    "type": "Microsoft.Compute/virtualMachines/extensions",
    "location": "[parameters('location')]",
    "apiVersion": "2015-06-15",
    "dependsOn": [
        "[resourceId('Microsoft.Compute/virtualMachines/',
                      concat(parameters('vmNamePrefix'),copyindex()))]"
    ],
    "properties": {
      "publisher": "Microsoft.VisualStudio.Services",
      "type": "TeamServicesAgent",
      "typeHandlerVersion": "1.0",
      "autoUpgradeMinorVersion": true,
      "settings": {
        "VSTSAccountName": "[parameters('VSTSAccountName')]",
        "TeamProject": "[parameters('TeamProject')]",
        "DeploymentGroup": "[parameters('DeploymentGroup')]",
        "AgentName": "[parameters('AgentName')]",
        "AgentMajorVersion": "auto|N",
        "Tags": "[parameters('Tags')]"
      },
      "protectedSettings": {
      "PATToken": "[parameters('PATToken')]"
     }
   }
  }
]

Dove:

  • VSTSAccountName è obbligatorio. Sottoscrizione di Azure Pipelines da usare. Esempio: se l'URL è https://dev.azure.com/contoso, è sufficiente specificare contoso
  • TeamProject è obbligatorio. Progetto con il gruppo di distribuzione definito al suo interno
  • DeploymentGroup è obbligatorio. Gruppo di distribuzione in cui verrà registrato l'agente di distribuzione
  • AgentName è facoltativo. Se non specificato, verrà usato il nome della macchina virtuale con -DG aggiunta
  • I tag sono facoltativi. Elenco delimitato da virgole di tag che verranno impostati nell'agente. I tag non fanno distinzione tra maiuscole e minuscole e ognuno non deve contenere più di 256 caratteri
  • PATToken è obbligatorio. Token di accesso personale usato per eseguire l'autenticazione in Azure Pipelines per scaricare e configurare l'agente

Nota

Se si esegue la distribuzione in una macchina virtuale Linux, assicurarsi che il type parametro nel codice sia TeamServicesAgentLinux.

Risolvere i problemi relativi all'estensione

Ecco alcuni problemi noti relativi all'estensione:

  • File di stato troppo grande: questo problema si verifica nelle macchine virtuali Windows e non è stato osservato nelle macchine virtuali Linux. Il file di stato contiene un oggetto JSON che descrive lo stato corrente dell'estensione. L'oggetto è un segnaposto per elencare le operazioni eseguite finora. Azure legge questo file di stato e passa l'oggetto stato come risposta alle richieste API. Il file ha una dimensione massima consentita; se le dimensioni superano la soglia, Azure non può leggerlo completamente e restituisce un errore per lo stato. In ogni riavvio del computer alcune operazioni vengono eseguite dall'estensione (anche se potrebbe essere installata correttamente in precedenza), che accodano il file di stato. Se il computer viene riavviato un numero elevato di volte, le dimensioni del file di stato superano la soglia, causando questo errore. Il messaggio di errore legge: Handler Microsoft.VisualStudio.Services.TeamServicesAgent:1.27.0.2 status file 0.status size xxxxxx bytes is too big. Max Limit allowed: 131072 bytes. Si noti che l'installazione dell'estensione potrebbe avere esito positivo, ma questo errore nasconde lo stato effettivo dell'estensione.

    È stato risolto questo problema per i riavvii del computer (versione 1.27.0.2 per l'estensione Windows e 1.21.0.1 per l'estensione Linux in poi), quindi in un riavvio non verrà aggiunto nulla al file di stato. Se si è verificato questo problema con l'estensione prima che sia stata apportata la correzione ( ovvero si è verificato questo problema con le versioni precedenti dell'estensione) e l'estensione è stata aggiunta automaticamente alle versioni con la correzione, il problema continuerà a persistere. Ciò è dovuto al fatto che in caso di aggiornamento dell'estensione, la versione più recente dell'estensione funziona ancora con il file di stato precedente. Attualmente, è comunque possibile riscontrare questo problema se si usa una versione precedente dell'estensione con il flag per disattivare gli aggiornamenti automatici delle versioni secondarie o se un file di stato di grandi dimensioni è stato trasportato da una versione di estensione precedente alle versioni più recenti che contengono la correzione o per qualsiasi altro motivo. In questo caso, è possibile superare questo problema disinstallando e installando nuovamente l'estensione. La disinstallazione dell'estensione pulisce l'intera directory di estensione, quindi verrà creato un nuovo file di stato per l'installazione aggiornata. È necessario installare la versione più recente dell'estensione. Questa soluzione è una correzione permanente e, dopo questa operazione, non è consigliabile affrontare di nuovo il problema.

  • Problema con i dati personalizzati: questo problema non riguarda l'estensione, ma alcuni clienti hanno segnalato confusione riguardo alla posizione dei dati personalizzata nella macchina virtuale in caso di cambio delle versioni del sistema operativo. È consigliabile seguire questa soluzione alternativa. Python 2 è stato deprecato, quindi è stata creata l'estensione per l'uso con Python 3. Se si usano ancora versioni precedenti del sistema operativo che non hanno Python 3 installato per impostazione predefinita, per eseguire l'estensione, è necessario installare Python 3 nella macchina virtuale o passare alle versioni del sistema operativo in cui Python 3 è installato per impostazione predefinita. Nelle macchine virtuali Linux, i dati personalizzati vengono copiati nel file /var/lib/waagent/ovf-env.xml per le versioni precedenti dell'agente Linux di Microsoft Azure e in /var/lib/waagent/CustomData per le versioni più recenti dell'agente Linux di Microsoft Azure. Sembra che i clienti che hanno hardcoded solo uno di questi due percorsi riscontrano problemi durante il cambio di versioni del sistema operativo perché il file non esiste nella nuova versione del sistema operativo, ma l'altro file è presente. Pertanto, per evitare l'interruzione del provisioning della macchina virtuale, è consigliabile prendere in considerazione entrambi i file nel modello in modo che, in caso di errore, l'altro dovrebbe avere esito positivo.

Per altre informazioni sui modelli di Resource Manager, vedere Definire le risorse nei modelli di Azure Resource Manager.

Per usare il modello:

  1. Nella scheda Gruppi di distribuzione di Azure Pipelines scegliere +Nuovo per creare un nuovo gruppo.

  2. Immettere un nome per il gruppo e facoltativamente una descrizione, quindi scegliere Crea.

  3. Nella scheda Versioni di Azure Pipelines creare una pipeline di versione con una fase che contiene l'attività di distribuzione del modello di Resource Manager.

  4. Specificare i parametri necessari per l'attività, ad esempio la sottoscrizione di Azure, il nome del gruppo di risorse, il percorso e le informazioni sul modello, quindi salvare la pipeline di versione.

  5. Creare una versione dalla pipeline di versione per installare gli agenti.

Installare gli agenti usando le opzioni di distribuzione avanzate

  1. Nella scheda Gruppi di distribuzione di Azure Pipelines scegliere +Nuovo per creare un nuovo gruppo.

  2. Immettere un nome per il gruppo e facoltativamente una descrizione, quindi scegliere Crea.

  3. Nella scheda Versioni di Azure Pipelines creare una pipeline di versione con una fase che contiene l'attività di distribuzione del modello di Resource Manager.

  4. Selezionare l'attività ed espandere la sezione Opzioni di distribuzione avanzate per le macchine virtuali. Configurare i parametri in questa sezione come indicato di seguito:

    • Abilita prerequisiti: selezionare Configura con l'agente del gruppo di distribuzione.

    • Endpoint di Azure Pipelines/TFS: selezionare una connessione al servizio tfs/Team Foundation Server esistente che punta alla destinazione. La registrazione dell'agente per i gruppi di distribuzione richiede l'accesso al progetto di Visual Studio. Se non si dispone di una connessione al servizio esistente, scegliere Aggiungi e crearne uno ora. Configurarlo per l'uso di un token di accesso personale con ambito limitato al gruppo di distribuzione.

    • Progetto: specificare il progetto contenente il gruppo di distribuzione.

    • Gruppo di distribuzione: specificare il nome del gruppo di distribuzione in cui verranno registrati gli agenti.

    • Copiare i tag delle macchine virtuali di Azure negli agenti: quando si imposta (selezionata), tutti i tag già configurati nella macchina virtuale di Azure verranno copiati nell'agente del gruppo di distribuzione corrispondente. Per impostazione predefinita, tutti i tag di Azure vengono copiati usando il formato Key: Value. Ad esempio: Role: Web.

  5. Specificare gli altri parametri necessari per l'attività, ad esempio la sottoscrizione di Azure, il nome del gruppo di risorse e il percorso, quindi salvare la pipeline di versione.

  6. Creare una versione dalla pipeline di versione per installare gli agenti.

Assistenza e supporto