下边几篇准备针对Azure DevOps以及BICEP的结合搞点事情,既然是基础架构即代码,已经是代码了,自然要上CICD,Azure DevOps就是个不错的选择,当然还有Github Action,这俩现在都属于是微软的了,或者是Jenkins也都可以
这次的关注点,主要会在Azure DevOps上,BICEP的编写和部署之前基本都介绍过了,所以没必要再重复的提,主要会关注如何与Azure DevOps集成上
基础结构即代码的DevOps与应用代码类似,但又不完全一样,应用代码一般都要build才可以运行,所以CI阶段是必不可少的,但是IAC一般来说代码都是直接就可以拿来用的,所以不存在build的问题,因此理论上来说即使没有CI,只做CD也没什么毛病,那样的话其实相当于就是个自动部署的机器
但是对于真正的业务来讲,这样做其实意义并不大,还很容易产生很多问题,完全失去了CICD的意义,所以即使是对于IAC来说,也应该在CI阶段完成一些必要的任务,比如说检查、校验、测试等
微软定义的一个较为完整的BICEP的管道应该分为以下几个阶段
各个阶段的解释大致如下:
- Lint : 主要用于校验BICEP的语法,发现语法错误等明显问题
- 验证:尝试将BICEP转换为JSON文件,发现和Azure相关的问题,比如是否符合部署条件,是否缺少必要的依赖等等
- 预览: 使用 What-if 命令尝试预部署
- 部署:正式部署
- 冒烟测试:运行一些基本的检查
我们可以把这些所有步骤全都定义在一个pipeline里,也可以拆分成CI/CD两个阶段,比如可以把前边两个或者三个步骤定义为CI阶段,后边的部署和测试算作CD,这个基本是靠用户自己来定义的,只要言之有理即可
另外既然已经将基础架构代码化,那么就应该考虑版本控制等问题,借助Git等工具完成协同开发,提供可追溯的提交记录和回滚等功能,可以考虑使用包括Github,Gitlab,Azure Repo等多种代码仓库,因为用的是Azure DevOps,所以这里直接就用了Azure Repo
可以看到即使是基础架构即代码,其实要完成完整的CICD,也是需要做不少工作的
后边主要会分为CI和CD两个阶段,分别介绍在Azure DevOps上的实现过程,直至部署成功