Partager via


Installer et configurer la recherche

Azure DevOps Server 2022 - Azure DevOps Server 2019

Dans cet article, découvrez comment installer, configureret désinstaller un moteur de recherche sécurisé pour Azure DevOps Server qui s’exécute sur votre propre matériel. Pour plus d’informations, consultez les articles suivants :

Conditions préalables

Recommandations matérielles

La recherche fonctionne sur n’importe quel serveur physique ou machine virtuelle qui exécute Azure DevOps Server. Vous pouvez le configurer sur le même serveur ou un autre serveur pour la recherche. Si vous utilisez le même serveur, tenez compte de l’utilisation du processeur.

Conseil

Nous vous recommandons de configurer La recherche sur un serveur distinct pour les environnements de production.

Pour obtenir des performances acceptables dans les scénarios multi-utilisateurs, tenez compte des recommandations suivantes :

  • Moins de 250 utilisateurs disposant d’une recherche située sur le serveur (généralement utilisé à des fins de démonstration et d’essai) :
    • Processeur à quatre cœurs, 16 Go (minimum) de RAM
    • Facteur d’utilisation du processeur inférieur à 50%
    • Disque dur rapide soutenu par le stockage SSD (Solid State Drive)
  • Moins de 500 utilisateurs disposant d’une recherche située sur un serveur distinct :
    • Processeur double cœur, 8 Go (minimum) DE RAM
    • Disque dur rapide soutenu par le stockage SSD (Solid State Drive)
  • Moins de 1 000 utilisateurs disposant d’une recherche située sur un serveur distinct :
    • Processeur à quatre cœurs, 16 Go (minimum) de RAM
    • Disque dur rapide soutenu par le stockage SSD (Solid State Drive)
  • Plus de 1 000 utilisateurs disposant d’une recherche située sur un serveur distinct :
    • Processeur à quatre cœurs, 16 Go (minimum) de RAM
    • Disque dur rapide soutenu par un disque SSD (Solid State Drive) ou un stockage SAN (Storage Area Network)
  • Azure DevOps Server avec plusieurs niveaux d’application (AT) :
    • Installer la recherche sur un serveur distinct
  • Utilisation du processeur Azure DevOps Server supérieure à 50% avant l’installation de la recherche :
    • Installer la recherche sur un serveur distinct

Exigence d'espace disque:

La quantité d’espace disque utilisé par la recherche dépend principalement du type et de la taille des fichiers indexés. Pour la recherche de code, étant donné que de nombreuses fois les référentiels peuvent être volumineux et avoir différents fichiers de code dans le contrôle de version, l’espace disque requis peut être significatif. Allouez jusqu’à 150% de la taille totale de tous les référentiels à indexer. À partir de TFS 2018 Update 3 et versions ultérieures, les utilisateurs peuvent exclure les dossiers de leurs référentiels pour l’index afin d’optimiser l’espace disque consommé par la recherche.

Dépendances logicielles

La recherche a les dépendances suivantes, qui sont installées automatiquement dans le cadre de la configuration :

  • Elasticsearch par Elasticsearch.
    • La recherche utilise une version modifiée d’Elasticsearch. Elle fonctionne uniquement avec cette version modifiée.
    • Une version plus récente d’Elasticsearch est fournie avec TFS 2018 Update 2 et versions ultérieures et Azure DevOps Server. Tout le contenu est réindexé après l’installation lorsque vous effectuez une mise à niveau à partir d’une version antérieure des résultats de la recherche. Selon le volume de contenu (fichiers de code, éléments de travail et pages wiki), la réindexation peut prendre un certain temps.
  • Client NEST Elasticsearch.
  • Microsoft Build of OpenJDK Version 11.
    • La build Microsoft d’OpenJDK n’installe pas automatiquement les mises à jour.
  • Markdowndeep par Topten Software.
  • Roslyn plateforme de compilateur.
  • ANTLR analyseur de reconnaissance de langage.

