Installare e configurare la ricerca

Azure DevOps Server 2022 - Azure DevOps Server 2019

Questo articolo illustra come installare, configurare e disinstallare un motore di ricerca sicuro per Azure DevOps Server in esecuzione nel proprio hardware. Per altre informazioni, vedere gli articoli seguenti:

Prerequisiti

  • Per installare l'estensione Di ricerca, è necessario essere una raccolta di progetti Amministrazione istrator (PCA) per l'organizzazione. Gli utenti non amministrativi possono anche richiedere l'aggiunta dell'estensione al PCA.
  • Per altre informazioni, vedere Installare e configurare Azure DevOps Server e requisiti e compatibilità.

Suggerimenti hardware

La ricerca funziona in qualsiasi server fisico o macchina virtuale che esegue Azure DevOps Server. È possibile configurarlo nello stesso server o in uno diverso per La ricerca. Se si usa lo stesso server, prendere in considerazione l'utilizzo della CPU.

Suggerimento

È consigliabile configurare La ricerca in un server separato per gli ambienti di produzione.

Per prestazioni accettabili in scenari multiutente, considerare le raccomandazioni seguenti:

  • Meno di 250 utenti con ricerca nel server (in genere usato per scopi dimostrativi e di valutazione):
    • Processore quad core, 16 GB (minimo) RAM
    • Fattore di utilizzo CPU inferiore al 50%
    • Disco rigido veloce supportato dall'archiviazione SSD (Solid State Drive)
  • Meno di 500 utenti con La ricerca si trova in un server separato:
    • Processore dual core, 8 GB (minimo) RAM
    • Disco rigido veloce supportato dall'archiviazione SSD (Solid State Drive)
  • Meno di 1.000 utenti con La ricerca si trova in un server separato:
    • Processore quad core, 16 GB (minimo) RAM
    • Disco rigido veloce supportato dall'archiviazione SSD (Solid State Drive)
  • Più di 1.000 utenti con La ricerca si trova in un server separato:
    • Processore quad core, 16 GB (minimo) RAM
    • Disco rigido veloce supportato da unità SSD (Solid State Drive) o archiviazione SAN (Area Network) Archiviazione
  • Azure DevOps Server con più livelli di applicazione :Azure DevOps Server with Multiple application tiers (ATS):
  • Utilizzo della CPU di Azure DevOps Server superiore al 50% prima dell'installazione della ricerca:

Requisito di spazio su disco:

La quantità di spazio su disco usata da Ricerca dipende principalmente dal tipo e dalle dimensioni dei file indicizzati. Per la ricerca di codice, poiché molte volte i repository possono essere di grandi dimensioni e hanno file di codice diversi nel controllo della versione, il requisito di spazio su disco potrebbe essere significativo. Allocare fino al 150% delle dimensioni di tutti i repository da indicizzare. Da TFS 2018 Update 3 e versioni successive, gli utenti possono escludere le cartelle dai repository per l'indice per ottimizzare lo spazio su disco utilizzato dalla ricerca.

Dipendenze software

La ricerca presenta le dipendenze seguenti, che vengono installate automaticamente come parte della configurazione:

  • Elasticsearch by Elasticsearch .
    • La ricerca usa una versione modificata di Elasticsearch. Funziona solo con questa versione modificata.
    • Una versione più recente di Elasticsearch viene fornita con TFS 2018 Update 2 e versioni successive e Azure DevOps Server. Tutto il contenuto viene reindicizzare dopo l'installazione quando si esegue l'aggiornamento da una versione precedente dei risultati della ricerca. A seconda del volume di contenuto (file di codice, elementi di lavoro e pagine wiki), il reindicizzazione può richiedere del tempo.
  • Client Elasticsearch NEST.
  • Microsoft Build di OpenJDK versione 11.
    • Microsoft Build of OpenJDK non installa automaticamente gli aggiornamenti.
  • Markdowndeep di Topten Software.
  • Piattaforma del compilatore Roslyn .
  • Parser di riconoscimento della lingua ANTLR .

