借助 Azure CLI 管理资源并将其部署到 Azure Stack Hub

适用于:Azure Stack Hub 集成系统

按照本文中的步骤设置 Azure 命令行接口 (CLI),以从 Linux、Mac 和 Windows 客户端平台管理 Azure Stack Hub 资源。

准备 Azure CLI

虚拟机别名终结点提供了一个别名,如“UbuntuLTS”或“Win2012Datacenter”。在部署 VM 时,此别名将映像发布者、产品/服务、SKU 和版本作为单个参数引用。

以下部分介绍如何设置虚拟机别名终结点。

设置虚拟机别名终结点

可以设置一个可公开访问的终结点用于托管 VM 别名文件。 VM 别名文件是一个 JSON 文件,提供映像的公用名称。 以 Azure CLI 参数形式部署 VM 时,将使用该名称。

  1. 如果发布自定义映像,请记下发布过程中指定的发布者、产品/服务、SKU 和版本信息。 如果映像来自市场,可以使用 Get-AzureVMImage cmdlet 查看信息。

  2. 从 GitHub 下载示例文件

  3. 在 Azure Stack Hub 中创建存储帐户。 完成该操作后,将创建 Blob 容器。 将访问策略设置为“公开”。

  4. 将 JSON 文件上传到新容器。 完成该操作后,可以查看 blob 的 URL。 选择 blob 名称,然后从 blob 属性中选择该 URL。

安装或升级 CLI

登录到开发工作站并安装 CLI。 Azure Stack Hub 需要 Azure CLI 2.0 版或更高版本。 最新版本的 API 配置文件需要最新版本的 CLI。 使用安装 Azure CLI 一文中所述的步骤安装 CLI。

若要验证安装是否成功,请打开终端或命令提示符窗口,并运行以下命令:

az --version

应会看到 Azure CLI 的版本,以及计算机上安装的其他依赖库。

Azure Stack Hub Python 位置上的 Azure CLI

Windows/Linux (Microsoft Entra ID)

如果使用的是 Microsoft Entra ID 作为标识管理服务,并在 Windows/Linux 计算机上使用 CLI,本部分将引导你完成 CLI 的设置。

连接到 Azure Stack Hub

  1. 运行 az cloud register 命令注册 Azure Stack Hub 环境。

  2. 注册环境。 在运行 az cloud register 时使用以下参数:

    示例 说明
    环境名称 AzureStackUser 对于用户环境,请使用 AzureStackUser。 如果你是操作员,请指定 AzureStackAdmin
    资源管理器终结点 https://management.local.azurestack.external 集成系统中的“ResourceManagerUrl”为:https://management.<region>.<fqdn>/ 如对集成系统终结点有疑问,请联系云运营商。
    存储终结点 local.azurestack.external 对于集成系统,请使用系统的终结点。
    KeyVault 后缀 .vault.local.azurestack.external 对于集成系统,请使用系统的终结点。
    VM 映像别名文档终结点- https://raw.githubusercontent.com/Azure/azure-rest-api-specs/master/arm-compute/quickstart-templates/aliases.json 包含 VM 映像别名的文档的 URI。 有关详细信息,请参阅设置 VM 别名终结点
    az cloud register -n <environmentname> --endpoint-resource-manager "https://management.local.azurestack.external" --suffix-storage-endpoint "local.azurestack.external" --suffix-keyvault-dns ".vault.local.azurestack.external" --endpoint-vm-image-alias-doc <URI of the document which contains VM image aliases>
    
  3. 使用以下命令设置活动环境。

    az cloud set -n <environmentname>
    
  4. 将环境配置更新为使用 Azure Stack Hub 特定的 API 版本配置文件。 若要更新配置,请运行以下命令:

    az cloud update --profile 2019-03-01-hybrid
    
  5. 使用 az login 命令登录到 Azure Stack Hub 环境。 以用户身份或以服务主体的形式登录到 Azure Stack Hub 环境。

    • 以用户身份登录:

      可以直接在 az login 命令中指定用户名和密码,或使用浏览器进行身份验证。 如果帐户已启用多重身份验证,则必须采用后一种方法。

      az login -u <Active directory global administrator or user account. For example: username@<aadtenant>.onmicrosoft.com> --tenant <Azure Active Directory Tenant name. For example: myazurestack.onmicrosoft.com>
      

      注意

      如果用户帐户已启用多重身份验证,请使用不带 -u 参数的 az login 命令。 运行此命令会提供一个 URL 以及身份验证时必须使用的代码。

    • 以服务主体身份登录:

      在登录之前,请通过 Azure 门户或 CLI 创建一个服务主体,并为其分配角色。 接下来,使用以下命令登录:

      az login --tenant <Azure Active Directory Tenant name. For example: myazurestack.onmicrosoft.com> --service-principal -u <Application Id of the Service Principal> -p <Key generated for the Service Principal>
      

