我想通过部署脚本获取二头肌中 vmss 的动态名称。有两个vmss,我想用
--query
过滤名称。
var azCommandGetVmmsName =
'az vmss list --resource-group ${rgMcName} --query "[?contains(name, \'workloadpool\')].name" -o tsv'
resource deploymentScript 'Microsoft.Resources/deploymentScripts@2023-08-01' = {
name: 'assign-identity-to-nodepool'
identity: {
type: 'UserAssigned'
userAssignedIdentities: {
'${identityAssginmentIdentity.id}': {}
}
}
location: location
kind: 'AzureCLI'
properties: {
azCliVersion: '2.52.0'
environmentVariables: [
{
name: 'COMMAND'
value: azCommandGetVmmsName
}
]
scriptContent: '''
vmmsName=$COMMAND
echo "name: $vmssName"
'''
retentionInterval: 'PT1H'
cleanupPreference: 'OnSuccess'
}
如果我在 powershell 和 ubuntu wsl 中本地运行该命令,它会带来预期的结果:
az vmss list --resource-group MC_(...)_westeurope --query "[?contains(name, 'workloadpool')].name" -o tsv
-> aks-workloadpool-40863341-vmss
但在天蓝色的脚本中我收到此错误:
The provided script failed with multiple errors. First error:
ERROR: argument --query: invalid jmespath_type value:
'"[?contains(name,'. Please refer to https://aka.ms/DeploymentScriptsTroubleshoot
for more deployment script information. (Code: DeploymentScriptError),
ERROR: argument --query: invalid jmespath_type value: '"[?contains(name,' (Code: DeploymentScriptError),
To learn more about --query,
please visit: 'https://docs.microsoft.com/cli/azure/query-azure-cli' (Code: DeploymentScriptError)
COMMAND
环境变量已正确解析:
也许单引号被解释为
--query
值的结尾?我该如何解决这个问题?
好吧,我通过将命令带入不带变量的脚本内容来解决它,但也许有人可以告诉为什么之前会发生这种情况:
resource deploymentScript 'Microsoft.Resources/deploymentScripts@2023-08-01' = {
name: 'assign-identity-to-nodepool'
identity: {
type: 'UserAssigned'
userAssignedIdentities: {
'${identityAssginmentIdentity.id}': {}
}
}
location: location
kind: 'AzureCLI'
properties: {
azCliVersion: '2.52.0'
environmentVariables: [
{
name: 'RG'
value: resourceGroupName
}
]
scriptContent: '''
vmmsName=$(az vmss list --resource-group $RGMC --query "[?contains(name, 'workloadpool')].name" -o tsv)
echo "name: $vmssName"
'''
retentionInterval: 'PT1H'
cleanupPreference: 'OnSuccess'
}