Remarque

  • L’administrateur système ou serveur doit s’assurer que le serveur JRE est géré et mis à jour conformément aux recommandations du fournisseur de logiciels. Consultez également les notes d’installation de Java suivantes .
  • Vérifiez régulièrement les mises à jour.

Notes d’installation de Java

  • Si l’Assistant Configuration de recherche ne détecte pas d’installation opérationnelle d’un environnement Java Runtime (JRE), il offre une option permettant de télécharger et d’installer la dernière version prise en charge. La connectivité Internet est requise pour le téléchargement. Si le serveur cible n’a pas de connectivité Internet, vous devez télécharger et installer manuellement un serveur JRE avant de tenter d’installer La recherche.

  • Les versions de la recherche précédant Azure DevOps Server utilisaient l'environnement d'exécution Java Oracle Server. Dans Azure DevOps Server, le JRE par défaut est Azul Zulu OpenJDK.

  • Pendant l’installation, l’Assistant définit la variable d’environnement JAVA_HOME pour qu’elle pointe vers le dossier d’installation JRE. L’Assistant Configuration peut ne pas détecter une installation JRE existante si elle n’a pas été correctement configurée, ou si le paramètre JAVA_HOME pointe vers une version antérieure requise par Search.

    Remarque

    Nous vous déconseillons d’installer Elasticsearch sur un ordinateur où les ressources sont partagées, en particulier sur un environnement d’entreprise volumineux avec plusieurs niveaux d’application. Nous vous recommandons de configurer Elasticsearch sur un ordinateur dédié distinct. De cette façon, l’environnement JAVA n’est pas partagé entre les machines à d’autres fins.

  • S’il existe une version d’un JRE antérieure à la version minimale requise par Search, et que la variable JAVA_HOME a été définie sur cette version, nous recommandons d’installer Search sur un serveur séparé.

  • S'il existe une version du serveur JRE égale ou ultérieure à celle requise par la Recherche et non reconnue par l'Assistant configuration, vérifiez que la variable JAVA_HOME ne soit pas définie. Ensuite, relancez l’assistant de configuration (& "C:\Program Files\Azure DevOps Server XXX\Search\ES\vX.XX\bin\elasticsearch-service.bat" manager) et sélectionnez la version en définissant le chemin pour la Machine Virtuelle Java.

  • Si vous ne pouvez pas installer la version de Java requise par la recherche en raison d’autres dépendances, vous pouvez effectuer les tâches suivantes :

    • Installez Azure DevOps Server avec l’extension De recherche sur un serveur sur lequel Java n’est pas installé. Nous vous déconseillons cette action pour plus de 250 utilisateurs ou utilisation du processeur supérieure à 50% ou plusieurs AT.
    • Installez Search et le JRE sur un serveur séparé par rapport à Azure DevOps Server.

    Remarque

    Si vous utilisez Oracle Server JRE 8, qui était la valeur par défaut pour la recherche dans TFS (Azure DevOps Server n’utilise pas Oracle Server JRE 8), tenez compte des informations suivantes :

    • La recherche n’utilise ni ne prend en charge aucune des fonctionnalités commerciales du serveur JRE 8. Par conséquent, pendant la configuration de la recherche, les fonctionnalités commerciales du serveur JRE ne sont ni activées ni déverrouillées.
    • Si vous choisissez de continuer avec Oracle JRE, contactez Oracle pour un abonnement Java SE , afin de pouvoir continuer à recevoir des mises à jour JRE.

Migrer vers Microsoft Build of OpenJDK à partir d’Oracle Server JRE

La recherche dans Azure DevOps Server prend en charge les deux, microsoft Build of OpenJDK et Oracle JRE, qui vous permettent de choisir entre eux en fonction de vos besoins.

Pour passer à la build Microsoft d’OpenJDK, vérifiez que JAVA_HOME variable n’est pas définie. Ensuite, relancez l’assistant de configuration (& "C:\Program Files\Azure DevOps Server XXX\Search\ES\vX.XX\bin\elasticsearch-service.bat" manager) et sélectionnez la version en définissant le chemin pour la Machine Virtuelle Java.

