首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Azure cli将标记分配给资源组中的所有VM

如何使用Azure cli将标记分配给资源组中的所有VM
EN

Stack Overflow用户
提问于 2018-03-28 13:32:44
回答 2查看 1.6K关注 0票数 1

我正在尝试编写一个Azure CLI脚本,该脚本使用服务主体将我登录到门户,然后选择订阅,然后只在每个资源组中标记VM。

代码语言:javascript
复制
az login -u $service_principal_ID -p $service_principal_password --service-principal --tenant $tenant_ID

az account set --subscription $subID

az resource tag --resource-group $rg \
--tags tags.project=$project tags.owner=$owner tags.environment=$env \
--resource-type "Microsoft.Compute/virtualMachines" \
--output tsv

Azure在运行--name时会给我带来错误,但是我不想一个接一个地标记VM。

有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-28 16:05:00

我还没有真正尝试过这个(我不需要任何资源标记;)

但像这样的事应该能让你工作。

基本上,您需要传递这个命名的参数,唯一的方法就是先解析VM列表。

代码语言:javascript
复制
sample=$(az vm list --resource-group $rg )
for row in $(echo "${sample}" | jq -r '.[] | @base64'); do
    _jq() {
    echo ${row} | base64 --decode | jq -r ${1}
    }

VMName=$(_jq '.name')

az resource tag --resource-group $rg \
--tags tags.project=$project tags.owner=$owner tags.environment=$env \
--resource-type "Microsoft.Compute/virtualMachines" \
--name $VMName \
--output tsv

done

完全不相关,这可能应该被删掉--但该死的,我真的很怀念在PowerShell中这个东西是多么的容易。

票数 0
EN

Stack Overflow用户

发布于 2018-03-28 20:08:23

将所需的标记添加到资源组:

代码语言:javascript
复制
az group update -n $rg \
--set tags.project=$project tags.owner=$owner tags.environment=$env

然后,将该资源组中的所有标记应用于每个子资源:

代码语言:javascript
复制
do
  jsontag=$(az group show -n $rg --query tags)
  t=$(echo $jsontag | tr -d '"{},' | sed 's/: /=/g')
  r=$(az resource list -g $rg --query [].id --output tsv)
  for resid in $r
  do
    az resource tag --tags $t --id $resid
  done
done
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49535968

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档