Nota

  • L'amministratore del sistema o del server deve assicurarsi che Il server JRE venga mantenuto e aggiornato in linea con le raccomandazioni del provider di software. Vedere anche le note sull'installazione di Java che seguono.
  • Controllare regolarmente la disponibilità di aggiornamenti.

Note sull'installazione di Java

  • Se la configurazione guidata ricerca non rileva un'installazione funzionante di java Runtime Environment (JRE), offre un'opzione per scaricare e installare la versione supportata più recente. Per il download è necessaria la connettività Internet. Se il server di destinazione non dispone di connettività Internet, è necessario scaricare e installare manualmente un JRE prima di tentare di installare La ricerca.

  • Versioni di Ricerca prima di Azure DevOps Server usavano Oracle Server Java Runtime Environment. In Azure DevOps Server, il JRE predefinito è Azul Zulu OpenJDK.

  • Durante l'installazione, la procedura guidata imposta la variabile di ambiente JAVA_HOME in modo che punti alla cartella di installazione di JRE. La configurazione guidata potrebbe non rilevare un'installazione JRE esistente se non è stata configurata correttamente o se l'impostazione JAVA_HOME punta a una versione precedente rispetto a quella richiesta dalla ricerca.

    Nota

    Non è consigliabile installare Elasticsearch in un computer in cui vengono condivise le risorse, in particolare in un ambiente aziendale di grandi dimensioni con più livelli di applicazione. È consigliabile configurare Elasticsearch in un computer dedicato separato. In questo modo, l'ambiente JAVA non viene condiviso tra computer per altri scopi.

  • Se è presente una versione di JRE precedente al valore minimo richiesto da Search e la variabile JAVA_HOME è stata impostata su tale versione, è consigliabile installare Search in un server separato.

  • Se è presente una versione di Server JRE uguale o successiva al valore minimo richiesto da Ricerca e non riconosciuto dalla configurazione guidata, verificare che JAVA_HOME variabile NON sia impostata. Eseguire quindi di nuovo la configurazione guidata (& "C:\Program Files\Azure DevOps Server XXX\Search\ES\vX.XX\bin\elasticsearch-service.bat" manager) e selezionare la versione impostando il percorso per la macchina virtuale Java.

  • Se non è possibile installare la versione di Java richiesta da Ricerca a causa di altre dipendenze, è possibile eseguire le attività seguenti:

    • Installare Azure DevOps Server con l'estensione Di ricerca in un server in cui Java non è installato. Questa azione non è consigliata per più di 250 utenti o l'utilizzo della CPU maggiore del 50% o di più ATS.
    • Installare Search e JRE in un server separato da Azure DevOps Server.

    Nota

    Se si usa Oracle Server JRE 8, ovvero l'impostazione predefinita per La ricerca in TFS (Azure DevOps Server non usa Oracle Server JRE 8), tenere presente le informazioni seguenti:

    • La ricerca non usa o supporta alcuna delle funzionalità commerciali di Server JRE 8. Pertanto, durante la configurazione della ricerca, le funzionalità commerciali di Server JRE non sono attivate né sbloccate.
    • Se si sceglie di continuare con Oracle JRE, contattare Oracle per una sottoscrizione java edizione Standard, in modo che sia possibile continuare a ricevere gli aggiornamenti JRE.

Eseguire la migrazione a Microsoft Build di OpenJDK da Oracle Server JRE

La ricerca in Azure DevOps Server supporta entrambe le funzionalità, Microsoft Build of OpenJDK e Oracle JRE, che consentono di scegliere tra di esse in base alle esigenze.

Per passare a Microsoft Build of OpenJDK, assicurarsi che JAVA_HOME variabile NON sia impostata. Eseguire quindi di nuovo la configurazione guidata (& "C:\Program Files\Azure DevOps Server XXX\Search\ES\vX.XX\bin\elasticsearch-service.bat" manager) e selezionare la versione impostando il percorso per la macchina virtuale Java.

