如何在Azure CLI命令的az vm扩展中使用动态变量

时间:2018-05-30 07:37:04

标签: azure azure-virtual-machine azure-cli

我想使用Azure CLI命令运行脚本。

我正在使用以下命令来执行此操作。

执行命令: -

az vm extension set --resource-group rg1 --vm-name test --name CustomScript --publisher Microsoft.Azure.Extensions --version 2.0 --protected-settings '{"fileUris": ["https://test.blob.core.windows.net/testcontainer/test.sh?st=2018-05-28T19%3A56%3A00Z&se=2018-05-30T19%3A56%3A00Z&sp=r&sv=2017-04-17&sr=b&sig=LsAmSVWmggcBYXs7XwUhdA16HfSChi6%2FvH0vqjZMS%2F1YM%3D"], "commandToExecute": "bash test.sh 1 2 3"}'

我想使用如下命令在命令中传递变量并收到以下错误

  

SCRIPT_LOCATION =“https://test.blob.core.windows.net/testcontainer/test.sh?st=2018-05-28T19%3A56%3A00Z&se=2018-05-30T19%3A56%3A00Z& SP = R&安培; SV = 2017年4月17日&安培; SR = b和= SIG%LsAmSVWmggcBYXs7XwUhdA16HfSChi6%2FvH0vqjZMS%2F1YM 3D”   SCRIPT_NAME =“test.sh”PARAM1 =“test1”PARAM2 =“test2”PARAM3 =“test3”

执行命令: -

az vm extension set --resource-group rg1 --vm-name test --name CustomScript --publisher Microsoft.Azure.Extensions --version 2.0 --protected-settings '{"fileUris": [$SCRIPT_LOCATION], "commandToExecute": "bash $SCRIPT_NAME $PARAM1 $PARAM2 $PARAM3"}'

错误: -

  

部署失败。相关ID:72859669-9cdf-4bb0-9aac-1a6af52c7e1c。 VM报告失败的时候   处理扩展'CustomScript'。错误消息:“启用失败:   无法获得配置:json验证错误:无效的受保护   设置JSON:fileUris.0:与'uri'格式不匹配。

2 个答案:

答案 0 :(得分:1)

我可以使用以下命令解决上述问题。以下命令效果很好。

az vm extension set --resource-group rg1 --vm-name test --name CustomScript --publisher Microsoft.Azure.Extensions --version 2.0 --protected-settings "{\"fileUris\": [\"$SCRIPT_LOCATION\"], \"commandToExecute\": \"bash $SCRIPT_NAME $PARAM1 $PARAM2 $PARAM3\"}"

答案 1 :(得分:0)

下面是一种不同的方式,我喜欢,因为它避免了需要转义双引号(所以JSON有效载荷是更可读的):

az vm extension set --name DSC --publisher Microsoft.Powershell --version 2.9 --vm-name DC -g $resourceGroupName \
    --settings '{"ModulesURL": "'${artifactsURI}'dsc/ConfigureDCVM.zip", "configurationFunction": "ConfigureDCVM.ps1\\ConfigureDCVM", "Properties": {"domainFQDN": "'${domainFQDN}'", "PrivateIP": "10.0.1.4"} }' \
    --protected-settings '{"Properties": {"AdminCreds": {"UserName": "'${adminUserName}'", "Password": "'${adminPassword}'" }, "AdfsSvcCreds": {"UserName": "'${adfsSvcUserName}'", "Password": "'${serviceAccountsPassword}'" }}}'