测试连接

完成所有设置后,使用 CLI 在 Azure Stack Hub 中创建资源。 例如,可以创建应用的资源组并添加 VM。 使用以下命令创建名为“MyResourceGroup”的资源组:

az group create -n MyResourceGroup -l local

如果成功创建了资源组,则上述命令会输出新建资源的以下属性:

资源组创建输出

Windows/Linux (AD FS)

如果使用 Active Directory 联合身份验证服务 (AD FS) 作为标识管理服务,并在 Windows/Linux 计算机上使用 CLI,可以参考本部分完成 CLI 设置过程。

连接到 Azure Stack Hub

  1. 运行 az cloud register 命令注册 Azure Stack Hub 环境。

  2. 注册环境。 在运行 az cloud register 时使用以下参数:

    示例 说明
    环境名称 AzureStackUser 对于用户环境,请使用 AzureStackUser。 如果你是操作员,请指定 AzureStackAdmin
    资源管理器终结点 https://management.local.azurestack.external 集成系统中的“ResourceManagerUrl”为:https://management.<region>.<fqdn>/ 如对集成系统终结点有疑问,请联系云运营商。
    存储终结点 local.azurestack.external 对于集成系统,请使用系统的终结点。
    KeyVault 后缀 .vault.local.azurestack.external 对于集成系统,请使用系统的终结点。
    VM 映像别名文档终结点- https://raw.githubusercontent.com/Azure/azure-rest-api-specs/master/arm-compute/quickstart-templates/aliases.json 包含 VM 映像别名的文档的 URI。 有关详细信息,请参阅设置 VM 别名终结点
    az cloud register -n <environmentname> --endpoint-resource-manager "https://management.local.azurestack.external" --suffix-storage-endpoint "local.azurestack.external" --suffix-keyvault-dns ".vault.local.azurestack.external" --endpoint-vm-image-alias-doc <URI of the document which contains VM image aliases>
    
  3. 使用以下命令设置活动环境。

    az cloud set -n <environmentname>
    
  4. 将环境配置更新为使用 Azure Stack Hub 特定的 API 版本配置文件。 若要更新配置,请运行以下命令:

    az cloud update --profile 2019-03-01-hybrid
    
  5. 使用 az login 命令登录到 Azure Stack Hub 环境。 可以用户身份或以服务主体的形式登录到 Azure Stack Hub 环境。

    • 以用户身份登录:

      可以直接在 az login 命令中指定用户名和密码,或使用浏览器进行身份验证。 如果帐户已启用多重身份验证,则必须采用后一种方法。

      az cloud register  -n <environmentname>   --endpoint-resource-manager "https://management.local.azurestack.external"  --suffix-storage-endpoint "local.azurestack.external" --suffix-keyvault-dns ".vault.local.azurestack.external" --endpoint-vm-image-alias-doc <URI of the document which contains VM image aliases>   --profile "2019-03-01-hybrid"
      

      注意

      如果用户帐户已启用多重身份验证,请使用不带 -u 参数的 az login 命令。 运行此命令会提供一个 URL 以及身份验证时必须使用的代码。

    • 以服务主体身份登录:

      准备要用于服务主体登录的 .pem 文件。

      在创建主体的客户端计算机上,使用位于 cert:\CurrentUser\My 的私钥将服务主体证书导出为 pfx。 证书名称与主体名称相同。

      将 pfx 转换为 pem(使用 OpenSSL 实用工具)。

      登录到 CLI:

      az login --service-principal \
      -u <Client ID from the Service Principal details> \
      -p <Certificate's fully qualified name, such as, C:\certs\spn.pem>
      --tenant <Tenant ID> \
      --debug 
      

测试连接

完成所有设置后,使用 CLI 在 Azure Stack Hub 中创建资源。 例如,可以创建应用的资源组并添加 VM。 使用以下命令创建名为“MyResourceGroup”的资源组:

az group create -n MyResourceGroup -l local

如果成功创建了资源组,则上述命令会输出新建资源的以下属性:

资源组创建输出

已知问题

在 Azure Stack Hub 中使用 CLI 时存在一些已知的问题:

  • CLI 交互模式。 例如,az interactive 命令在 Azure Stack Hub 中尚不受支持。
  • 若要获取 Azure Stack Hub 中可用的 VM 映像列表,请使用 az vm image list --all 命令,而不是 az vm image list 命令。 指定 --all 选项可确保响应只返回 Azure Stack Hub 环境中可用的映像。
  • Azure 中可用的 VM 映像别名可能不适用于 Azure Stack Hub。 使用 VM 映像时,必须使用整个 URN 参数 (Canonical:UbuntuServer:14.04.3-LTS:1.0.0),而不是映像别名。 此 URN 必须与派生自 az vm images list 命令的映像规范相匹配。

后续步骤