Disponibilità di funzionalità

  • La ricerca degli elementi di lavoro è disponibile in Team Foundation Server (TFS) 2018 e versioni successive.
  • La ricerca wiki è disponibile in TFS 2018 Update 2 e versioni successive.
  • L'elemento di lavoro e la ricerca wiki sono estensioni predefinite installate per impostazione predefinita durante la configurazione della ricerca.
  • Ricerca codice è disponibile in TFS 2018 e versioni successive ed è una funzionalità di consenso esplicito. È possibile installare Ricerca codice in un secondo momento dalla raccolta locale. Passare a Raccolta locale (http://{server}/_gallery) come amministratore. Gli utenti non amministratori possono anche richiedere l'estensione per Azure DevOps Server. Per altre informazioni, vedere Installare un'estensione.

Configurare il servizio di ricerca usando le pagine dedicate nella Configurazione guidata server durante l'installazione di Azure DevOps Server. È anche possibile annullare la configurazione della ricerca in un secondo momento eseguendo di nuovo la Configurazione guidata server o avviando la Configurazione guidata ricerca.

Considerazioni sulla configurazione

Quando si configura La ricerca, prendere in considerazione le informazioni seguenti:

  • Sia l'elemento di lavoro che la ricerca wiki vengono abilitati per impostazione predefinita quando la ricerca è configurata. Queste estensioni possono essere rimosse in un secondo momento, se necessario, dalla pagina Gestisci estensioni di Azure DevOps Server.
  • L'estensione Ricerca codice deve essere installata per ogni raccolta di Azure DevOps Server in cui si vuole usarla. Quando si configura inizialmente Ricerca, è possibile impostare una casella di controllo su Installa automaticamente l'estensione Ricerca codice per raccolte di progetti nuove e esistenti per automatizzare questo processo.
  • Se non si imposta la casella di controllo per installare l'estensione Ricerca codice per tutte le raccolte di progetti, il PCA può installarlo dalla raccolta locale. Assicurarsi di passare alla raccolta locale (http://{Server}/_gallery) dalla pagina del portale di Azure DevOps Server. Per altre informazioni, vedere Installare un'estensione.
  • L'indicizzazione di una raccolta richiede in genere meno di un'ora. Tuttavia, potrebbero essere necessarie fino a 12 ore in base alle dimensioni e al numero di file di codice, elementi di lavoro o pagine wiki. Se non si ottengono risultati dopo questo periodo, controllare lo stato di indicizzazione.

Usare un secondo disco rigido e un server remoto

  • Per ottenere prestazioni ottimali, la cartella dell'indice di ricerca deve trovarsi in un disco rigido rapido separato e supportato da un'archiviazione veloce, ad esempio un'unità SSD (Solid State Drive) o una rete SAN (Area Network) Archiviazione. Allocare fino al 150% delle dimensioni di tutti i repository da indicizzare, ovvero lo scenario peggiore. Lo spazio utilizzato effettivo dipende dalla quantità e dal tipo di file di codice e dal numero di elementi di lavoro e pagine wiki in tale raccolta.
    • Se non specificato, il servizio di indicizzazione e il motore Elasticsearch usano l'account del servizio di rete durante l'installazione per creare e accedere ai file di indice. Se si sceglie un account diverso, deve disporre dell'autorizzazione Accesso come servizio .
    • Limitare le autorizzazioni per il disco di indice e la cartella per proteggere l'indice da modifiche o eliminazioni accidentali o dannose. Configurare le impostazioni di sicurezza appropriate per il servizio.
  • Quando si configura La ricerca di un server con più punti di accesso, installare in un server separato. Dopo aver installato Search nel server remoto, usare la Configurazione guidata in uno dei server AT per collegare l'istanza di Ricerca remota all'istanza di Azure DevOps Server. Quando si annulla la configurazione di Ricerca, è necessario usare la Configurazione guidata nello stesso server AT in cui è stata eseguita originariamente la configurazione.

Aggiornare il server

  • Se si esegue un aggiornamento di pre-produzione in un server in cui La ricerca è già stata configurata, è necessario riconfigurare di nuovo La ricerca per evitare di danneggiare l'istanza di produzione. Non esiste un'opzione per configurare La ricerca come parte di un aggiornamento di preproduzione. Configurarlo invece al termine dell'aggiornamento della preproduzione. È possibile deselezionare Installa automaticamente e configura Ricerca codice per tutte le raccolte nuove e esistenti durante la configurazione. Installare invece l'estensione Di ricerca per una o due raccolte al termine della configurazione
  • Se si esegue un aggiornamento di produzione in un server in cui è configurata la ricerca e si vuole mantenerlo, selezionare la casella accanto a Installa e configura ricerca. La procedura guidata rileva l'istanza di Ricerca esistente e seleziona automaticamente Usa istanza di ricerca esistente e prepopola l'URL servizio di ricerca corrente. Usare l'opzione Installa una nuova istanza di Ricerca solo se si vuole configurare una nuova istanza di Search nello stesso server. La configurazione di una nuova istanza determina l'indicizzazione di tutto il codice, degli elementi di lavoro e del wiki, che, a seconda delle dimensioni delle raccolte, può richiedere del tempo. Durante l'indicizzazione, gli utenti potrebbero visualizzare risultati parziali della ricerca
  • Se si aggiorna il server a un nuovo hardware, sono disponibili le due opzioni seguenti. Selezionare una delle opzioni seguenti, a seconda di come è stata configurata in precedenza la ricerca:
    • Se Search si trova in un server separato da Azure DevOps Server, è necessario selezionare Installa e configura ricerca nella Configurazione guidata server e quindi selezionare Usa un'istanza di ricerca esistente e specificare l'URL dell'istanza di ricerca esistente per completare la configurazione di ricerca
    • Se Search è configurato insieme all'istanza di Azure DevOps Server nel server precedente, è necessario selezionare Installa e configura ricerca nella Configurazione guidata server. Selezionare quindi di nuovo Installa una nuova istanza di ricerca nel nuovo server se si vuole continuare a eseguire la ricerca cohost e Azure DevOps Server. Tutti gli indici di ricerca per tutte le raccolte vengono ricreati che, a seconda delle dimensioni di ogni raccolta, potrebbero richiedere del tempo
  • Se si scollega una raccolta da un'istanza di Azure DevOps Server per collegarla a un'altra istanza, seguire questa procedura:
    1. Scollegare la raccolta dall'istanza di Azure DevOps Server di origine
    2. Configurare La ricerca nell'istanza di Azure DevOps Server di destinazione (se non è già stata eseguita)
    3. Collegare la raccolta al server Azure DevOps di destinazione
    4. Disinstallare le estensioni di ricerca, ad esempio Codice, Elemento di lavoro o Wiki per la raccolta dalla raccolta locale all'interno del server Azure DevOps
    5. Installare l'estensione Di ricerca, per la raccolta dalla raccolta locale, passando ad essa dall'istanza di Azure DevOps Server di destinazione

Installare o aggiornare la ricerca in un server separato

Per installare o aggiornare La ricerca in un server separato o remoto, in genere quando sono presenti più di 250 utenti, seguire questa procedura:

  1. Quando si installa Azure DevOps Server nel server primario, impostare la casella di controllo Installa e configura ricerca . nella pagina Ricerca della Configurazione guidata server.
  2. Selezionare l'opzione Usa un servizio di ricerca esistente.
  3. Usare il collegamento servizio di ricerca pacchetto fornito nella procedura guidata per accedere a un set di file del programma di installazione di ricerca nel computer locale. Copiare quindi questi file nel server remoto.
  4. Seguire le istruzioni nel file Readme.txt, che si trova nel set di file del programma di installazione, per installare o aggiornare il servizio di ricerca nel server remoto.
  5. Al termine dell'installazione, copiare l'URL del server di ricerca risultante nel campo URL di ricerca della configurazione guidata eseguita nell'istanza di Azure DevOps Server.
  6. Al termine di entrambe le installazioni, configurare le impostazioni di sicurezza appropriate per entrambi i server.

Il servizio di ricerca usa una versione modificata di Elasticsearch. I termini "Search" e "Elasticsearch" vengono usati in modo intercambiabile per il resto di questa sezione. Amministrazione istrator deve fornire le credenziali se il servizio di ricerca si trova nello stesso computer di Azure DevOps Server o in un computer separato. Questa azione fa parte della configurazione della funzionalità di ricerca tramite il server o la configurazione guidata ricerca. Queste credenziali sono nuove e non sono correlate ad alcun account o credenziali del server preesistenti. Vengono usati per configurare e connettersi a servizio di ricerca. Questi nuovi set di credenziali abilitano l'autenticazione di base nel servizio di ricerca.

Screenshot che mostra le credenziali di ricerca.

Per un aggiornamento da TFS 2018 Update 1.1 a TFS 2018 Update 3 o per la riconfigurazione della ricerca, solo le informazioni utente popolano automaticamente e gli amministratori devono fornire le credenziali della password. Amministrazione istrator può fornire un nome utente e una password diversi, se lo desiderano. Se il servizio di ricerca si trova nello stesso computer di Azure DevOps Server, gli amministratori possono fornire un nuovo set di credenziali nella Configurazione guidata per configurare il servizio di ricerca, se necessario. Tuttavia, se il servizio di ricerca si trova in un computer remoto, gli amministratori devono prima fornire le nuove credenziali allo script di installazione servizio di ricerca.

Nota

  • I valori di nome utente e password devono avere una lunghezza compresa tra 8 e 64 caratteri. Anche se la password può essere assegnata a qualsiasi valore, il nome utente può contenere solo caratteri alfanumerici e di sottolineatura.
  • Le credenziali di ricerca autenticano solo gli utenti e assicurarsi che gli utenti non autenticati non possano accedere all'endpoint Elasticsearch. Elasticsearch, tuttavia, non supporta HTTPS e quindi queste credenziali vengono inviate in rete come stringhe con codifica Base64. Se è possibile richiedere l'accesso intermedio, configurare le impostazioni di sicurezza appropriate in base ai requisiti di sicurezza e conformità aziendali.
  • Mirare a limitare l'accesso sia alla ricerca che all'indicizzazione a utenti o gruppi di utenti specifici usando la crittografia tramite IPSec, come descritto di seguito.

Considerare le tecniche seguenti per l'uso di IPSec per proteggere Elasticsearch in un server Windows:

  • Configurare la sicurezza solo con l'autenticazione:

  • Configurare la sicurezza con autenticazione, protezione dell'integrità e crittografia:

    • Garantisce l'applicazione della crittografia e della protezione dell'integrità insieme all'autenticazione. Richiede sia regole lato client che lato servizio (regole del firewall nel server che esegue Elasticsearch e tutti i server di livello app di Azure DevOps Server)
    • Prerequisito: Azure DevOps Server deve essere configurato con un account di dominio
    • Seguire la procedura descritta in Isolamento di un server richiedendo la crittografia e l'appartenenza a gruppi
  • TFS 2018 Update 2: include i componenti di ricerca aggiornati e la ricerca wiki.

    • Se il servizio di ricerca è stato configurato durante l'aggiornamento 2018 RTM e configurato nel sistema TFS che si sta aggiornando, i relativi componenti vengono aggiornati automaticamente.
    • Se La ricerca è stata configurata in un server remoto, vedere Installare o aggiornare la ricerca in un server separato per aggiornarla.

    In entrambi i casi, tutto il contenuto esistente (file di codice e elementi di lavoro) viene reindicizzare automaticamente per supportare i componenti aggiornati dopo la configurazione. A seconda del volume di contenuto, l'aggiornamento potrebbe richiedere del tempo.

  • TFS 2018 Update 1.1 e TFS 2018 Update 3: include l'autenticazione di base per la comunicazione tra TFS e servizio di ricerca per renderla più sicura. Qualsiasi installazione o aggiornamento a TFS 2018 Update 1.1 o TFS 2018 Update 3, deve fornire le credenziali come parte della configurazione della funzionalità di ricerca, tramite Server o la configurazione guidata ricerca.

  • TFS 2018 Update 2 (o versione successiva) alla versione di Azure DevOps Server 2019 Update 1: quando la ricerca è configurata in un server separato, richiedere una reinstallazione della ricerca. Mentre si seguono le istruzioni per un aggiornamento, nel passaggio 4 invece di aggiornare Configure-TFSSearch.ps1 – Operation updateeseguire il comando seguente per reinstallare la ricerca.

Configure-TFSSearch.ps1 -Operation remove
Configure-TFSSearch.ps1 -Operation install -TFSSearchInstallPath <install location> -TFSSearchIndexPath $env:SEARCH_ES_INDEX_PATH

Per un aggiornamento di preproduzione, un aggiornamento di produzione, una nuova migrazione hardware, la clonazione o un'altra operazione di manutenzione, la Configurazione guidata server non configura la ricerca. Tuttavia, è facile riconfigurare dopo il completamento dell'operazione di manutenzione del server.

In alcuni casi non si vuole più usare La ricerca o si vuole eseguire un'installazione nuova e pulita. Questa operazione richiede più passaggi, a seconda che La ricerca sia configurata nello stesso server di Azure DevOps Server o in un server separato.

Annullare la configurazione della ricerca nel computer configurato come azure DevOps Server

  1. Disinstallare l'estensione Cerca per ogni raccolta. Passare alla pagina Gestisci estensioni di ogni raccolta nell'istanza di Azure DevOps Server:

    Screenshot del controllo dell'installazione dell'estensione.

  2. Rimuovere la funzionalità di ricerca:

    1. Aprire la console di Amministrazione istration di Azure DevOps Server.
    2. Selezionare il nome del server.
    3. Scegliere Rimuovi funzionalità.
    4. Selezionare servizio di ricerca e quindi scegliere Rimuovi.
  3. Rimuovere il servizio Elasticsearch:

    1. Aprire il prompt dei comandi come amministratore.
    2. Modificare la directory . cd "C:\Program Files\Microsoft Team Foundation Server 15.0\Search\ES\elasticsearch-5.4.1\bin"
    3. Rimuovere il servizio, "elasticsearch-service.bat remove".
  4. Rimuovere i dati di ricerca:

    • Eliminare il contenuto del percorso descritto dalla variabile di ambiente , SEARCH_ES_INDEX_PATH.
  5. Eliminare la variabile di ambiente , "SEARCH_ES_INDEX_PATH".

Annullare la configurazione della ricerca in un server separato

Seguire questa procedura per annullare la configurazione di Ricerca, ad esempio per Codice, Elemento di lavoro o Wiki, per ogni raccolta.

  1. Passare alla pagina Gestisci estensioni per ogni raccolta nell'istanza di Azure DevOps Server.

    Screenshot Controllo dell'installazione dell'estensione.

  2. Rimuovere la funzionalità di ricerca:

    1. Aprire la finestra di dialogo Rimuovi funzionalità Amministrazione console di ripartizione.
    2. Nel riquadro sinistro selezionare il nome del server Azure DevOps.
    3. Nel riquadro destro scegliere Rimuovi funzionalità.
    4. Nella finestra di dialogo Rimuovi funzionalità selezionare servizio di ricerca e quindi scegliere Rimuovi.
  3. Rimuovere il servizio Elasticsearch e i dati.

    1. Aprire PowerShell come amministratore.
    2. Aprire la cartella Configura Search.ps1 , insieme al resto dei file necessari per un'installazione remota di Search.
    3. Eseguire di nuovo lo script con l'opzione remove: "ConfigureTFSSearch.ps1 -remove".

La ricerca di Azure DevOps Server presenta la limitazione seguente:

  • Reindicizzare tutte le raccolte se si esegue un'operazione di ripristino di emergenza e si sposta nuovamente il server in uno snapshot precedente del database SQL.
  • La ricerca non è estendibile, ma è possibile inviare una nuova richiesta di funzionalità nella community degli sviluppatori.