Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用变量时,通过Azure CLI将多个标记分配给资源会导致一个大标记_Azure_Azure Virtual Machine_Azure Cli - Fatal编程技术网

使用变量时,通过Azure CLI将多个标记分配给资源会导致一个大标记

使用变量时,通过Azure CLI将多个标记分配给资源会导致一个大标记,azure,azure-virtual-machine,azure-cli,Azure,Azure Virtual Machine,Azure Cli,当通过az cli(bash)创建带有标记列表的VM时 首先设置此变量: tags='env=qa servertype=frontend Distinct=qa-frontend25 CI=Yes DataDog:True' 但是,在bash shell中运行以下命令时 AZVM创建--标记“${tags}” 它创建一个长标记,该标记具有keyenv和valueqa servertype=frontenddistinct=qa-frontend25 CI=Yes DataDog=True

当通过az cli(bash)创建带有标记列表的VM时

首先设置此变量:
tags='env=qa servertype=frontend Distinct=qa-frontend25 CI=Yes DataDog:True'

但是,在bash shell中运行以下命令时

AZVM创建--标记“${tags}”

它创建一个长标记,该标记具有key
env
和value
qa servertype=frontenddistinct=qa-frontend25 CI=Yes DataDog=True

来自Azure CLI

--标签
“key[=value]”格式的空格分隔标记。


这里缺少什么?

如果要为一个VM创建多个标记,应添加参数
--tags
,如下所示:

--tags 'tag1=test1' 'tag2=test2'
tags="tag1=test1 tag2=test2"

az vm create -g resourceGroupName -n vmName --image image --tags $tags
--tags $tags -> --tags tag1=test1 tag2=test2
结果如下:

--tags 'tag1=test1' 'tag2=test2'
tags="tag1=test1 tag2=test2"

az vm create -g resourceGroupName -n vmName --image image --tags $tags
--tags $tags -> --tags tag1=test1 tag2=test2

它还显示在您提供的文档
az vm create
中。你有个误会

--标记以“键[=值]”格式分隔的标记。使用“”清除现有标记

更新

是的,您可以在变量中设置多个标记,并在命令中使用它,如下所示:

--tags 'tag1=test1' 'tag2=test2'
tags="tag1=test1 tag2=test2"

az vm create -g resourceGroupName -n vmName --image image --tags $tags
--tags $tags -> --tags tag1=test1 tag2=test2
它将很好地工作,并回答@Johan,如果你删除引号,它也会工作。这是一个很好的问题。实际上,该变量在CLI命令中的工作方式如下:

--tags 'tag1=test1' 'tag2=test2'
tags="tag1=test1 tag2=test2"

az vm create -g resourceGroupName -n vmName --image image --tags $tags
--tags $tags -> --tags tag1=test1 tag2=test2

就像在bash中使用echo$tags一样。

没有您想要的那么花哨,但是这里有一个我以前使用过的,并且确认仍然有效

tags1="tag1=test1"
tags2="tag2=test2"
az vm create -n MyVm2 -g MyResourceGroup --image UbuntuLTS --tags $tags1 $tags2

尚未找到将标记分组为一个变量的方法


希望这有帮助。

我仍然希望这样使用上面的
标记
变量。如果删除变量扩展周围的引号会发生什么?这在Azure CLI中似乎不起作用。如果我使用--tags$tags(with$tags=“dev unit=it priority=low”),我会遇到与OP相同的问题,命令输出的输出显示:(snip)“tags”:{“environment”:“dev unit=it priority=low”},(snip)如果我使用--tags“dev unit=it priority=low”,则标记设置正确,命令输出显示:(snip)“tags”:{“environment”:“dev”,“priority”:“low”},(snip)@Paul我认为您在Windows PowerShell或命令行中使用CLI。因此您需要遵循Windows规则来定义变量。还有问题吗?或者如果答案有用,您可以接受。这在Azure CLI中似乎不起作用。如果我使用--tags$tags(with$tags=“tag1=value1 tag2=value”)我与OP有相同的问题,命令的输出显示:(snip)如果我使用--tags