Installer et configurer la recherche

Azure DevOps Server 2022 – Azure DevOps Server 2019

Dans cet article, découvrez comment installer, configurer et 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 :

Prérequis

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 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) :
  • Utilisation du processeur Azure DevOps Server supérieure à 50 % avant l’installation de la recherche :

Espace disque requis :

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 nombreux dépôts peuvent être volumineux et avoir des fichiers de code différents dans le contrôle de version, l’espace disque requis peut être important. Allouez jusqu’à 150 % de la taille de tous les dépôts à 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 ELASTICsearch NEST.
  • Build Microsoft d’OpenJDK version 11.
    • La build Microsoft d’OpenJDK n’installe pas automatiquement les mises à jour.
  • Markdowndeep par Topten Software.
  • Plateforme du compilateur Roslyn .
  • Analyseur de reconnaissance de langue ANTLR .

Remarque

  • L’administrateur système ou serveur doit s’assurer que Server JRE est géré et mis à jour conformément aux recommandations du fournisseur de logiciels. Consultez également les notes d’installation De Java qui suivent.
  • Régulièrement case activée pour les mises à jour.

Notes d’installation de Java

  • Si l’Assistant Configuration de la recherche ne détecte pas une installation opérationnelle d’un environnement Java Runtime Environment (JRE), il fournit 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 ne dispose pas d’une connectivité Internet, vous devez télécharger et installer un JRE manuellement avant de tenter d’installer la recherche.

  • Les versions de la recherche antérieures Azure DevOps Server utilisaient l’environnement d’exécution Java d’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 à celle requise par la recherche.

    Notes

    Nous vous déconseillons d’installer Elasticsearch sur un ordinateur où les ressources sont partagées, en particulier sur un environnement d’entreprise de grande taille avec plusieurs niveaux 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 la recherche et que la variable JAVA_HOME a été définie sur cette version, nous vous recommandons d’installer La recherche sur un serveur distinct.

  • S’il existe une version du serveur JRE égale ou ultérieure à la valeur minimale requise par la recherche et non reconnue par l’Assistant Configuration, vérifiez que JAVA_HOME variable n’est pas définie. Ensuite, réexécutez l’Assistant 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 d’accès de 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 Search 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 Recherche et JRE sur un serveur distinct d’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 les fonctionnalités commerciales de Server 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, réexécutez l’Assistant 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 d’accès de 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ément de travail et Recherche Wiki sont des extensions intégrées qui sont installées par défaut pendant la configuration de la recherche.
  • Recherche de code est disponible dans TFS 2018 et versions ultérieures, et est une fonctionnalité d’adhésion. Vous pouvez installer 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 Search à l’aide des pages dédiées de l’Assistant Configuration du serveur lorsque vous installez Azure DevOps Server. Vous pouvez également annuler la configuration de la recherche par la suite en réécutant l’Assistant Configuration du serveur ou en lançant l’Assistant Configuration de la recherche.

Considérations sur 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 dans la page Gérer les extensions d’Azure DevOps Server.
  • L’extension Recherche de code doit être installée pour chaque Azure DevOps Server collection dans laquelle vous souhaitez l’utiliser. Lorsque vous configurez la recherche initialement, vous pouvez définir une boîte de réception case activée pour installer automatiquement l’extension Recherche de code pour les collections de projets existantes et nouvelles afin d’automatiser ce processus.
  • Si vous ne cochez pas la case 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 la page de votre portail Azure DevOps Server. Pour plus d’informations, consultez Installer une extension.
  • Il faut généralement moins d’une heure à La recherche pour indexer une collection. Toutefois, cela 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, case activée l’état d’indexation.

