您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn.

Azure CLI 持久参数

Azure CLI az config param-persist 引用提供了为 Azure CLI 命令保留本地持久参数值的功能。 这样就无需连续重新键入公共参数。 例如,location 和 resource-group 是许多 CLI 命令中的必需参数,但它们对命令的意向没有影响。 当使用持久参数存储参数值时,可以减少冗余并可以显著缩短 CLI 命令语法。

CLI 使用的配置值按以下优先顺序计算,列表中位于较高位置的项优先。

  1. 命令行参数
  2. 本地工作目录中通过 az config param-persist 设置的值
  3. 环境变量
  4. 配置文件中的值,或使用 az config 进行设置

安装 Azure CLI 或打开 Azure Cloud Shell 以运行本文中所述的脚本。 如果使用 Azure CLI 的本地安装,则需要版本 2.12.0 或更高版本才能运行 az config param-persist 命令。 运行 az version 以查找安装的版本和依赖库。 若要升级到最新版本,请运行 az upgrade。 Azure Cloud Shell 始终具有最新版本的 Azure CLI。

持久参数数据文件

持久参数值保存在名为 .param_persist 的文件中,该文件存储在工作目录中。 如果使用 Azure Cloud Shell 执行 Azure CLI 命令,则工作目录位于 Azure CLI 使用的存储帐户中。 如果使用的是 Azure CLI 的本地安装,则工作目录位于本地计算机上。 在这两个位置中,.param_persist 文件都是隐藏的,不应手动更新。

持久参数存储和支持

持久参数支持以下 Azure CLI 参数。 resource_group_namelocation 参数的存储方式不同,你可以将它们添加到持久参数中,而不执行 create 命令。

持久参数 存储操作 支持的服务
location 执行任何命令 所有 Azure CLI 引用
resource_group_name 执行任何命令 所有 Azure CLI 引用
vnet_name 执行 create 命令 仅限 Azure Web 应用
storage_account_name 执行 create 命令 仅限 Azure Web 应用
webapp_name 执行 create 命令 仅限 Azure Web 应用
function_app_name 执行 create 命令 仅限 Azure Functions

使用持久参数的示例脚本

如果没有持久参数,顺序 CLI 命令必须重复相同的参数值。 启用持久参数后,可以从顺序命令中省略已存储的参数值。 在本示例的后续命令中会重复 locationresource group namestorage account name

# Reminder: function app and storage account names must be unique.

# turn persisted parameters on
az config param-persist on

# Create a resource group which will store "resource group" and "location" in persisted parameter.
az group create --name RGlocalContext --location westeurope

# Create an Azure storage account omitting location and resource group.
az storage account create \
  --name sa1localcontext \
  --sku Standard_LRS

# Create a serverless function app in the resource group omitting storage account and resource group.
az functionapp create \
  --name FAlocalContext \
  --consumption-plan-location westeurope \
  --functions-version 2

# See the stored parameter values
az config param-persist show

持久参数和全局变量比较

有两个 Azure CLI 命令可用于默认参数值:az config set defaultsaz config param-persist。 使用 az config set defaults.<option>=<value> 命令指定全局变量,例如组、位置或 Web。 使用 az param-persist 指定工作负载唯一的本地默认值。 CLI 使用存储的值来取代所需的参数。

重要

持久参数会替代全局上下文值。

参考 范围 设置 使用
az config set defaults.<option>=<value> 跨 CLI 全局划分作用域 使用 az config set defaults.<option>=<value> 设置 用于诸如日志记录、数据收集和默认参数值等的设置
az config param-persist 在本地划分作用域到特定工作目录 启用持久参数后自动设置 用于单个工作负载顺序命令。

命令示例

使用 az config param-persist 设置创建 Azure 存储帐户时使用的全局变量。

# set the global variable for resource group
az config set defaults.group=myGlobalVariableRG

# Create an Azure storage account omitting the resource group relying on the global variable value
# Substitute the storage account name parameter with a unique value
az storage account create \
  --name mystorageaccount1 \
  --location westeurope \
  --sku Standard_LRS

CLI 命令输出显示在全局变量 myGlobalVariableRG 中找到的资源组中创建了新的存储帐户。

...
},
  "primaryLocation": "westeurope",
  "privateEndpointConnections": [],
  "provisioningState": "Succeeded",
  "resourceGroup": "myGlobalVariableRG",
  "routingPreference": null,
  "secondaryEndpoints": null,
  "secondaryLocation": null,
  "sku": {
    "name": "Standard_LRS",
    "tier": "Standard"
},
...

使用 az config param-persist 设置创建 Azure 存储帐户时使用的持久参数。 如果为同一对象设置了全局变量,则持久参数将替代全局变量。

# turn persisted parameter on
az config param-persist on

# Create a resource group in order to write to persisted parameter
az group create --name myParamPersistRG --location westeurope

# Create an Azure storage account omitting the resource group relying on the persisted parameter value
# Substitute the storage account name parameter with a unique value
az storage account create \
  --name mystorageaccount2 \
  --location westeurope \
  --sku Standard_LRS

即使为资源组设置了值为 myGlobalVariableRG 的全局变量,且启用了持久参数,也会使用 myParamPersistRG 创建新的存储帐户。

...
},
  "primaryLocation": "westeurope",
  "privateEndpointConnections": [],
  "provisioningState": "Succeeded",
  "resourceGroup": "myParamPersistRG",
  "routingPreference": null,
  "secondaryEndpoints": null,
  "secondaryLocation": null,
  "sku": {
    "name": "Standard_LRS",
    "tier": "Standard"
},
...

另请参阅