一,引言

  上一篇文章有介绍到 Azure Bicep 的部署问题,文中也只是演示部署范围为 Sub,并将演示的 Azure Resource Group 到 Azure。给定 Bicep 文件,可以部署的范围很多,“资源组”,“订阅”,“管理组”,“租户”。那么今天的文章主要是分享部署 Azure Bicep 的不同方法。

参考文档:使用 Bicep 和 Azure CLI 部署资

注意:若要部署 Bicep 文件,需要安装 Azure CLI 2.20.0 或更高版本

--------------------我是分割线--------------------

1,Azure Bicep 开发利器

2,Azure Bicep(二)语法简介

二,正文

1,参数定义

每个参数需要一个名称和类型,参数不能和同一部署范围内的变量,资源,输出或者其他参数同名。

常用的参数类型都包括:“string”,“int”,“bool”,“object”,“array” 等

需要注意的是 Bicep 文件中的必要参数和可选参数,我们可以通过定义 Azure Web App 为例

//targetScope='resourceGroup' Default Deplay Target
param webAppName string = toLower('cnbateblogweb')
param webSiteName string=toLower('${webAppName}-appservice')
param runtime string='.NET 6'
param webAppPlanName string =toLower('${webAppName}-appserviceplan')
param location string = resourceGroup().location // Location for all resources resource appServicePlan 'Microsoft.Web/serverfarms@2020-12-01' = {
name: webAppPlanName
location: location
sku: {
name: 'F1'
capacity: 1
}
} resource webApplication 'Microsoft.Web/sites@2018-11-01' = {
name: webSiteName
location: location
properties: {
serverFarmId: appServicePlan.id
siteConfig:{
linuxFxVersion:runtime
}
}
}

如果我们需要为参数提供不同的值,即可针对不同环境重复使用Bicep 文件,资源管理器会在启动部署操作之前解析参数值,只要参数,资源管理器就会将其替换为解析的值。

2,部署范围

文章的最开始也将到了,如果我们需要利用Azure CLI 部署 Bicep,就得使用 Azure CLI 2.20或者更高版本

范围 部署命令
资源组 az deployment group create
管理组 az deployment mg create
租户 az deployment tenant create
订阅 az deployment sub create

重点:需要注意的是,Bicep 文件中的 targetScope 和 执行Azure CLI  部署 Bicep 文件的部署命令一致。开始之前,使用 azure login 建立连接关系。

如果要部署不村子的资源组,得先利用 Azure CLI 创建资源组(az group create --name xxxxx -location xxxxxxx),然后再部署本地 Bicep 文件。(参考上述表格的内容)

3,部署过程

在部署 Bicep 文件时,我们需要(不是必须的)为当前部署指定部署名称,此名称可以帮助我们从部署历史记录中检索该部署。如果没有为部署提供名称,将使用 Bicep 文件的名称。

我们在每次运行部署时,就会有一条包含部署名称的条目会添加到资源组的部署历史记录中。 如果运行另一个相同的名称部署,则会将先前的条目替换为当前部署。 如果要在部署历史记录中保持唯一条目,请为每个部署指定唯一名称。

所以,我们要注意的是,为避免与并发部署冲突并确保部署历史记录中的条目是唯一的,我们需要为每个部署指定唯一的名称。

4,回滚

此功能只能用于资源组部署。 它不支持订阅、管理组或租户级别的部署。如果指定的较早部署在部署历史记录中不存在,则回滚将返回错误。如果我们要使用此选项,那么部署在部署历史记录中必须具有唯一名称。 只有唯一名称才能标识特定的部署。 如果没有唯一名称,失败的部署可能会覆盖历史记录中的成功部署。

1)如果需要回滚到最后一个成功的部署(添加 --rollback-on-error 参数作为标志

az deployment group create  --name xxxxx  --resource-group xxxxx --template-file xxxxx.json  --rollback-on-error

2)如果需要回滚到特定的部署(添加 --rollback-on-error 参数并提供部署名称作为标志

az deployment group create  --name xxxxx  --resource-group xxxxx --template-file xxxxx.json  --rollback-on-error deployment01

5,部署历史

1)列出资源组部署

az deployment group list --resource-group xxxxx

2)获取特定部署

az deployment group show --resource-group xxxxx --name deployment01

............

同时,我们还可以通过Azure 资源管理器查看部署历史,检查过去的部署中的特定操作和部署的资源

重点:个资源组的部署历史记录限含 800 个部署。 接近限制时,将自动从历史记录中删除部署。

三,结尾

今天,我们只是从常用语法上介绍了Azure Bicep,从参数的声明,到部署过程,再部署历史,最后到回滚。其中的还有很多语法文中没有体现出来,大家可以自行查看文章开始的参考链接。下一篇将从实际开始,通过代码演示的方式分享操作。本文所分享的内容也存在着很多我自己的一些理解,有理解不到位的,还包含,并且指出不足之处!!!!!*★,°*:.☆( ̄▽ ̄)/$:*.°★* 。

作者:Allen

