Création de ressources Azure pour un environnement sur site
Cette rubrique est destinée à l'administrateur système Windchill sur site.
Vue d'ensemble
Le plug-in Windchill AI Assistant requiert plusieurs services Microsoft Azure pour fournir des fonctionnalités alimentées par l'IA aux utilisateurs de Windchill dans un environnement sur site.
Le plug-in utilise les services Azure suivants :
• Recherche Azure AI : pour l'indexation et la recherche de documents
• Azure AI Foundry : pour la complétion de conversation et la vectorisation de documents
• Stockage Azure : pour l'ingestion temporaire de documents
• Azure Entra ID : pour la gestion du principal de service et le contrôle d'accès en fonction du rôle (RBAC)
• Scripts de déploiement Azure : pour le provisionnement d'infrastructure automatisé
Tous les services Azure requis sont définis et déployés au moyen de l'infrastructure en tant que code (IaC, Infrastructure as Code) par le biais des modèles Azure Resource Manager (ARM).
Le plug-in s'authentifie auprès des points de terminaison Recherche Azure AI, Azure AI Foundry et Stockage Azure à l'aide des principaux de service Azure Entra ID. L'autorisation est appliquée via le contrôle d'accès en fonction du rôle (RBAC).
Les comptes Recherche Azure AI, Azure AI Foundry et Stockage Azure sont déployés avec des points de terminaison publics, protégés par des règles de pare-feu configurables basées sur IP. L'accès au réseau peut être restreint aux plages d'adresses IP client approuvées.
Il incombe au propriétaire du déploiement d'examiner et de configurer ces contrôles d'accès au réseau conformément aux exigences de son organisation en matière de sécurité et de conformité.
Configuration requise
Avant de déployer des ressources Azure pour le plug-in Windchill AI Assistant, assurez-vous que les conditions requises suivantes sont remplies :
• Python 3.10.0 ou version ultérieure est installé sur le système utilisé pour le déploiement.
• Vous avez téléchargé le fichier AI_Assistant_Plugin_Azure_IaC.zip, qui est disponible au bas de la fenêtre Configuration de Windchill AI Assistant.
◦ Dans Gestionnaire de plug-in, cliquez avec le bouton droit sur Windchill AI Assistant et sélectionnez Configurer le plug-in.
| Les ressources Azure créées à l'aide de cette procédure doivent être utilisées exclusivement pour le plug-in Windchill AI Assistant. |
Procédure
Procédez comme suit pour créer les ressources Azure requises :
Etape 1 : Installation de la ligne de commande Azure et vérification de la version de Python
Installez la ligne de commande Azure (Azure CLI) et assurez-vous que Python 3.10 ou version ultérieure est disponible sur le système de déploiement.
• La commande az permet de communiquer avec Azure au cours du déploiement.
• La commande python3 est utilisée pour exécuter le script d'aide au déploiement.
Pour obtenir des instructions d'installation propres à votre système d'exploitation, consultez la documentation officielle de la
ligne de commande Azure (Azure CLI).
Etape 2 : Création d'un groupe de ressources Azure
Créez un nouveau groupe de ressources Azure pour héberger les ressources de Windchill AI Assistant. Pour plus d'informations, consultez l'article
Manage Resource Groups.
| Le modèle Azure Resource Manager (ARM) est déployé dans ce groupe de ressources. |
Etape 3 : Création d'un principal de service
Créez un principal de service Azure Entra ID pour l'authentification du plug-in auprès des ressources Azure.
1. Ouvrez un terminal ou une invite de commande sur un système où la ligne de commande Azure est installée.
2. Connectez-vous à l'aide d'une identité pouvant créer des principaux de service Entra ID.
3. Exécutez la commande suivante pour créer un nouveau principal de service :
az ad sp create-for-rbac \
--display-name "<Display name>"
Dans <Display name>, spécifiez le nom affiché requis. Par exemple, wcaiassistant-onprem-sp.
La commande génère des valeurs semblables à ce qui suit :
{
.."appId": "<client-id>",
.."password": "<client-secret>",
.."tenant": "<tenant-id>"
}
Stockez de manière sécurisée les valeurs client ID, client secret et tenant ID.
Ces valeurs seront requises ultérieurement lors de la configuration du plug-in.
Obtenez l'ID d'objet du principal de service en exécutant la commande suivante :
az ad sp show --id <client-id> --query id -o tsv
L'ID d'objet sera requis ultérieurement lors de la configuration de l'IaC.
Etape 4 : Connexion à l'aide de la ligne de commande Azure et vérification des rôles requis
1. Ouvrez un terminal ou une invite de commande à l'endroit où l'invite de commande Azure est installée.
2. Connectez-vous à l'aide de la commande
az login (en tant qu'utilisateur ou que
principal de service).
3. Assurez-vous que l'utilisateur ou le
principal de service connecté dispose du rôle Collaborateur ou, au minimum, des rôles suivants dans le groupe de ressources :
◦ Cognitive Services Contributor
◦ Cognitive Services OpenAI User
◦ Search Service Contributor
◦ Storage Account Contributor
◦ Un rôle personnalisé permettant les actions suivantes :
▪ Microsoft.Resources/deploymentScripts/read
▪ Microsoft.Resources/deploymentScripts/write
4. Assurez-vous que l'utilisateur ou le
principal de service connecté dispose du rôle d'administrateur de contrôle d'accès en fonction du rôle pour le groupe de ressources.
Etape 5 : Préparation du modèle ARM et du fichier de paramètres
1. Copiez les fichiers suivants dans un répertoire de travail local :
◦ wcaia.json (fichier de modèle ARM)
◦ wcaia.parameters.json (fichier de paramètres)
◦ deploy-wcaia.py (script d'aide au déploiement)
2. Modifiez le fichier wcaia.parameters.json et définissez les valeurs des paramètres obligatoires.
| Ne renseignez pas les paramètres associés aux jetons (par exemple, management_token, management_token_expires_on, search_token et search_token_expires_on). Ces valeurs sont automatiquement définies par le script d'aide au déploiement. |
a. Renseignez le paramètre location à partir des régions Azure prises en charge suivantes :
▪ australiaeast
▪ brazilsouth
▪ canadaeast
▪ eastus
▪ eastus2
▪ francecentral
▪ germanywestcentral
▪ italynorth
▪ japaneast
▪ koreacentral
▪ northcentralus
▪ polandcentral
▪ southafricanorth
▪ southcentralus
▪ spaincentral
▪ swedencentral
▪ switzerlandnorth
▪ uaenorth
▪ uksouth
▪ westus
▪ westus3
| • contraintes de capacité pouvant entraîner des échecs de déploiement ; • limites de stockage réduites (par exemple, 25 Go au lieu de 160 Go), susceptibles d'empêcher l'indexation de certaines données ; • manque de zones de disponibilité, risquant d'amoindrir les garanties de disponibilité. |
b. (Facultatif) Spécifiez des balises de ressource dans common_tags.
Si votre organisation applique une politique de balisage, l'absence des balises requises risque d'entraîner une erreur RequestDisallowedByPolicy lors de la création des ressources.
| Cette valeur n'est pas l'ID client du principal de service. L'ID d'objet peut être récupéré à partir de l'ID client via l'exécution de la commande suivante : az ad sp show --id <client-id> --query id -o tsv |
d. Renseignez allowed_ips avec une liste d'adresses IPv4 ou de plages CIDR pouvant accéder aux ressources Azure.
▪ Ajoutez les adresses IP de tous les hôtes exécutant le plug-in.
▪ Si vous laissez la liste vide ([]), le pare-feu sera désactivé.
| Les ressources Azure sont exposées sur des plages d'adresses Internet publiques. Pour les hôtes situés sur des réseaux internes (derrière un service de traduction d'adresses réseau [NAT, Network Address Translation]), spécifiez la plage CIDR ou l'adresse IP (passerelle NAT) de sortie publique. |
f. (Facultatif) Définissez le paramètre text_embedding_capacity sur une valeur inférieure à la valeur par défaut de 4 000 unités de capacité (4 millions de jetons par minute) uniquement si la capacité disponible pour le modèle d'incorporation de texte est insuffisante dans la région AI Foundry déployée.
| La vitesse d'indexation dépend de la capacité d'incorporation de texte disponible. Si la valeur configurée dépasse les limites disponibles, le script d'aide au déploiement signale la capacité disponible réelle. |
g. (Facultatif) Par défaut, la configuration de redondance du compte de stockage Azure storage_sku_name est définie sur Standard_LRS (stockage localement redondant). Vous pouvez remplacer cette valeur par un niveau de redondance différent dans les régions où des options supplémentaires sont prises en charge.
| Stockez toutes les informations d'identification de manière sécurisée dans le coffre-fort de sécurité de votre entreprise pour garantir un accès fiable s'il y a lieu. |
Exemple de fichier de paramètres :
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"management_token": {
"value": "SET_BY_PYTHON_SCRIPT"
},
"management_token_expires_on": {
"value": "SET_BY_PYTHON_SCRIPT"
},
"search_token": {
"value": "SET_BY_PYTHON_SCRIPT"
},
"search_token_expires_on": {
"value": "SET_BY_PYTHON_SCRIPT"
},
"location": {
"value": "swedencentral"
},
"common_tags": {
"value": {
"environment": "QA",
"purpose": "Windchill AI Assistant"
}
},
"service_principal_id": {
"value": "00000000-0000-0000-0000-000000000000"
},
"allowed_ips": {
"value": []
},
"ai_search_partition_count": {
"value": 1
},
"text_embedding_capacity": {
"value": 4000
},
"storage_sku_name": {
"value": “Standard_LRS”
} }
}
Etape 6 : Définition d'un nom de déploiement unique
Définissez un nom de déploiement global unique. Le nom du déploiement est utilisé comme préfixe pour les noms de ressource Azure.
Le nom du déploiement doit répondre aux exigences suivantes :
• contient uniquement des lettres minuscules et des chiffres ;
• ne dépasse pas 20 caractères.
Exemples :
• acmeaidev
• companywcaiprod
• ai2025subscracme
Etape 7 : Création de ressources Azure
Exécutez la commande suivante à partir du répertoire contenant les fichiers de modèle ARM et le script d'aide au déploiement pour créer les ressources Azure requises :
python3 deploy-wcaia.py
--resource-group ${RESOURCE_GROUP}
--deployment-name ${DEPLOYMENT_NAME}
Où :
• ${RESOURCE_GROUP} est le nom du groupe de ressources Azure.
• ${DEPLOYMENT_NAME} est le nom unique du déploiement de modèle.
Sortie de configuration du script d'aide au déploiement
Après un déploiement réussi, le script d'aide au déploiement génère les valeurs de configuration requises pour connecter le plug-in Windchill AI Assistant à ses services Azure. Ces valeurs doivent être entrées lors de la configuration du plug-in.
Le script d'aide au déploiement fournit les valeurs de configuration pour les services Azure suivants utilisés par Windchill AI Assistant :
• Recherche Azure AI
• Azure OpenAI
• Stockage Azure
Utilisez les valeurs générées par le script lors de la configuration du plug-in. Pour plus d'informations sur la procédure de configuration, consultez la rubrique
Configuration du plug-in Windchill AI Assistant.
Vous pouvez également utiliser le script d'aide au déploiement pour récupérer les valeurs de configuration d'un déploiement précédemment effectué en exécutant ce script avec l'option de ligne de commande --skip-deployment.
| • La clé secrète client du principal de service Azure n'est disponible qu'au moment de la création. Si la clé secrète client n'est plus disponible, vous devez en créer une nouvelle dans le portail Azure avant de poursuivre la configuration du plug-in. • Dans de rares cas, des conditions de concurrence transitoires internes au processus de déploiement Azure peuvent entraîner l'arrêt du script et le signalement d'une erreur. Si cela se produit, nettoyez toutes les installations partielles, puis réexécutez le script de déploiement. |
L'exemple suivant présente une sortie de configuration type générée par le script d'aide au déploiement. Les valeurs réelles varieront en fonction de votre environnement.
====================================
Windchill AI Assistant Configuration
Azure AI Search
Endpoint
https://acmedev-ai-search.search.windows.net
Index Name -- choose one of
default
another
Authentication Mode -- take from shared authentication configuration below
Azure OpenAI
Endpoint
https://acmedev-ai-foundry.cognitiveservices.azure.com/
Deployment
gpt-5-mini
Authentication Mode -- take from shared authentication configuration below
Azure Storage
Account Name
acmedevdti
Container Name -- choose the one matching the index name
default
another
Authentication Mode -- take from shared authentication configuration below
-------------------------------------
(shared authentication configuration)
Authentication Mode
Service Principal
Tenant ID
31c9c31c-7621-4f8f-ae11-4e462f1be7ed
Client ID
29e5ec38-166e-11f1-1322-af400926661b
Client Secret -- Only accessible after creation. Create new secret if needed.
-- Service Principal (App Registration) name: aiassistant-testapp
-- Service Principal (App Registration) ID: da8e89d4-1fbb-4c37-9f28-a88fa598ea40
-- Azure Portal: https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationMenuBlade/~/Credentials/appId/29e5ec38-166e-11f1-1322-af400926661b