Удаление ресурсов Azure для локальной среды
Этот раздел предназначен для локальных системных администраторов Windchill.
Обзор
Подключаемому модулю Windchill AI Assistant требуется несколько служб Microsoft Azure для предоставления пользователям Windchill возможностей на основе AI в локальной среде.
Подключаемый модуль использует следующие службы Azure:
• Поиск Azure AI - для индексирования документов и поиска
• Azure AI Foundry - для завершения чата и векторизации документов
• Хранилище Azure - для временного приема документов
• Azure Entra ID - для управления участниками сервиса и управления доступом на основе ролей (RBAC, role-based access control)
• Сценарии развертывания Azure - для автоматической подготовки инфраструктуры
Все необходимые службы Azure определяются и развертываются с помощью инфраструктуры как кода (IaC) при использовании шаблонов диспетчера ресурсов Azure (ARM).
Подключаемый модуль выполняет проверку подлинности в конечных точках поиска Azure AI, Azure AI Foundry и службы хранилища Azure с помощью участников сервиса Azure Entra ID. Авторизация осуществляется с помощью управления доступом на основе ролей (RBAC).
Учетные записи поиска Azure AI, Azure AI Foundry и хранилища Azure развертываются с общедоступными конечными точками, защищенными настраиваемыми правилами брандмауэра на основе IP-адресов. Сетевой доступ может быть ограничен утвержденными диапазонами IP-адресов клиентов.
Ответственность за проверку и конфигурирование управления доступом к сети в соответствии с требованиями безопасности и соответствия требованиям своей организации лежит на владельце развертывания.
Предварительные требования
Перед развертыванием ресурсов Azure для подключаемого модуля Windchill AI Assistant убедитесь, что выполнены следующие предварительные условия.
• В системе, используемой для развертывания, установлен Python 3.10.0 или более поздней версии.
• Вы загрузили файл AI_Assistant_Plugin_Azure_IaC.zip, который доступен в нижней части окна Конфигурация Windchill AI Assistant.
◦ В Диспетчере подключаемых модулей щелкните правой кнопкой мыши опцию Windchill AI Assistant и выберите команду Конфигурировать подключаемый модуль.
| Все ресурсы Azure, созданные с помощью этой процедуры, должны использоваться исключительно для подключаемого модуля Windchill AI Assistant. |
Процедура
Выполните следующие шаги, чтобы создать необходимые ресурсы Azure.
Шаг 1. Установка интерфейса командной строки Azure (Azure CLI) и проверки Python
Установите интерфейс командной строки Azure (CLI) и убедитесь, что Python 3.10 или более поздняя версия доступны в системе развертывания.
• Команда az используется для взаимодействия со службами Azure.
• Команда python3 используется для выполнения сценария помощника по развертыванию.
Инструкции по установке для вашей операционной системы см. в официальной документации
по интерфейсу командной строки Azure (CLI, Command-Line Interface).
Шаг 2. Создание группы ресурсов Azure
Создайте новую группу ресурсов Azure для размещения ресурсов Windchill AI Assistant. Дополнительные сведения см. в разделе
Управление группами ресурсов.
| Шаблон Azure Resource Manager (ARM) развертывается в этой группе ресурсов. |
Шаг 3. Создание участника сервиса
Создайте участника сервиса Azure Entra ID для аутентификации подключаемого модуля в ресурсах Azure.
1. Откройте терминал или командную строку в системе, где установлен интерфейс Azure CLI.
2. Войдите в систему, используя удостоверение, которое может создавать участников сервиса Entra ID.
3. Выполните следующую команду, чтобы создать нового участника сервиса:
az ad sp create-for-rbac \
--display-name "<Display name>"
В поле <Display name>укажите требуемое отображаемое наименование. Например, wcaiassistant-onprem-sp.
Команда выводит значения, аналогичные следующим:
{
.."appId": "<client-id>",
.."password": "<client-secret>",
.."tenant": "<tenant-id>"
}
Надежно сохраните client ID, client secret и tenant ID.
Эти значения потребуются позже в процессе конфигурирования подключаемого модуля.
Получите идентификатор объекта участника сервиса, выполнив следующую команду:
az ad sp show --id <client-id> --query id -o tsv
Идентификатор объекта потребуется позднее в процессе конфигурирования IaC.
Шаг 4. Вход в систему с помощью интерфейса командной строки Azure и проверка обязательных ролей
1. Откройте терминал или командную строку, где установлен интерфейс Azure CLI.
3. Убедитесь, что у входящего в систему пользователя или
участника сервиса есть роль "Корреспондент" или хотя бы следующие роли, назначенные в группе ресурсов:
◦ Cognitive Services Contributor
◦ Cognitive Services OpenAI User
◦ Search Service Contributor
◦ Storage Account Contributor
◦ Пользовательская роль, позволяющая выполнять следующие действия:
▪ Microsoft.Resources/deploymentScripts/read
▪ Microsoft.Resources/deploymentScripts/write
4. Убедитесь, что вошедшему в систему пользователю или
участнику сервиса назначена роль администратора управления доступом на основе ролей - для группы ресурсов.
Шаг 5. Подготовка шаблона ARM и файла параметров
1. Скопируйте следующие файлы в локальную рабочую папку:
◦ wcaia.json (файл шаблона ARM)
◦ wcaia.parameters.json (файл параметров)
◦ deploy-wcaia.py (сценарий помощника по развертыванию)
2. Отредактируйте файл wcaia.parameters.json и укажите значения для требуемых параметров.
| Не заполняйте параметры, связанные с лексемой (например, management_token, management_token_expires_on, search_token и search_token_expires_on). Эти значения автоматически задаются сценарием помощника по развертыванию. |
a. Укажите location из следующих поддерживаемых регионов Azure:
▪ australiaeast
▪ brazilsouth
▪ canadaeast
▪ eastus
▪ eastus2
▪ francecentral
▪ germanywestcentral
▪ italynorth
▪ japaneast
▪ koreacentral
▪ northcentralus
▪ polandcentral
▪ southafricanorth
▪ southcentralus
▪ spaincentral
▪ swedencentral
▪ switzerlandnorth
▪ uaenorth
▪ uksouth
▪ westus
▪ westus3
| • Ограничения вместимости, которые могут привести к сбоям развертывания. • Уменьшенные пределы хранилища (например, 25 ГБ вместо 160 ГБ), что может помешать индексированию некоторых данных. • Отсутствие зон доступности, что может снизить гарантии доступности. |
b. (Необязательно) Укажите теги ресурсов в common_tags.
Если в организации применяется политика тегов, отсутствие обязательных тегов может привести к ошибке RequestDisallowedByPolicy при создании ресурса.
c. Задайте в
service_principal_id идентификатор объекта (также называемый идентификатором участника) для участника сервиса, созданного в разделе
Шаг 3. Создание участника сервиса | Это значение не является идентификатором клиента участника сервиса. ИД объекта можно загрузить из ИД клиента, выполнив следующую команду: az ad sp show --id <client-id> --query id -o tsv |
d. Заполните allowed_ips списком адресов IPv4 или диапазонов CIDR, которые могут получать доступ к ресурсам Azure.
▪ Добавьте IP-адреса всех хост-компьютеров, на которых выполняется подключаемый модуль.
▪ Если оставить список пустым ([]), брандмауэр отключается.
| Ресурсы Azure предоставляются в общедоступных диапазонах интернет-адресов. Для хост-компьютеров, находящихся во внутренних сетях (позади NAT), укажите IP-адрес общедоступного выходного трафика (интерфейс NAT) или диапазон CIDR. |
e. Задайте в поле
ai_search_partition_count требуемое число разделов для категории поиска Azure AI "Стандартная S1". Дополнительные сведения см. в разделе
Оценка числа разделов поиска AI.
f. (Необязательно) Задавайте для параметра text_embedding_capacity значение меньше значения по умолчанию (4000 единиц измерения вместимости - 4 миллиона лексем в минуту), только если в регионе развертывания AI Foundry достаточная вместимость недоступна для модели встраивания текста.
| Скорость индексирования зависит от доступной вместимости встраивания текста. Если сконфигурированное значение превышает доступные пределы, сценарий помощника по развертыванию сообщает доступную фактическую вместимость. |
g. (Необязательно) По умолчанию для конфигурации избыточности учетной записи хранения Azure storage_sku_name задается значение Standard_LRS (locally redundant storage - локально избыточное хранилище). Можно изменить это значение на другой уровень избыточности в регионах, где поддерживаются дополнительные опции.
| Храните все учетные данные в корпоративном архиве безопасности, чтобы обеспечить надежный доступ в случае необходимости. |
Пример файла параметров:
{
"$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”
} }
}
Шаг 6. Определение уникального наименования развертывания
Определите глобально уникальное наименование развертывания. Наименование развертывания используется в качестве префикса для наименований ресурсов Azure.
Наименование развертывания должно удовлетворять следующим требованиям:
• Содержать только буквы в нижнем регистре и цифры.
• Содержать не более 20 символов.
Примеры:
• acmeaidev
• companywcaiprod
• ai2025subscracme
Шаг 7. Создание ресурсов Azure
Выполните следующую команду из каталога, содержащего файлы шаблонов ARM и сценарий помощника по развертыванию, чтобы создать необходимые ресурсы Azure:
python3 deploy-wcaia.py
--resource-group ${RESOURCE_GROUP}
--deployment-name ${DEPLOYMENT_NAME}
где:
• ${RESOURCE_GROUP} - это наименование группы ресурсов Azure.
• ${DEPLOYMENT_NAME} - уникальное наименование развертывания шаблона.
Выходные данные конфигурации из сценария помощника по развертыванию
После успешного развертывания сценарий помощника по развертыванию генерирует значения конфигурации, необходимые для соединения подключаемого модуля Windchill AI Assistant с соответствующими службами Azure. Эти значения должны быть введены во время конфигурирования подключаемого модуля.
Сценарий помощника по развертыванию предоставляет все необходимые значения конфигурации для следующих служб Azure, используемых модулем Windchill AI Assistant:
• Поиск Azure AI
• Azure OpenAI
• Хранилище Azure
При конфигурировании подключаемого модуля используйте значения, сгенерированные сценарием. Описание шагов конфигурирования см. в разделе
Конфигурирование подключаемого модуля Windchill AI Assistant.
Можно также использовать сценарий помощника по развертыванию для загрузки значений конфигурации из предыдущего развертывания, выполнив его с опцией командной строки --skip-deployment.
| • Секретный ключ клиента для участника сервиса доступен только во время создания. Если секретный ключ клиента больше не доступен, необходимо создать новый секрет клиента на портале Azure, прежде чем продолжить конфигурирование подключаемого модуля. • В редких случаях переходные "состояния гонки", внутренние для процесса развертывания Azure, могут привести к остановке сценария и сообщению об ошибке. Если это произошло, очистите все частичные установки, а затем повторно запустите сценарий развертывания. |
В следующем примере показаны выходные данные типичной конфигурации, созданные сценарием помощника по развертыванию. Фактические значения будут отличаться в зависимости от среды.
====================================
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