Utiliser un deuxième disque dur et un serveur distant

  • Pour des performances maximales, le dossier d’index de recherche doit se trouver sur un disque dur rapide distinct et s’adosser à un stockage rapide, tel qu’un disque ssd (SSD) ou un réseau de zone de stockage (SAN). Allouez jusqu’à 150 % de la taille de tous les dépôts à indexer, ce qui est le pire scénario. 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 disposer d’une autorisation de connexion en tant que 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 La recherche d’un serveur avec plusieurs AT, installez-le sur un serveur distinct. 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 de préproduction sur un serveur sur lequel la recherche a déjà été configurée, vous devez reconfigurer entièrement la recherche pour éviter d’endommager 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 l’option Installer et configurer automatiquement la recherche de code pour tous les regroupements existants et nouveaux pendant 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 en production sur un serveur où 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 de recherche existante et sélectionne automatiquement Utiliser l’instance de recherche existante et préremplit votre URL de service Search actuelle. Utilisez l’option Installer une nouvelle instance de recherche 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 l’ensemble de votre code, des éléments de travail et du wiki, ce qui, en fonction de 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 vers un nouveau matériel, vous disposez des deux options suivantes. 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 de Azure DevOps Server, vous devez sélectionner Installer et configurer la recherche dans l’Assistant Configuration du serveur, puis 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. Ensuite, sélectionnez à nouveau Installer une nouvelle instance de recherche sur le nouveau serveur si vous souhaitez continuer à cohéberger recherche et Azure DevOps Server. Tous les index de recherche pour toutes les collections sont recréés, ce qui, en fonction de 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, procédez comme suit :
    1. Détacher la collection de l’instance source Azure DevOps Server
    2. Configurer la recherche sur l’instance de Azure DevOps Server cible (si ce n’est pas encore fait)
    3. Attacher la collection au Azure DevOps Server cible
    4. Désinstallez vos extensions de recherche, telles que code, élément de travail ou Wiki pour la collection à partir de la galerie locale au sein de votre Azure DevOps Server
    5. Installez l’extension De recherche, pour la collection à partir de la galerie locale, en accédant à celle-ci à partir de 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, définissez l’installation et configurez search case activée box. dans la page De recherche de l’Assistant Configuration du serveur.
  2. Sélectionnez l’option Utiliser un service Search existant.
  3. Utilisez le lien de package service Search fourni dans l’Assistant pour accéder à un ensemble de fichiers d’installation de recherche sur l’ordinateur local. Ensuite, copiez ces fichiers sur le serveur distant.
  4. Suivez les instructions du fichier Readme.txt, situé dans l’ensemble des fichiers du programme d’installation, pour installer ou mettre à jour le service Search 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 configuration qui s’exécute sur 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 Search utilise une version modifiée d’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, que le service Search se trouve sur la même machine que Azure DevOps Server ou sur un ordinateur distinct. Cette action fait partie de la configuration de la fonctionnalité de recherche via le serveur ou l’Assistant Configuration de la 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 à 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 une reconfiguration de recherche, seules les informations utilisateur sont renseignées automatiquement et les administrateurs doivent fournir des informations d’identification de mot de passe. Les administrateurs peuvent fournir un nom d’utilisateur et un mot de passe différents s’ils le souhaitent. Si le service Search se trouve sur la même machine que Azure DevOps Server, les administrateurs peuvent fournir un nouvel ensemble d’informations d’identification dans l’Assistant Configuration pour configurer le service Search, si vous le souhaitez. Toutefois, si le service Search se trouve sur un ordinateur distant, les administrateurs doivent d’abord fournir les nouvelles informations d’identification au script d’installation service Search.

Notes

  • Les valeurs de nom d’utilisateur et de mot de passe doivent être comprises entre 8 et 64 caractères. Bien que le mot de passe puisse recevoir n’importe quelle valeur, le nom d’utilisateur ne peut contenir que des caractères alphanumériques et de soulignement.
  • Recherchez uniquement les informations d’identification authentifient les utilisateurs et assurez-vous 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 ces informations d’identification sont donc envoyées sur le réseau sous forme de chaînes encodées en Base64. S’il existe une possibilité d’accès intermédiaire à la demande, 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.

Considérez les techniques suivantes pour utiliser IPSec pour sécuriser Elasticsearch sur un serveur Windows :

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

  • Configurez 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. Il 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 de niveau Application Azure DevOps Server)
    • Prérequis : Azure DevOps Server doit être configuré avec un compte de domaine
    • Suivez les étapes décrites dans Isolation d’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 Search a été configuré lors de la mise à niveau RTM 2018 et configuré dans le système TFS que vous mettez à niveau, ses composants sont automatiquement mis à jour.
    • Si la recherche a été configurée sur un serveur distant, consultez Installer ou mettre à jour la recherche sur un serveur distinct pour la mettre à jour.

    Dans les deux cas, tout le contenu existant (fichiers de code et éléments de travail) est automatiquement réindexé 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 service Search pour la rendre plus sécurisée. 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 fonctionnalité de recherche, via Server ou l’Assistant Configuration de recherche.

  • TFS 2018 Update 2 (ou version ultérieure) vers la version Azure DevOps Server 2019 Update 1 : lorsque la recherche est configurée sur un serveur distinct, nécessite une réinstallation de la recherche. En suivant les instructions d’une mise à niveau, à l’étape 4 au lieu de la mise à jour Configure-TFSSearch.ps1 – Operation update, exécutez la commande suivante pour réinstaller la recherche.

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 et 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 l’ordinateur configuré comme votre Azure DevOps Server

  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 case activée de l’installation de l’extension.

  2. Supprimez la fonctionnalité De recherche :

    1. Ouvrez la console azure DevOps Server Administration istration.
    2. Sélectionnez le nom du serveur.
    3. Choisissez Supprimer la fonctionnalité.
    4. Sélectionnez service Search, puis sélectionnez Supprimer.
  3. Supprimez le service Elasticsearch :

    1. Ouvrez l’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é, Administration istration Console.
    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 Search, puis sélectionnez 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 de suppression : "ConfigureTFSSearch.ps1 -remove".

La recherche de 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 revenez à une instantané antérieure 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.