【Azure 环境】ARM部署模板大于4MB的解决方案及Linked Template遇见存储账号防火墙无法访问
问题一:在ADF Pipeline部署ARM Template报错“Deployment failed -- the request content size exceeds the maximum size of 4MB”

【解答】
4MB是一个固定限制,不可以修改其大小。 如果Template文件太大,需要把拆分成多个后,通过Linked Template的方式部署。
在部署的时候,ARM通过main Template文件中配置的 templateLink.uri 来获取模板内容,所以这个URI必须是可以被ARM通过HTTP/HTTPS访问的地址。 如 Storage Account。


(Source Link: https://learn.microsoft.com/en-us/azure/azure-resource-manager/troubleshooting/error-job-size-exceeded?tabs=json#solution-2-simplify-template )
问题二:采用Linked Template方案,把大于4MB的ARM Template拆分成小于4MB的文件,然后存储在Storage Account. 但是由于安全原因,Storage Account 必须启用防火墙,尽管把ARM所属于的Service Tags中的所有IPv4地址添加到白名单中,但依旧回遇见 403 错误 (SASIpAuthorization)

【解答】
在部署ARM时,将由ARM服务的实例从Storage Account访问Linked Template uri, 查看ARM服务的Service Tags,存在IPv4 和 IPv6, 而在目前阶段,Storage Account不允许配置IPv6地址。
如果ARM访问模板时,其执行实例恰巧使用的IPv6地址的情况下,就会遇见403错误。

(Source: https://www.microsoft.com/en-us/download/details.aspx?id=57062)
所以,在ARM中,也明确的指出了 Linked Template 不适用于 Storage Account 打开防火墙的场景。

问题三:基于把Linked Template存放在Storage Account,但因为启用防火墙而无法访问的情况下,是否有其他的代替方案呢?
【解答】
有,使用 Template Spec,通过把main template和linked Template上传到Azure Template Spec中,通过调用az deployment group create 的方式进行调用。参考链接:https://learn.microsoft.com/en-us/azure/azure-resource-manager/templates/template-specs-create-linked?tabs=azure-powershell
上传到Azure Template Spec中有两种方式:
a.直接上传Main Template,这个过程会直接将所有的link templates作为统一的request body调用Azure API,这时候很可能会受到文件大小4MB的限制。
b.先上传link template,然后在main template中修改templateLink属性中的id为link template 在Azure 中的resource id。之后直接通过az命令对main template进行部署即可。但是这个方式有一定的弊端:通过调用main template的方式,Azure会首先将link template中的资源进行部署,在确认他们所有部署成功后进行main template的部署,经过之前的测验该方式的部署时间在30分钟左右。
关于Template Spec的权限和费用问题:
1) 需要上传template spec的话通常需要用到RBAC权限 Template Spec Contributor. 其它权限参考: https://learn.microsoft.com/en-us/azure/azure-resource-manager/templates/template-specs?tabs=azure-powershell#required-permissions
2) Template Spec is not a charged service in Azure. (Template Spec 是不收费的Azure服务)
【Azure 环境】ARM部署模板大于4MB的解决方案及Linked Template遇见存储账号防火墙无法访问的更多相关文章
- 使用ARM模板在Azure中国大规模部署DCOS集群
容器技术是目前非常流行的技术,尤其是在以Docker作为容器引擎的推动下,让容器的轻量级,可移植,自包含,隔离性等的上了一个新的台阶,目前谈及Dev/Ops,CI/CD很少能够绕过Docker的. A ...
- Azure环境中Nginx高可用性和部署架构设计
前几篇文章介绍了Nginx的应用.动态路由.配置.在实际生产环境部署时,我们需要同时考虑Nginx的高可用性和部署架构. Nginx自身不支持集群以保证自身的高可用性,商业版本的Nginx+推荐: T ...
- 部署Azure环境Web应用程序不能直接访问JSON文件解决方案
问题: 部署在Azure环境Web应用程序的JSON文件,直接通过浏览器或Web应用访问出现 404 的错误信息. 以下通过Firfox浏览器直接访问JSON文件返回的提示错误信息: “HTML 文档 ...
- 【Azure 环境】由为存储账号(Storage Account)拒绝分配权限而引出的Azure 蓝图(Blueprint)使用问题
问题描述 当打开Azure存储账号(Storage Account)门户页面时,从 "访问控制(标识和访问管理)" 页面中发现有"拒绝分配"的功能,所以就思考, ...
- 使用 Azure CLI 将 IaaS 资源从经典部署模型迁移到 Azure Resource Manager 部署模型
以下步骤演示如何使用 Azure 命令行接口 (CLI) 命令将基础结构即服务 (IaaS) 资源从经典部署模型迁移到 Azure Resource Manager 部署模型. 本文中的操作需要 Az ...
- zabbix环境搭建部署(一)
Linux高端架构师课程 Linux实战运维国内NO.1全套视频课程 QQ咨询:397824870 > 监控报警 > zabbix环境搭建部署(一) zabbix环境搭建部署(一) 监 ...
- 使用ASP.NET MVC、Rabbit WeixinSDK和Azure快速开发部署微信后台
(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:公众号后台系统和数据都基本准备妥当了,可以来分享下我是如何开发本微信公众号的后台系统了 ...
- 在 Azure 虚拟机上部署反恶意软件解决方案
本博客文章由我和我的同事 Sung Hsueh 共同撰写,Sung Hsueh 是 Microsoft Azure 计算部负责安全事项的项目经理. 本博客文章为"虚拟机扩展程序"系 ...
- 如何一步步在生产环境上部署django和vue
本文由云+社区发表 本文主要讲述了如何一步步在生产环境上部署django和vue,操作系统默认为centos 说明:后文中出现的以下字符串均表示具体的路径或者名称,含义如下: DJANGO_DIR-- ...
- Azure 项目构建 – 部署高可用的 Python Web 应用
Python 以其优美,清晰,简单的特性在全世界广泛流行,成为最主流的编程语言之一.Azure 平台针对 Python 提供了非常完备的支持.本项目中,您将了解如何构造和部署基于 Azure Web ...
随机推荐
- Flask的cookie、session
目录 七.设置cookies 7.1 设置cookie的参数 7.2 查询cookie 八.flask的session 实现session的两种思路 8.1 设置session(使用版) 8.2 设置 ...
- TienChin 活动管理-修改活动
后端 ChannelController.java @PreAuthorize("hasPermission('tienchin:channel:edit')") @GetMapp ...
- 深入浅出Java多线程(二):Java多线程类和接口
引言 大家好,我是你们的老伙计秀才!今天带来的是[深入浅出Java多线程]系列的第二篇内容:Java多线程类和接口.大家觉得有用请点赞,喜欢请关注!秀才在此谢过大家了!!! 在现代计算机系统中,多线程 ...
- (转)时代的见证:集成更新的Windows 7旗舰版、专业版镜像
制作缘起:微软曾于2019年提供过两份内部集成更新的英文旗舰版.专业版镜像(参见:集成IE11+最新补丁:微软新版Windows 7镜像泄露),方便用户安装,缩短更新过程.经我们下载安装研究发现,这两 ...
- Python Fire:自动生成命令行接口
命令行程序是平时写一些小工具时最常用的方式. 为了让命令行程序更加灵活,我们常常会设置一些参数,根据参数让程序执行不同的功能.这样就不用频繁的修改代码来执行不同的功能. 随着命令行程序功能的丰富,也就 ...
- koreanDollLikeness_v10模型下载及使用
koreanDollLikeness_v10模型 前几天给大家提供了koreanDollLikeness_v15模型的下载,最近小卷终于找到koreanDollLikeness_v10模型啊.先来说说 ...
- .NET中使用BootstrapBlazor组件库Table实操篇
前言 Table表格在后台管理应用中使用的是相当频繁的,因此找一个功能齐全的前端框架对于我们而言是非常必要的,因为封装完善的前端框架能够大大提升我们的工作对接效率.今天我们主要来讲解一下在.NET中使 ...
- 23.1 SEH之终止处理--《Windows核心编程》结构化异常处理
(structured exception handing)SEH 包含终止处理和异常处理.本章讨论终止处理. 一.终止处理 终止处理程序确保不管一个代码块(被保护代码)如何退出的,另一个代码块(终止 ...
- delphi 设置一个控件 在一个窗口的 正中间 方法
1.选中控件,右键----postion-- 最下面两个 x y 坐标,center in window
- NC23048 月月给华华出题
题目链接 题目 题目描述 因为月月是个信息学高手,所以她也给华华出了一题,让他求: \(\sum_{i=1}^N\frac{i}{\gcd(i,N)}\) 但是因为这个式子实在太简单了,所以月月希望华 ...