版权:转载请在文章明显位置注明作者及出处。如发现错误,欢迎批评指正。

Azure Bicep(二)语法简介的更多相关文章

  1. Azure Bicep(三)变量控制

    一,引言 当我们在使用 Azure Bicep 的时候会出现以下几个问题: 1)文件中有很多地方会重用很多相同的值 2)输入参数可以在统一的地方进行修改 带着这些问题,我们开始今天的内容,学习如何在 ...

  2. Android系统Recovery工作原理之使用update.zip升级过程---updater-script脚本语法简介以及执行流程(转)

    目前update-script脚本格式是edify,其与amend有何区别,暂不讨论,我们只分析其中主要的语法,以及脚本的流程控制. 一.update-script脚本语法简介: 我们顺着所生成的脚本 ...

  3. ROS Learning-032 (提高篇-010 Launch)Launch 深入研究 --- (启动文件编程)ROS 的 XML语法简介

    ROS 提高篇 之 Launch 深入研究 - 01 - 启动文件的编程 - ROS 的 XML语法简介 我使用的虚拟机软件:VMware Workstation 11 使用的Ubuntu系统:Ubu ...

  4. Android系统Recovery工作原理之使用update.zip升级过程分析(九)---updater-script脚本语法简介以及执行流程【转】

    本文转载自:http://blog.csdn.net/mu0206mu/article/details/7465603       Android系统Recovery工作原理之使用update.zip ...

  5. freemarker语法简介

    ftl是一种模板标记语言,用于渲染数据,输入html结构.语法简介如下: ${book.name} ${book.name?if_exists} //值是否存在 ${book.name??} //值是 ...

  6. protobuf语法简介2

    protobuf语法简介2 1.optional的字段和默认值 如上所述,消息描述中的一个元素可以被标记为"可选的"(optional).一个格式良好的消息可以包含0个或一个opt ...

  7. protobuf 语法简介

    protobuf 语法简介 1.基本语义 在.proto文件中,最基本的数据类型为message,如其定义所示,由message引导,之后是message类型的名字,之后是由{}包含的各个域(fiel ...

  8. ES6常用语法简介import export

    ES6常用语法简介import export let与var用法区别 //var var a = []; for (var i = 0; i < 10; i++) { a[i] = functi ...

  9. 【ABAP系列】SAP ABAP7.40新语法简介第一篇

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP7.40新语法简 ...

随机推荐

  1. 演练:创建和使用自己的动态链接库 (C++)

    此分布演练演示如何使用 Visual Studio IDE 通过 Microsoft C++ (MSVC) 编写自己的动态链接库 (DLL). 然后,该演练演示如何从其他 C++ 应用中使用 DLL. ...

  2. 09.SpringMVC之类型转换

    一. 类型转换器 前端传入的值,从表单中传入的值,都是字符串或者是字符串数组的形式传入的,在后端需要进行手动的转换类型,然后才能正确的使用. 框架一般对常见的数据类型的转换进行了封装提供,如字符串转换 ...

  3. 通用Mapper学习

    <通用Mapper>部分注解    @Table(name="tableName")用法: 这个注解写在实体类的上面 指定数据库表的名字作用: 建立实体类和数据库表之间 ...

  4. hive简单数据分析

    简单查询分析 select brand_id from user_log limit 10; -- 查看日志前10数据 好像也没啥,和SQL相同,,limit取前多少条  , as取别名 查询条数统计 ...

  5. Wiring in Spring: @Autowired, @Resource and @Inject 区别

    refer:https://www.baeldung.com/spring-annotations-resource-inject-autowire 主要是查找顺序不一致: @Resource Mat ...

  6. jdbc操作mysql(二):封装

    案例四:封装共有操作 封装一个数据库的会话的类 import java.sql.*; public class ConnectionUtil { /** * 获取连接对象的方法,返回一个Connect ...

  7. Ansible基础使用

    原文转自:https://www.cnblogs.com/itzgr/p/10233932.html作者:木二 目录 一 Ansible命令用法 1.1 免密钥 1.2 Ad-Hoc基础命令 1.3 ...

  8. git clone 设置临时的 proxy

    export ALL_PROXY=socks5://127.0.0.1:1086 git clone --depth 1 https://github.com/xxx/xxx.git unset AL ...

  9. 电子设备的使用方法-第5版(佳明智能腕表小米手机联想轻薄笔记本群晖存储)我的腾讯QQ电子邮箱地址是 595076941@qq.com - 2021年9月5日

      电子设备的使用方法-第5版   (佳明智能腕表小米手机联想轻薄笔记本群晖存储) 2021年9月5日 我的腾讯QQ电子邮箱地址是  595076941@qq.com 前言 大家好,我叫徐晓亮,今天我 ...

  10. java9的JShell小工具和编译器两种自动优化

    一.按顺序逐步执行的脚本程序: 二.编译器自动优化 1.不超数据类型范围编译器自动添加强转操作: 2.一但发生运算,byte/short/char都会自动提升为Int,当只有常量参与运算时,编译器会先 ...