Installer et configurer Search
Azure DevOps Server 2022 : Azure DevOps Server 2019
Dans cet article, apprenez comment installer, configurer, et désinstaller un moteur de recherche sécurisé pour Azure DevOps Server qui fonctionne sur votre propre matériel. Pour plus d’informations, consultez les articles suivants :
- Gérer la recherche et l’indexation
- Veuillez consulter la section Dépendances logicielles, plus loin dans cet article
Prérequis
- Pour installer l’extension de recherche, vous devez être administrateur de collection de projets (PCA) pour l’organisation. Les utilisateurs non administratifs peuvent également demander à ce que l’extension soit ajoutée à leur PCA.
- Pour plus d’informations, consultez Installer et configurer Azure DevOps Server et Exigences et compatibilité.
Recommandations matérielles
Search fonctionne sur tout serveur physique ou machine virtuelle qui exécute Azure DevOps Server. Vous pouvez l’installer sur le même serveur ou sur un serveur différent pour Search. Si vous utilisez le même serveur, considérez l’utilisation du CPU.
Conseil
Nous vous recommandons de configurer Search sur un serveur séparé pour les environnements de production.
Pour des performances acceptables dans des scénarios multi-utilisateurs, voici quelques considérations à prendre en compte :
- Moins de 250 utilisateurs avec Search situé sur le serveur (généralement utilisé à des fins de démonstration et d’essai) :
- Processeur quadricœur, 16 GB (minimum) RAM
- Facteur d’utilisation du CPU inférieur à 50%
- Disque dur rapide soutenu par un stockage Solid State Drive (SSD)
- Moins de 500 utilisateurs avec Search situé sur un serveur distinct :
- Processeur dual-core, 8 GB (minimum) RAM
- Disque dur rapide soutenu par un stockage Solid State Drive (SSD)
- Moins de 1,000 utilisateurs avec Search situé sur un serveur distinct :
- Processeur quadricœur, 16 GB (minimum) RAM
- Disque dur rapide soutenu par un stockage Solid State Drive (SSD)
- Pus de 1,000 utilisateurs avec Search situé sur un serveur distinct :
- Processeur quadricœur, 16 GB (minimum) RAM
- Disque dur rapide soutenu par un stockage Solid State Drive (SSD) ou Storage Area Network (SAN)
- Azure DevOps Server avec plusieurs couches d’application (ATs) :
- Installation de Search sur un serveur distinct
- Utilisation du CPU de Azure DevOps Server supérieure à 50% avant l’installation de Search :
- Installation de Search sur un serveur distinct
Exigence d'espace disque:
La quantité d’espace disque utilisée par Search dépend principalement du type et de la taille des fichiers indexés. Pour la recherche de Code, puisque souvent les référentiels peuvent être volumineux et avoir différents fichiers de code dans le contrôle de version, les exigences en espace disque peuvent être significatives. Allouez jusqu’à 150% de la taille totale de tous les référentiels à indexer. À partir de TFS 2018 Update 3 et au-delà, les utilisateurs peuvent exclure des dossiers de leurs référentiels pour l’index afin d’optimiser l’espace disque consommé par la recherche.
Dépendances logicielles
Search a les dépendances suivantes, qui sont installées automatiquement dans le cadre de la configuration :
- Elasticsearch by Elastic.
- Search utilise une version modifiée d’Elasticsearch. Il fonctionne uniquement avec cette version modifiée.
- Une version plus récente d’Elasticsearch est fournie avec TFS 2018 Update 2 et au-delà, et Azure DevOps Server. Tout le contenu est réindexé après l’installation lors de la mise à niveau depuis une version antérieure de Search. Selon le volume de contenu (fichiers de code, work items et pages wiki), la réindexation peut prendre un certain temps.
- Client NEST Elasticsearch.
- Microsoft Build of OpenJDK Version 11.
- La build Microsoft de OpenJDK n’installe pas automatiquement les mises à jour.
- Markdowndeep by Topten Software.
- Roslyn plateforme de compilateur.
- ANTLR analyseur de reconnaissance de langage.
Remarque
- L’administrateur système ou serveur doit s’assurer que le Server JRE est maintenu 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 de configuration de Search ne détecte pas une installation fonctionnelle d’un environnement d’exécution Java (JRE), il propose une option pour télécharger et installer la dernière version prise en charge. Un accès à Internet est requis pour le téléchargement. Si le serveur cible n’a pas accès à Internet, vous devez télécharger et installer manuellement un JRE avant de tenter d’installer Search.
Les versions de la recherche précédant Azure DevOps Server utilisaient l'environnement d'exécution Java Oracle Server. Azure DevOps Server utilise Elasticsearch version 7.17.0, qui a une version groupée d’OpenJDK.
Lors de l’installation, l’assistant définit la variable d’environnement JAVA_HOME pour pointer vers le dossier d’installation du 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 ne recommandons pas d’installer Elasticsearch sur une machine où les ressources sont partagées, en particulier dans un grand environnement d’entreprise avec plusieurs couches d’application. Nous vous conseillons de configurer Elasticsearch sur une machine dédiée distincte. 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 Search 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 ne recommandons pas cette action pour plus de 250 utilisateurs ou pour une utilisation du CPU supérieure à 50% ou plusieurs ATs.
- 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 Search dans TFS (Azure DevOps Server n’utilise pas Oracle Server JRE 8), gardez les informations suivantes à l’esprit :
- Search n’utilise ni ne supporte aucune des fonctionnalités commerciales de Server JRE 8. Par conséquent, lors de la configuration de Search, les fonctionnalités commerciales de Server 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.
Migrez vers Microsoft Build de OpenJDK depuis Oracle Server JRE
Search dans Azure DevOps Server supporte à la fois Microsoft Build de OpenJDK et Oracle JRE, ce qui vous permet de choisir selon vos besoins.
Pour passer à Microsoft Build de OpenJDK, assurez-vous que la variable JAVA_HOME 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
- Work Item Search est disponible dans Team Foundation Server (TFS) 2018 et les versions ultérieures.
- Wiki Search est disponible dans TFS 2018 Update 2 et les versions ultérieures.
- Work Item et Wiki search sont des extensions intégrées qui sont installées par défaut lors de la configuration de Search.
- Code Search est disponible dans TFS 2018 et les versions ultérieures, et il s’agit d’une fonctionnalité optionnelle. Vous pouvez installer Code Search ultérieurement depuis le Local Gallery. Rendez-vous dans Local Gallery (
http://{server}/_gallery
) en tant qu’administrateur. Les utilisateurs non administratifs peuvent également demander l’extension pour Azure DevOps Server. Pour plus d’informations, veuillez consulter la section Installation d’une extension.
Configurez Search
Configurez le service Search en utilisant les pages dédiées dans l’assistant de 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 sur la configuration
Prenez les informations suivantes en compte lors de la configuration de Search :
- Les recherches Work Item et Wiki sont activées par défaut lorsque Search est configuré. Ces extensions peuvent être supprimées ultérieurement si nécessaire depuis la page Manage Extensions dans Azure DevOps Server.
- L’extension Code Search doit être installée pour chaque collection Azure DevOps Server où 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 cochez pas la case pour installer l’extension Code Search pour toutes vos collections de projet, votre PCA peut l’installer depuis la Local Gallery. Assurez-vous de vous rendre dans la Local Gallery (
http://{Server}/_gallery
) depuis votre page portail Azure DevOps Server. Pour plus d’informations, veuillez consulter la section Installation d’une extension. - Il faut généralement moins d’une heure pour que Search indexe une collection. Cependant, cela peut prendre jusqu’à 12 heures en fonction de la taille et du nombre de fichiers de code, work items ou pages wiki. Si vous n’obtenez aucun résultat après cette période, vérifiez l’état d’indexation.
Utilisez un deuxième disque dur et un serveur distant
- Pour des performances optimales, le dossier de l’index de recherche doit être sur un disque dur rapide séparé et soutenu par un stockage rapide, tel qu’un solid-state drive (SSD) ou Storage Area Network (SAN). 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 de work items et de pages wiki dans cette collection.
- Sauf indication contraire, le service d’indexation et le moteur Elasticsearch utilisent le compte de service réseau lors de 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 et le dossier d’index afin de protéger l’index contre toute modification ou suppression accidentelle ou malveillante. Configurez des 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é Search sur le serveur distant, utilisez l’assistant de configuration sur l’un des serveurs AT pour lier l’instance Search distante avec votre instance Azure DevOps Server. Lorsque vous désactivez Search, vous devez utiliser l’Assistant de configuration sur le même serveur AT où la configuration a été initialement effectuée.
Mettez à 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’y a pas d’option pour configurer Search dans le cadre d’une mise à niveau de préproduction. Au lieu de cela, configurez-le après que la mise à niveau de préproduction soit 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 Search pour une ou deux de vos collections après que la configuration soit terminée
- Si vous effectuez une mise à niveau de production sur un serveur où Search est configuré et que vous souhaitez le conserver, cochez la case à côté de Installer et configurer la recherche (Install and Configure Search). 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 uniquement l’option Installer une nouvelle instance de recherche (Install a new Search instance) si vous souhaitez configurer une nouvelle instance de Search sur le même serveur. Configurer une nouvelle instance entraîne le réindexation de tout votre code, des éléments de travail et du wiki, ce qui peut prendre un certain temps selon la taille des collections. 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 manière dont Search a été configuré :
- Si Search est sur un serveur distinct de Azure DevOps Server, vous devez sélectionner Installer et configurer Search (Install and Configure Search) dans l’Assistant de configuration du serveur, puis sélectionner Utiliser une instance de Search existante (Use an existing Search instance) et fournir l’URL de votre instance Search existante pour terminer la configuration de Search
- Si Search est configuré avec votre instance Azure DevOps Server sur l’ancien serveur, vous devez sélectionner Installer et configurer Search (Install and Configure Search) dans l’Assistant de configuration du serveur. Ensuite, sélectionnez à nouveau Installer une nouvelle instance de Search (Install a new Search instance) sur le nouveau serveur si vous souhaitez continuer à héberger Search et Azure DevOps Server ensemble. Tous les index Search 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, effectuez les étapes suivantes :
- Détacher la collection de l’instance source Azure DevOps Server
- Configurez Search sur l’instance Azure DevOps Server cible (si ce n’est pas déjà fait)
- Attachez la collection à l’instance Azure DevOps Server cible
- 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
- Installez l’extension Search, pour la collection depuis la Galerie locale, en la parcourant depuis votre instance Azure DevOps Server cible
Installez ou mettez à jour Search sur un serveur distinct
Pour installer ou mettre à jour Search sur un serveur distinct ou distant, en général lorsque le nombre d’utilisateurs dépasse 250, procédez comme suit :
- 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.
- Sélectionnez l’option Utiliser un service de recherche existant.
- 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.
- Suivez les instructions dans le fichier Readme.txt, situé dans l’ensemble des fichiers d’installation, pour installer ou mettre à jour le service Search sur le serveur distant.
- 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.
- Lorsque les deux installations sont terminées, configurez les paramètres de sécurité appropriées pour les deux serveurs.
Sécuriser la recherche
Le service Search utilise une version modifiée de Elasticsearch. Les termes « Search » et « Elasticsearch » sont utilisés de manière interchangeable pour le reste de cette section. Les administrateurs doivent fournir des identifiants que le service Search soit sur la même machine qu’Azure DevOps Server ou sur une machine distincte. Cette action fait partie de la configuration de la fonction de recherche via le serveur ou l'Assistant de configuration de recherche. Ces identifiants sont nouveaux et ne sont liés à aucun compte ou identifiants de serveur existants. Ils sont utilisés pour configurer et se connecter au service Search. Ces nouveaux ensembles d’identifiants permettent l’authentification de base dans le service de recherche.
capture d’écran
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 identifiants différents s’ils le souhaitent. Si le service Search est sur la même machine qu’Azure DevOps Server, les administrateurs peuvent fournir un nouvel ensemble d’identifiants dans l’Assistant de configuration pour configurer le service Search, si désiré. Cependant, si le service Search est sur une machine distante, les administrateurs doivent d’abord fournir les nouveaux identifiants au script de configuration du service Search.
Remarque
- Les valeurs des identifiants doivent être comprises entre 8 et 64 caractères.
- Les identifiants de recherche authentifient uniquement les utilisateurs et garantissent que les utilisateurs non authentifiés ne peuvent pas accéder au point de terminaison Elasticsearch. Cependant, Elasticsearch ne prend pas en charge HTTPS et ces identifiants sont donc envoyés sur le réseau sous forme de chaînes encodées en Base64. S’il y a une possibilité d’accès intermédiaire à la requête, configurez des paramètres de sécurité appropriés en fonction de vos exigences de sécurité et de conformité d’entreprise.
- Cherchez à limiter l’accès à la fois à la recherche et à l’indexation à des utilisateurs ou groupes d’utilisateurs spécifiques en utilisant le chiffrement via IPSec, décrit comme suit.
Considérez les techniques suivantes pour utiliser IPSec pour sécuriser Elasticsearch sur un serveur Windows :
Configurer la sécurité avec uniquement l’authentification :
- Garantit que seuls les utilisateurs autorisés peuvent accéder au port Elasticsearch. Cela nécessite uniquement des règles côté service (règles de pare-feu uniquement sur le serveur exécutant Elasticsearch)
- Prérequis : Azure DevOps Server doit être configuré avec un compte de domaine
- Suivez les étapes décrites dans Création de règles de pare-feu qui autorisent le trafic réseau protégé par IPsec
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 en plus de l’authentification. Cela 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 App Tier Azure DevOps Server)
- 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
Mettez à niveau la recherche
TFS 2018 Update 2: inclut des composants Search 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 mis à jour automatiquement.
- Si Search était configuré sur un serveur distant, veuillez consulter la rubrique 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 automatiquement réindexé pour prendre en charge les composants mis à jour après la configuration. Selon le volume de contenu, cette mise à niveau peut prendre un certain temps à se terminer.
TFS 2018 Update 1.1 et TFS 2018 Update 3: inclut l’authentification de base pour la communication entre le service TFS et Search afin de 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
Désinstaller Search
Pour une mise à niveau de préproduction, une mise à niveau de production, une migration vers un nouveau matériel, un clonage ou une autre opération de maintenance, l’Assistant de configuration du serveur désactive Search. Cependant, il est facile de le reconfigurer après que l’opération de maintenance du serveur soit 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.
Désactivez Search sur la machine configurée en tant qu’Azure DevOps Server
Désinstallez l’extension Search pour chaque collection. Rendez-vous sur la page Gérer les extensions (Manage Extensions) de chaque collection dans votre instance Azure DevOps Server :
Supprimez la fonctionnalité Search :
- Ouvrez la Console d’administration Azure DevOps Server.
- Sélectionnez le nom du serveur.
- Choisissez Supprimer la fonctionnalité (Remove Feature).
- Sélectionnez Service Search, puis choisissez Supprimer (Remove).
Supprimez le service Elasticsearch :
- Ouvrez Invite de commandes en tant qu’administrateur.
- Modifiez le répertoire
cd "C:\Program Files\Microsoft Team Foundation Server 15.0\Search\ES\elasticsearch-5.4.1\bin"
. - Supprimez le service,
"elasticsearch-service.bat remove"
.
Supprimez les données Search :
- Supprimez le contenu de l’emplacement décrit par la variable d’environnement,
SEARCH_ES_INDEX_PATH
.
- Supprimez le contenu de l’emplacement décrit par la variable d’environnement,
Supprimez la variable d’environnement,
"SEARCH_ES_INDEX_PATH"
.
Désactivez Search sur un serveur distinct
Effectuez les étapes suivantes pour désactiver Search, comme pour Code, Work item ou Wiki, pour chaque collection.
Rendez-vous sur la page Gérer les extensions (Manage Extensions) pour chaque collection dans votre instance Azure DevOps Server.
Supprimez la fonctionnalité Search :
- Ouvrez la boîte de dialogue Supprimer la fonctionnalité (Remove Feature), Console d’administration.
- Dans le volet de gauche, sélectionnez le nom de l’Azure DevOps Server.
- Dans le volet de droite, choisissez Supprimer la fonctionnalité (Remove Feature).
- Dans la boîte de dialogue Supprimer la fonctionnalité, sélectionnez service de recherche, puis choisissez Supprimer.
Supprimez le service et les données Elasticsearch.
- Ouvrez PowerShell en tant qu’administrateur.
- Ouvrez le dossier Configure Search.ps1, ainsi que le reste des fichiers nécessaires pour une installation distante de Search.
- Exécutez à nouveau le script avec l’option remove :
"ConfigureTFSSearch.ps1 -remove".
Limitations de Search
Search pour 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 .