「cloud-init」- 虚拟机操作系统快速安装,虚拟机快速初始化工具

  CREATED BY JENKINSBOT

问题描述

以前,在操作系统的安装过程中:首先,我们需要准备操作系统镜像(通常是 ISO 镜像),并制作启动盘以从中启动。然后,在系统安装的过程中,用户与安装界面交互,填写必要的操作系统安装参数。最后,操作系统安装工具根据用户填写的参数完成系统安装与配置。

后来,出现无人值守安装:即预先将在以往安装过程中需要填写的操作参数写入配置文件。然后,向操作系统安装工具传递该配置文件的路径或读取方法。最后,操作系统安装工具在启动时,自动读取配置文件,以自动完成操作系统安装。

现在,我们发现:对于已安装完成的操作系统,能够通过克隆复制,直接得到可运行的操作系统。例如:对于安装到硬盘的操作系统,我们能够使用硬盘工具,直接克隆到新硬盘;对于安装到虚拟机的操作系统,我们能够直接复制虚拟机磁盘文件。所有没有必要再进行复杂、冗长的操作系统安装过程。

解决方案

cloud-init,正是这样一个工具,通过 cloud-init 装置,我们能够彻底省略安装过程,利用已完成安装的虚拟磁盘文件,更快速的完成操作系统部署过程。

cloud-init 是行业标准的跨平台云实例初始化的多分发方法,所有主要的公共云提供商、私有云基础设施的供应系统和裸机安装都支持它。多数云环境都是通过这种方式来完成操作系统的快速安装部署,我们使用的云主机多是通过 Cloud-init 进行主机初始化(查看 /etc/cloud/ 目录)。

通过各个 Linux 发行版提供的 Cloud Image,并配合我们创建的 cloud_init.cfg 来完成主机的初始化。

大致过程概述:
0)主流的 Linux 发行版似乎都提供 Cloud Image 文件,我们需要下载云镜像;
1)需要创建 cloud_init.cfg 配置文件;
2)通过 cloud-localds(或其他命令)将配置文件写入镜像;
3)使用该修改后的镜像来创建虚拟机;
4)在启动时,将自动加载 Cloud Init 配置,完成主机初始化;

原理简述

为了使用 cloud-init 装置,我们需要准备 镜像 与 配置 两样东西:
1)镜像:是已经安装完成的操作系统镜像文件(比如虚拟机磁盘 VMDK 文件),而不再需要操作系统安装镜像;
2)配置:我们再编写描述操作系统信息的配置文件,该配置文件包含 主机名、帐号密码、网络配置、磁盘配置 等等配置信息;

当镜像启动时,在镜像内置的 cloud-init 进程随之启动。然后,通过读取该配置文件,在启动过程中直接完成操作系统的配置;