使用 Azure CLI 管理和将资源部署到 Azure Stack Hub

适用于:Azure Stack Hub 集成系统

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

准备 Azure CLI

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

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

设置虚拟机别名终结点

可以设置一个可公开访问的终结点,用于托管 VM 别名文件。 VM 别名文件是一个 JSON 文件,它为映像提供公用名。 在使用 Azure CLI 部署虚拟机时,请使用该名称作为参数。

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

  2. 从 GitHub 下载 示例文件

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

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

安装或升级 CLI

登录到开发工作站并安装 CLI。 Azure Stack Hub 需要版本 2.0 或更高版本的 Azure CLI。 最新版本的 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时使用以下参数:

    价值 示例: DESCRIPTION
    环境名称 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 <Microsoft Entra administrator or user account. For example: username@<aadtenant>.onmicrosoft.com> --tenant <Azure Active Directory Tenant name. For example: myazurestack.onmicrosoft.com>
      

      注释

      如果用户帐户已启用多重身份验证,请使用 az login 该命令而不提供 -u 参数。 运行此命令可提供一个 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时使用以下参数:

    价值 示例: DESCRIPTION
    环境名称 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"
      

      注释

      如果用户帐户已启用多重身份验证,请使用 az login 该命令而不提供 -u 参数。 运行此命令可提供一个 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 命令派生的图像规范匹配。

后续步骤