你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

在 Azure 的能源数据管理器上部署 OSDU Admin UI

本指南介绍了如何在 Azure 能源数据管理器 (ADME) 实例上部署 OSDU Admin UI。

OSDU Admin UI 让平台管理员能够为连接到的能源数据分区管理 Azure 数据管理器。 管理任务包括权利(用户和组管理)、法律标记、架构、参考数据、在地图上查看和可视化对象。

先决条件

部署选项

OSDU 管理员 UI 有两个部署选项:

  1. 使用 Azure 容器应用快速部署:使用 Azure 容器应用一键部署。 此部署是部署 OSDU 管理员 UI 的最简单、最快速的方法。 它支持公共部署和专用部署。

  2. 使用 Azure 存储帐户静态网站进行自定义部署:使用 Azure 存储帐户生成和部署 OSDU 管理员 UI。 此部署选项更具可自定义性,允许根据需要配置部署。

使用 Azure 容器应用快速部署

  1. 选择 Deploy to Azure 按钮以使用 Azure 容器应用部署 OSDU 管理 UI。

    部署到 Azure

  2. 在 Azure 门户中填写所需的参数。 有关参数的详细信息,请参阅“参数”部分了解详情。

    屏幕截图显示 Azure 门户部署窗体。

  3. 选择“查看 + 创建”,然后选择“创建”以部署 OSDU 管理员 UI

  4. 查看 Outputs 部分,了解已部署 OSDU 管理员 UI 的 URL。

  5. 使用网站 URL 配置 ADME CORS 策略应用注册 SPA 重定向 URI

  6. 在浏览器中打开 URL,并验证它是否正常工作和连接到正确的 Azure 用于能源的数据管理器实例。

参数

参数 步骤 必须
订阅 要将 OSDU 管理员 UI 部署到的 Azure 订阅。
资源组 要将 OSDU 管理员 UI 部署到的资源组。
区域 要将 OSDU 管理员 UI 部署到的 Azure 区域。
名称 OSDU 管理员 UI 实例的名称。 其他资源使用此名称作为基名称,然后追加服务缩写
容器映像 用于 OSDU 管理 UI 的容器映像。 有关可用映像,请参阅 OSDU 论坛管理员 UI 容器注册表
Osdu 终结点 要连接到的 Azure 用于能源的数据管理器或 OSDU 实例的终结点。
数据分区 ID 要连接到的 Azure 用于能源的数据管理器或 OSDU 实例的数据分区 ID。
权利域名 用于权利服务的域名。 请保留 .dataservices.energy 以进行任何 ADME 部署,仅当使用其他 OSDU 实现时才进行更新。
客户端 ID 要用于 OSDU 管理员 UI 的应用注册的客户端 ID。
范围 Azure 用于能源的数据管理器或 OSDU 使用的应用注册的范围。 如果客户端 ID 是 ADME 应用注册,则可以保留此默认值。
连接器终结点 可选:要用于管理员 UI 的 OSDU 管理员 UI 连接器 API 终结点
启用专用网络 可选:启用对 OSDU 管理员 UI 的专用网络访问
启用日志记录 可选:为 OSDU 管理员 UI 启用日志记录

使用 Azure 存储帐户静态网站自定义部署

准备计算机

  • 安装 Visual Studio Code 和开发容器。 可以使用 Linux 或适用于 Linux 的 Windows 子系统 (WSL) 从本地计算机部署 OSDU Admin UI,建议使用开发容器来避免工具版本和环境等的潜在冲突。

