借助 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 时,将使用该名称。
如果发布自定义映像,请记下发布过程中指定的发布者、产品/服务、SKU 和版本信息。 如果映像来自市场,可以使用
Get-AzureVMImage
cmdlet 查看信息。从 GitHub 下载示例文件。
在 Azure Stack Hub 中创建存储帐户。 完成该操作后,将创建 Blob 容器。 将访问策略设置为“公开”。
将 JSON 文件上传到新容器。 完成该操作后,可以查看 blob 的 URL。 选择 blob 名称,然后从 blob 属性中选择该 URL。
安装或升级 CLI
登录到开发工作站并安装 CLI。 Azure Stack Hub 需要 Azure CLI 2.0 版或更高版本。 最新版本的 API 配置文件需要最新版本的 CLI。 使用安装 Azure CLI 一文中所述的步骤安装 CLI。
若要验证安装是否成功,请打开终端或命令提示符窗口,并运行以下命令:
az --version
应会看到 Azure CLI 的版本,以及计算机上安装的其他依赖库。
Windows/Linux (Microsoft Entra ID)
如果使用的是 Microsoft Entra ID 作为标识管理服务,并在 Windows/Linux 计算机上使用 CLI,本部分将引导你完成 CLI 的设置。
连接到 Azure Stack Hub
运行
az cloud register
命令注册 Azure Stack Hub 环境。注册环境。 在运行
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>
使用以下命令设置活动环境。
az cloud set -n <environmentname>
将环境配置更新为使用 Azure Stack Hub 特定的 API 版本配置文件。 若要更新配置,请运行以下命令:
az cloud update --profile 2019-03-01-hybrid
使用
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>
注意
如果用户帐户已启用多重身份验证,请使用不带
-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
运行
az cloud register
命令注册 Azure Stack Hub 环境。注册环境。 在运行
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>
使用以下命令设置活动环境。
az cloud set -n <environmentname>
将环境配置更新为使用 Azure Stack Hub 特定的 API 版本配置文件。 若要更新配置,请运行以下命令:
az cloud update --profile 2019-03-01-hybrid
使用
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
命令的映像规范相匹配。