我正在尝试编写一个Azure CLI脚本,该脚本使用服务主体将我登录到门户,然后选择订阅,然后只在每个资源组中标记VM。
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 tsvAzure在运行--name时会给我带来错误,但是我不想一个接一个地标记VM。
有什么想法吗?
发布于 2018-03-28 16:05:00
我还没有真正尝试过这个(我不需要任何资源标记;)
但像这样的事应该能让你工作。
基本上,您需要传递这个命名的参数,唯一的方法就是先解析VM列表。
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中这个东西是多么的容易。
发布于 2018-03-28 20:08:23
将所需的标记添加到资源组:
az group update -n $rg \
--set tags.project=$project tags.owner=$owner tags.environment=$env然后,将该资源组中的所有标记应用于每个子资源:
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
donehttps://stackoverflow.com/questions/49535968
复制相似问题