是否可使用createUIDefinition.json与Terraform脚本创建Azure托管应用定义替代ARM模板?
Azure托管应用定义能否使用Terraform替代ARM模板的解答
可以明确告诉你:不支持直接用Terraform脚本替代官方要求的mainTemplate.json完成托管应用定义创建,但存在可行的间接实现方案。
核心规则说明
- Azure托管应用定义的部署包有强制的平台规范,必须包含两个核心文件:
createUiDefinition.json:负责门户部署环节的用户交互表单逻辑mainTemplate.json:负责实际资源部署的ARM模板
平台原生仅识别ARM格式的主部署文件,不支持直接上传.tf格式的Terraform脚本作为主部署文件使用。
Terraform的兼容实现方案
你可以将Terraform的执行逻辑封装到mainTemplate.json中,间接实现用Terraform完成资源部署的需求,操作逻辑如下:
- 将写好的Terraform脚本上传到托管应用身份有权限访问的存储位置
- 在
mainTemplate.json中调用Azure Deployment Scripts资源,配置对应托管身份完成以下操作:- 拉取预先上传的Terraform脚本
- 安装Terraform CLI工具
- 依次执行
terraform init、terraform plan、terraform apply命令完成资源部署
- 原有
createUiDefinition.json可以正常使用,你在表单中收集的用户输入参数可以通过ARM模板的参数体系传递给部署脚本,再传入Terraform变量中完成参数透传
注意事项
- 需要为部署脚本对应的托管身份分配足够的RBAC权限,确保有权限创建声明的所有Azure资源
- 需根据你的Terraform部署时长合理配置部署脚本的超时、存储账户等参数,避免执行中断
内容的提问来源于stack exchange,提问作者odin 147
相关产品推荐
相关产品推荐