Disponibilité des fonctionnalités

  • La recherche d’éléments de travail est disponible dans Team Foundation Server (TFS) 2018 et versions ultérieures.
  • La recherche wiki est disponible dans TFS 2018 Update 2 et versions ultérieures.
  • L’élément de travail et la recherche Wiki sont des extensions intégrées installées par défaut pendant la configuration de recherche.
  • La recherche de code est disponible dans TFS 2018 et versions ultérieures, et est une fonctionnalité d’adhésion. Vous pouvez installer la recherche de code ultérieurement à partir de la galerie locale. Accédez à galerie locale (http://{server}/_gallery) en tant qu’administrateur. Les utilisateurs non administratifs peuvent également demander l’extension pour Azure DevOps Server. Pour plus d’informations, consultez Installer une extension.

Configurez le service de recherche à l’aide des pages dédiées de l’Assistant Configuration du serveur lors de l’installation d’Azure DevOps Server. Vous pouvez également désactiver la configuration de la recherche par la suite en exécutant à nouveau l'Assistant de Configuration du serveur ou en lançant l'Assistant de Configuration de recherche.

Considérations relatives à la configuration

Tenez compte des informations suivantes lorsque vous configurez La recherche :

  • L’élément de travail et la recherche Wiki sont activés par défaut lorsque la recherche est configurée. Ces extensions peuvent être supprimées ultérieurement si nécessaire à partir de la page Gérer les extensions d’Azure DevOps Server.
  • L’extension Recherche de code doit être installée pour chaque collection Azure DevOps Server dans laquelle vous souhaitez l’utiliser. Lorsque vous configurez initialement Search, vous pouvez paramétrer une checkbox pour Installer automatiquement l’extension Code Search pour les collections de projets existantes et nouvelles pour automatiser ce processus.
  • Si vous ne définissez pas la case à cocher pour installer l’extension Recherche de code pour toutes vos collections de projets, votre PCA peut l’installer à partir de la galerie locale. Veillez à accéder à la galerie locale (http://{Server}/_gallery) à partir de votre page du portail Azure DevOps Server. Pour plus d’informations, consultez Installer une extension.
  • La recherche prend généralement moins d’une heure pour indexer une collection. Toutefois, il peut prendre jusqu’à 12 heures en fonction de la taille et du nombre de fichiers de code, d’éléments de travail ou de pages wiki. Si vous n’obtenez aucun résultat après cette période, vérifiez l’état d’indexation.

Utiliser un deuxième disque dur et un serveur distant

  • Pour obtenir des performances maximales, le dossier d’index de recherche doit se trouver sur un disque dur rapide distinct et soutenu par un stockage rapide, tel qu’un disque SSD (SSD) ou un réseau SAN (Storage Area Network). Allouez jusqu’à 150% de la taille de tous les référentiels à indexer, ce qui représente le pire des scénarios. L’espace consommé réel dépend de la quantité et du type de fichiers de code, ainsi que du nombre d’éléments de travail et de pages wiki de cette collection.
    • Sauf indication contraire, le service d’indexation et le moteur Elasticsearch utilisent le compte de service réseau pendant l’installation pour créer et accéder aux fichiers d’index. Si vous choisissez un autre compte, il doit avoir la permission Se connecter en tant que service (Log on as a service).
    • Limitez les autorisations pour le disque d’index et le dossier afin de protéger l’index contre toute modification ou suppression accidentelle ou malveillante. Configurez les paramètres de sécurité appropriés pour le service.
  • Lorsque vous configurez Search pour un serveur avec plusieurs ATs, installez-le sur un serveur séparé. Après avoir installé La recherche sur le serveur distant, utilisez l’Assistant Configuration sur l’un des serveurs AT pour lier l’instance de recherche distante à votre instance Azure DevOps Server. Lorsque vous annulez la recherche, vous devez utiliser l’Assistant Configuration sur le même serveur AT où la configuration a été effectuée à l’origine.

Mettre à niveau votre serveur

  • Si vous effectuez une mise à niveau en pré-production sur un serveur où Search a déjà été configuré, vous devez reconfigurer entièrement Search à nouveau pour éviter de corrompre votre instance de production. Il n’existe aucune option permettant de configurer La recherche dans le cadre d’une mise à niveau de préproduction. Au lieu de cela, configurez-le une fois la mise à niveau de préproduction terminée. Vous pouvez décocher Installer et configurer automatiquement Code Search pour toutes les collections existantes et les nouvelles collections lors de la configuration. Au lieu de cela, installez l’extension De recherche pour une ou deux de vos collections une fois la configuration terminée
  • Si vous effectuez une mise à niveau de production sur un serveur sur lequel la recherche est configurée et que vous souhaitez la conserver, cochez la case en regard de Installer et configurer la recherche. L’assistant détecte votre instance Search existante et sélectionne automatiquement Utiliser l’instance Search existante, et pré-remplit l’URL de votre service Search actuel. Utilisez la Installer une nouvelle instance de recherche option uniquement si vous souhaitez configurer une nouvelle instance de recherche sur le même serveur. La configuration d’une nouvelle instance entraîne l’indexation de tous vos codes, éléments de travail et wiki, qui, selon la taille des collections, peut prendre un certain temps. Pendant l’indexation, les utilisateurs peuvent voir des résultats de recherche partiels
  • Si vous mettez à niveau votre serveur pour un nouveau matériel, les deux options suivantes se présentent à vous. Sélectionnez parmi ces options, en fonction de la configuration précédente de la recherche :
    • Si la recherche se trouve sur un serveur distinct d’Azure DevOps Server, vous devez sélectionner Installer et configurer la recherche dans l’Assistant Configuration du serveur, puis sélectionner Utiliser une instance de recherche existante et fournir l’URL de votre instance de recherche existante pour terminer la configuration de recherche
    • Si la recherche est configurée en même temps que votre instance Azure DevOps Server sur l’ancien serveur, vous devez sélectionner Installer et configurer la recherche dans l’Assistant Configuration du serveur. Sélectionnez ensuite installer une nouvelle instance de recherche sur le nouveau serveur si vous souhaitez continuer à cohéberger la recherche et le serveur Azure DevOps. Tous les index de recherche pour toutes les collections sont recréés, ce qui, selon la taille de chaque collection, peut prendre un certain temps.
  • Si vous détachez une collection d’une instance Azure DevOps Server pour l’attacher à une autre instance, effectuez les étapes suivantes :
    1. Détacher la collection de l’instance source Azure DevOps Server
    2. Configurer la recherche sur l’instance cible d’Azure DevOps Server (si elle n’est pas encore terminée déjà)
    3. Attacher la collection au serveur Azure DevOps cible
    4. Désinstallez vos extensions Search, telles que Code, Work item ou Wiki pour la collection depuis la Galerie locale au sein de votre Azure DevOps Server
    5. Installez l’extension Search, pour la collection depuis la Galerie locale, en la parcourant depuis votre instance Azure DevOps Server cible

Installer ou mettre à jour la recherche sur un serveur distinct

Pour installer ou mettre à jour La recherche sur un serveur distinct ou distant, généralement lorsqu’il y a plus de 250 utilisateurs, procédez comme suit :

  1. Lorsque vous installez Azure DevOps Server sur le serveur principal, cochez la case Installer et configurer la recherche. dans la page Search de l’Assistant de configuration du serveur.
  2. Sélectionnez l’option Utiliser un service de recherche existant.
  3. Utilisez le lien paquet de service Search fourni dans l’assistant pour accéder à un ensemble de fichiers d’installation Search sur la machine locale. Ensuite, copiez ces fichiers sur le serveur distant.
  4. Suivez les instructions du fichier Readme.txt, situé dans l’ensemble de fichiers du programme d’installation, pour installer ou mettre à jour le service de recherche sur le serveur distant.
  5. Une fois l'installation terminée, copiez l'URL du serveur de recherche obtenue dans le champ URL de recherche de l'assistant de configuration de l'instance Azure DevOps Server.
  6. Une fois les deux installations terminées, configurez les paramètres de sécurité appropriés pour les deux serveurs.

Le service de recherche utilise une version modifiée de Elasticsearch. Les termes « Recherche » et « Elasticsearch » sont utilisés de façon interchangeable pour le reste de cette section. Les administrateurs doivent fournir des informations d’identification si le service de recherche se trouve sur la même machine qu’Azure DevOps Server ou sur un ordinateur distinct. Cette action fait partie de la configuration de la fonction de recherche via le serveur ou l'Assistant de configuration de recherche. Ces informations d’identification sont nouvelles et ne sont pas liées à des informations d’identification de compte ou de serveur préexistantes. Ils sont utilisés pour configurer et se connecter au service Search. Ces nouveaux ensembles d’informations d’identification activent l’authentification de base dans le service de recherche.

capture d’écran montrant les informations d’identification de recherche.

Pour une mise à niveau de TFS 2018 Update 1.1 vers TFS 2018 Update 3 ou pour la reconfiguration de recherche, seules les informations utilisateur sont renseignées automatiquement et les administrateurs doivent fournir des identifiants. Les administrateurs peuvent fournir des informations d’identification différentes si elles le souhaitent. Si le service de recherche se trouve sur la même machine qu’Azure DevOps Server, les administrateurs peuvent fournir un nouvel ensemble d’informations d’identification dans l’Assistant Configuration pour configurer le service de recherche, si nécessaire. Toutefois, si le service de recherche se trouve sur une machine distante, les administrateurs doivent d’abord fournir les nouvelles informations d’identification au script d’installation du service de recherche.

Remarque

  • Les valeurs des identifiants doivent être comprises entre 8 et 64 caractères.
  • Les informations d’identification de recherche authentifient uniquement les utilisateurs et vérifient que les utilisateurs non authentifiés ne peuvent pas accéder au point de terminaison Elasticsearch. Toutefois, Elasticsearch ne prend pas en charge HTTPS et donc ces informations d’identification sont envoyées sur le réseau en tant que chaînes codées en Base64. S’il existe une possibilité d’accès intermédiaire à demander, configurez les paramètres de sécurité appropriés en fonction des exigences de sécurité et de conformité de votre entreprise.
  • Visez à limiter l’accès à la recherche et à l’indexation à des utilisateurs ou groupes d’utilisateurs spécifiques à l’aide du chiffrement via IPSec, décrit comme suit.

Tenez compte des techniques suivantes pour utiliser IPSec pour sécuriser Elasticsearch sur un serveur Windows :

  • Configurer la sécurité avec l’authentification uniquement :

  • configurer la sécurité avec l’authentification, la protection de l’intégrité et le chiffrement :

    • Garantit que le chiffrement et la protection de l’intégrité sont appliqués avec l’authentification. Elle nécessite des règles côté client et côté service (règles de pare-feu sur le serveur exécutant Elasticsearch et tous les serveurs azure DevOps Server App Tier)
    • Prérequis : Azure DevOps Server doit être configuré avec un compte de domaine
    • Suivez les étapes de pour isoler un serveur en exigeant le chiffrement et l’appartenance à un groupe
  • TFS 2018 Update 2: inclut les composants de recherche mis à jour et la recherche Wiki.

    • Si le service de recherche a été configuré pendant la mise à niveau rtM 2018 et configuré dans le système TFS que vous mettez à niveau, ses composants sont mis à jour automatiquement.
    • Si la recherche a été configurée sur un serveur distant, consultez installer ou mettre à jour la recherche sur un serveur distinct pour le mettre à jour.

    Dans les deux cas, tout le contenu existant (fichiers de code et éléments de travail) est réindexé automatiquement pour prendre en charge les composants mis à jour après la configuration. En fonction du volume de contenu, cette mise à niveau peut prendre un certain temps.

  • TFS 2018 Update 1.1 et TFS 2018 Update 3: inclut l’authentification de base pour la communication entre tfS et le service de recherche pour le rendre plus sécurisé. Toute installation ou mise à niveau vers TFS 2018 Update 1.1 ou TFS 2018 Update 3 doit fournir des informations d’identification dans le cadre de la configuration de la fonction de recherche, via le serveur ou l’assistant de configuration de recherche.

  • TFS 2018 Update 2 (ou supérieur) vers la version Azure DevOps Server 2019 Update 1 : Lorsque Search est configuré sur un serveur séparé, une réinstallation de Search est requise. En suivant les instructions pour une mise à niveau, au lieu de mettre à jour Configure-TFSSearch.ps1 – Operation update dans l’étape 4, exécutez la commande suivante pour réinstaller Search.

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

Pour une mise à niveau de préproduction, une mise à niveau de production, une nouvelle migration matérielle, un clonage ou une autre opération de maintenance, l’Assistant Configuration du serveur annule la recherche. Toutefois, il est facile de reconfigurer une fois l’opération de maintenance du serveur terminée.

Il peut arriver que vous ne souhaitiez plus utiliser la recherche ou que vous souhaitiez effectuer une nouvelle installation propre. Cette opération nécessite plusieurs étapes, selon que la recherche est configurée sur le même serveur que Azure DevOps Server, ou sur un serveur distinct.

Annuler la configuration de la recherche sur la machine configurée en tant que serveur Azure DevOps

  1. Désinstallez l’extension De recherche pour chaque collection. Accédez à la page Gérer les extensions de chaque collection de votre instance Azure DevOps Server :

    Capture d’écran de la vérification de l’installation de l’extension.

  2. Supprimez la fonctionnalité de recherche :

    1. Ouvrez la console d’administration du serveur Azure DevOps.
    2. Sélectionnez le nom du serveur.
    3. Choisissez Supprimer la fonctionnalité.
    4. Sélectionnez service De recherche, puis choisissez Supprimer.
  3. Supprimez le service Elasticsearch :

    1. Ouvrez Invite de commandes en tant qu’administrateur.
    2. Modifiez le répertoire cd "C:\Program Files\Microsoft Team Foundation Server 15.0\Search\ES\elasticsearch-5.4.1\bin".
    3. Supprimez le service, "elasticsearch-service.bat remove".
  4. Supprimer les données de recherche :

    • Supprimez le contenu de l’emplacement décrit par la variable d’environnement, SEARCH_ES_INDEX_PATH.
  5. Supprimez la variable d’environnement, "SEARCH_ES_INDEX_PATH".

Annuler la configuration de la recherche sur un serveur distinct

Effectuez les étapes suivantes pour annuler la configuration de la recherche, par exemple pour code, élément de travail ou Wiki, pour chaque collection.

  1. Accédez à la page Gérer les extensions pour chaque collection de votre instance Azure DevOps Server.

    Capture d’écran montrant que l’extension est installée.

  2. Supprimez la fonctionnalité de recherche :

    1. Ouvrez la boîte de dialogue Supprimer la fonctionnalité, console d’administration.
    2. Dans le volet gauche, sélectionnez le nom du serveur Azure DevOps.
    3. Dans le volet droit, choisissez Supprimer la fonctionnalité.
    4. Dans la boîte de dialogue Supprimer la fonctionnalité, sélectionnez service de recherche, puis choisissez Supprimer.
  3. Supprimez le service elasticsearch et les données.

    1. Ouvrez PowerShell en tant qu’administrateur.
    2. Ouvrez le dossier Configurer Search.ps1, ainsi que les autres fichiers requis pour une installation à distance de La recherche.
    3. Réexécutez le script avec l’option supprimer : "ConfigureTFSSearch.ps1 -remove".

La recherche d’Azure DevOps Server présente la limitation suivante :

  • Réindexez toutes vos collections si vous effectuez une opération de récupération d’urgence (DR) et ramenez votre serveur à un instantané antérieur de votre base de données SQL.
  • La recherche n'est pas extensible, mais vous pouvez soumettre une nouvelle demande de fonctionnalité sur la communauté des développeurs .