我正在创建一些默认"拖放"我们的开发人员的模板,一个部分是必需的标签。大多数标签引用变量:简单易用。但是人们想要引用资源本身,我无法想出办法。有没有人有任何建议?
标签本身被称为" Context"它的价值应该是"类型"它所在的资源,例如, " Microsoft.Web / serverfarms&#34 ;.这有助于计费。显然,我可以为每种资源类型创建一个不同的模板(考虑到不同资源的数量不是很理想),或者依赖开发人员手动更新字段(不理想,因为依赖它们手动添加标记还没有工作到目前为止,在很多情况下),但我试图自动化它。
从[变量('< variablename>')]函数推断,我确实尝试了[资源('类型')]但Azure抱怨说"资源不是有效的选择"。我以为它可能会抱怨它无法分辨哪个资源,但它没有达到那么远。到目前为止,互联网搜索还没有任何有用的东西。
答案 0 :(得分:0)
我也找不到干净利落的方法(我希望有人纠正我!这也是我们的话题)。 reference
和resourceId
函数看起来很有前景,但两者都在resources
块内不可用,需要一些解析,还需要api版本,你可能还需要改变它资源,所以你只是回到你开始的地方。 ARM甚至不会让你使用变量作为资源类型属性(可能是件好事),所以这个选项也不行。
因此,您要么必须与您的团队一起生活,不得不手动替换那一块文本或寻求其他选择。
最简单的想法是用一种理解JSON的语言编写脚本。该脚本读取模板,将标记添加到资源,然后再次保存模板。
类似的方法是在部署资源之后通过编写循环遍历所有资源并确保它们具有标记的脚本来执行此操作。如果您担心错过它,您可以使用自动化定期安排。如果您使用脚本部署模板,则也可以在该脚本中添加它。
你可能会对嵌套模板做一些事情,但你可能不会让任何人的生活更轻松或使这个过程更可靠。
答案 1 :(得分:0)
这可能可以通过某些Powershell specifically around Resource and Resource Group实现。将需要在订阅或可能仅在资源组级别运行Get-AzResource。然后从对象返回中拉出ResourceType字段,并使用Set-AzResource命令从上方传入ResourceID,并将新标签映射到returnedResourceType字段。