1. 前言
云计算的自动化一直都是一个热门话题,无论 IaaS / PaaS / SaaS 都正在以 Everything As A Code 的方向发展,同时也诞生了很多优秀的云原生或第三方开源自动化工具,HashiCorp Packer 就是其中之一,一个镜像即代码的自动化构建镜像工具。相比开源界,云厂商更没有闲着,我软也不例外,最近在钻研 Azure Kubernetes Service 的同时发现了 Global Azure 目前在 Preview 的一个服务:Azure Image Builder(后文简称AIB)。该服务是构建在 Packer 上的 Azure 云托管服务,用户从基于 Windows 或 Linux 的 Azure 市场映像、现有自定义映像开始,添加自己的自定义项,只需提供一个描述映像的配置,将其提交给该服务,即可生成映像并进行分发,具体 Pipeline 如下图所示。好了,话不多说,第一篇博客我们来测测如何利用这个服务来构建自定义托管的 CentOS 7.7 镜像吧。
2. 前期准备工作
目前 AIB 依然是 Global Azure Preview Service,所以还存在一些限制,包括 Location 以及 OS 版本等,具体在使用 AIB 之前建议充分查看官方文档。本文我们在 Global Azure Region Southeastasia 测试 CentOS 7.7,需要准备好 Global Azure 账户,配置好 Azure CLI,该测试在 Windows Subsystem v2 Ubuntu 18.04 上运行,需要注意该实验需要在一个 Session 内运行,因为要继承所有设置的自定义变量。
3. AIB 构建自定义 CentOS 7.7 镜像
3.1 AIB / VM / Storage Feature 注册
1 | # Feature Registration |
如果命令输出结果显示相关 feature 没注册,则运行以下命令:
1 | az provider register -n Microsoft.VirtualMachineImages |
创建 RG 并设置相关环境变量:
1 | # destination image resource group |
创建 User-Assigned Managed Identity 并赋权:
1 | # create user assigned identity for image builder to access the storage account where the script is located |
3.2 修改 CentOS 7.7 模板定义文件
1 | # download the example and configure it with your vars |
3.3 创建 CentOS 7.7 镜像
该过程会创建一些中间资源,比如 “IT_DestinationResourceGroup_TemplateName” 的 RG 以及 D1v2 大小的 Staging VM,这些资源都是 AIB 自动化创建
1 | # submit the image confiuration to the VM Image Builder Service |
3.4 创建 CentOS 7.7 VM 并登陆验证
1 | az vm create \ |
4. 总结
至此,通过 AIB 自动化构建 CentOS 7.7 镜像的示例就完成了,希望能够给大家一些参考,把这个服务有机的集成利用起来。