环境设置

  1. 使用 Visual Studio Code 中的开发容器部署 OSDU Admin UI,以避免本地计算机中的冲突。

  2. 选择 Remote - Containers | Open 打开开发容器并克隆 OSDU Admin UI 存储库。

    在远程容器中打开

  3. 同意克隆提示。

    显示克隆存储库的屏幕截图。

  4. 当系统提示要求容器配置模板时。

    1. 选择 Ubuntu
    2. 同意默认值。
    3. 不要添加任何额外的功能。
  5. 开发容器将在数分钟后运行。

    显示正在运行 devcontainer 的屏幕截图。

  6. 打开终端。

    显示打开终端的屏幕截图。

  7. 安装 Angular CLIAzure CLInpmNode 版本管理器 (NVM)

    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash && \
    export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
    [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \
    nvm install 14.17.3 && \
    export NG_CLI_ANALYTICS=false && \ 
    npm install -g @angular/cli@13.3.9 && \
    apt-get install jq -y && \
    curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
    

    显示安装的屏幕截图。

  8. 通过在终端上执行命令以登录到 Azure CLI。 它会转到登录屏幕。

    az login
    
  9. 它会转到登录屏幕。 输入凭据并成功后,你会看到一条成功消息。

    显示成功登录的屏幕截图。

  10. 验证是否使用正确的订阅。

    az account show
    
  11. 如果需要,请使用此代码更改订阅。

    az account set --subscription <subscription-id>
    

配置环境变量

  1. 在终端上输入要求的环境变量。

    export WEBSITE_NAME="" ## Unique name of the static web app or storage account that will be generated. Storage account name must be between 3 and 24 characters in length and use numbers and lower-case letters only.
    export RESOURCE_GROUP="" ## Name of resource group
    export LOCATION="" ## Azure region to deploy to, i.e. "westeurope"
    

部署存储帐户

  1. 创建资源组。 如果资源组已存在,请跳过此步骤。

    az group create \
        --name $RESOURCE_GROUP \
        --location $LOCATION
    
  2. 创建存储帐户。

    az storage account create \
        --resource-group $RESOURCE_GROUP \
        --location $LOCATION \
        --name $WEBSITE_NAME \
        --sku Standard_LRS \
        --public-network-access Enabled \
        --allow-blob-public-access true
    
  3. 配置静态网站。

    az storage blob service-properties update \
        --account-name $WEBSITE_NAME \
        --static-website \
        --404-document index.html \
        --index-document index.html
    
  4. 设置 $web 容器权限以允许匿名访问。

    az storage container set-permission \
        --name '$web' \
        --account-name $WEBSITE_NAME \
        --public-access blob
    

生成并部署 Web 应用

  1. 导航到 OSDUApp 文件夹。

    cd OSDUApp/
    
  2. 复制 Azure routing.ts 文件。

    cp providers/azure/routing.ts src/app/routing.ts
    
  3. 安装依赖项。

    npm install
    
  4. 修改位于 /src/config/config.json 的配置文件中的参数。

将环境变量的值替换为你的值。

export OSDU_ENDPOINT="" # Endpoint of the Azure Data Manager for Energy or OSDU instance to connect to
export DATA_PARTITION_ID="" # ADME Data Partition ID (i.e. opendes)
export DOMAIN_NAME=".dataservices.energy" # Domain name to use for the entitlements service. Use .dataservices.energy for any ADME deployment.
export TENANT_ID="" # Entra ID tenant ID
export CLIENT_ID="" # App Registration ID to use for the admin UI, usually the same as the ADME App Registration ID
export SCOPE="" # Scope of the ADME instance, i.e. "6ee7e0d6-0641-4b29-a283-541c5d00655a/.default"
export GRAPH_ENDPOINT="https://graph.microsoft.com/v1.0/" # Microsoft Graph API endpoint
export APPINSIGHTS_INSTRUMENTATIONKEY="" # Optional. Application Insights instrumentation key
export OSDU_CONNECTOR_API_ENDPOINT="" # Optional. API endpoint of the OSDU Connector API


jq --arg data "$DATA_PARTITION_ID" \
--arg domain "$DOMAIN_NAME" \
--arg tenant "$TENANT_ID" \
--arg client "$CLIENT_ID" \
--arg redirect "$REDIRECT_URI" \
--arg scope "$SCOPE" \
--arg endpoint "$OSDU_ENDPOINT" \
--arg graph "$GRAPH_ENDPOINT" \
--arg appinnsights "$APPINSIGHTS_INSTRUMENTATIONKEY" \
--arg connectorapi "$OSDU_CONNECTOR_API_ENDPOINT" \
'.settings.appInsights.instrumentationKey = $appinnsights |
    .settings.data_partition = $data | 
    .settings.domain_name = $domain | 
    .settings.idp.tenant_id = $tenant | 
    .settings.idp.client_id = $client | 
    .settings.idp.redirect_uri = $redirect | 
    .settings.idp.scope = $scope | 
    .settings.api_endpoints.entitlement_endpoint = $endpoint | 
    .settings.api_endpoints.storage_endpoint = $endpoint | 
    .settings.api_endpoints.search_endpoint = $endpoint | 
    .settings.api_endpoints.legal_endpoint = $endpoint | 
    .settings.api_endpoints.schema_endpoint = $endpoint | 
    .settings.api_endpoints.file_endpoint = $endpoint | 
    .settings.api_endpoints.secrets_endpoint = $connectorapi | 
    .settings.api_endpoints.graphAPI_endpoint = $graph | 
    .settings.api_endpoints.workflow_endpoint = $endpoint | 
    .settings.api_endpoints.secrets_endpoint = $endpoint | 
    .settings.api_endpoints.wddms_endpoint = $endpoint' \
src/config/config.json > src/config/temp.json
mv src/config/temp.json src/config/config.json