ECS实例创建过程中,默认通过初始化工具自动执行一些预定义的配置任务,例如网络配置、主机名设置以及自定义脚本的执行等。如果您希望在实例启动过程中禁用某些自动执行的操作,可以根据需求自定义初始化工具的功能。本文将详细介绍Linux实例和Windows实例的初始化工具及其使用说明。
初始化工具介绍
不同类型的操作系统使用的初始化工具会有所不同,对于Linux实例,由cloud-init工具负责完成自动初始化,而Windows实例则由Vminit工具进行自动初始化。有关初始化工具的更多信息,请参见如下内容。
cloud-init工具介绍
Linux实例通过开源工具cloud-init来完成自动初始化实例。更多信息,请参见cloud-init官方文档。
在cloud-init中,定义了一系列的模块(Modules)来完成需要执行的任务和配置。每个模块都有名称、运行频率、配置参数这三大要素,其中运行频率表示该模块该在什么时候运行,通常有两种运行频率:
once-per-instance
表示仅在实例首次启动时运行;always
表示实例每次启动时都会运行。更多信息,请参见Module reference。cloud-init通过配置文件
/etc/cloud/cloud.cfg
控制实例的初始化行为,例如运行哪些模块。在运行模块时,cloud-init可以从元数据服务中获取实例的实例ID、主机名等元数据信息。以Set Hostname模块为例,实例启动时,cloud-init会读取元数据的主机名信息,并将其设置为实例的主机名。
阿里云所有公共镜像以及基于公共镜像创建的自定义镜像已默认安装cloud-init,通过公共镜像创建ECS实例会自动运行cloud-init,无需再手动安装。如果您是通过本地制作的自定义镜像创建ECS实例,且镜像未安装cloud-init,需要手动安装cloud-init,具体操作,请参见安装cloud-init。
Vminit工具介绍
Windows实例通过Vminit初始化工具完成自动初始化,该工具本质上是通过顺序执行一系列插件来完成系统的初始化配置。其中,部分插件仅在实例首次创建并启动时执行一次,而某些插件则在每次实例启动时均会执行。在使用Windows镜像创建实例的过程中,将默认自动执行Vminit所有插件的初始化功能。目前,Vminit包含10个插件,具体说明见下表。
2023年09月份及之后的Windows公共镜像以及基于公共镜像创建的自定义镜像已默认安装Vminit,通过公共镜像创建ECS实例会自动运行Vminit,无需再手动安装。如果您是通过本地制作的自定义镜像创建ECS实例,且镜像未安装Vminit,需要手动安装Vminit,保证运行该镜像的ECS实例能成功完成初始化配置。具体操作,请参见安装Vminit。
Vminit会不定期发布版本更新,以下为Vminit的版本发布信息。
Vminit版本 | 发布内容 | 发布日期 |
2.0.1.2 |
| 2024年01月 |
2.0.1.0 | 首次发布,支持插件化可配置。 | 2023年09月 |
制作镜像时自定义实例初始化配置
如果您希望在实例启动时使用自定义配置完成实例的初始化,您可以在制作镜像时,通过自定义相应的初始化工具进行配置。具体操作,请参考如下内容。
在制作镜像过程中,您可以通过自定义初始化工具完成配置的自定义,以便通过配置好的自定义镜像启动实例,有关制作Linux镜像文件的完整操作步骤,请参见制作Linux镜像文件,有关制作Windows镜像文件的完整操作步骤,请参见制作Windows镜像文件。
通过cloud-init配置文件自定义Linux实例初始化
如果您不希望在实例启动过程中自动执行某些操作,您可以通过修改cloud-init配置文件以自定义cloud-init默认初始化行为。cloud-init配置文件地址为/etc/cloud/cloud.cfg
,以下以禁用自动配置实例主机名及禁用自动配置网络初始化为例,为您介绍如何操作禁用相关模块。
禁用阿里云自动配置实例主机名
cloud-init默认会在实例启动时自动设置主机名并更新
/etc/hosts
文件,如果您不希望修改主机名以及/etc/hosts配置文件,可以按照以下操作步骤进行操作。运行以下命令,以打开cloud-init的默认配置文件,按
i
进入编辑模式。sudo vim /etc/cloud/cloud.cfg
将配置文件中的
preserve_hostname: false
修改为preserve_hostname: true
。按
Esc
键,输入:wq
,按Enter
键关闭并保存配置文件。
禁用阿里云自动配置网络初始化
如果您的cloud-init版本为18或更高版本,会自动完成网络的初始化配置,如果您不希望初始化工具自动初始化网络配置,可以按照以下操作步骤进行操作。
运行以下命令,以打开cloud-init的默认配置文件,按
i
进入插入模式。sudo vim /etc/cloud/cloud.cfg
在
Example datasource config
之前增加disabled配置,禁用cloud-init的网络自动配置功能。network: config: disabled
按
Esc
键,输入:wq
,按Enter
键关闭并保存配置文件。
通过Vminit配置文件自定义Windows实例初始化
实例创建过程中会默认自动执行Vminit所有插件的初始化功能。如果您是通过自定义镜像创建实例,且希望在实例启动过程中不自动执行某些操作,可以在制作镜像过程中禁用对应的插件。
在
C:\ProgramData\aliyun\vminit
目录下新建一个文件。该文件有如下要求:文件名称必须为
customized_config
。文件不能添加任何后缀。
给文件添加内容时,必须是JSON格式。
说明ProgramData
通常是隐藏目录,请确保启用了显示隐藏的文件、文件夹和驱动器选项,以便您能看到并正确操作隐藏项目。以下以禁用自动配置实例主机名以及初始化数据盘插件为例,为您介绍如何操作禁用相关插件。
禁用阿里云自动配置实例主机名以及初始化数据盘。
如果您不需要阿里云自动配置实例主机名以及初始化数据盘,您可以同时禁用Plugin_Main_ConfigHostname和Plugin_Main_ConfigDisk插件。在
customized_config
文件中复制如下信息(JSON格式)并保存文件。{ "disabledPlugins": ["Plugin_Main_ConfigHostname", "Plugin_Main_ConfigDisk"] }
如果您后续需要重新启用某个插件,可以在customized_config
文件中删除对应插件的配置内容。
常见问题
创建Windows实例时为什么会有一次重启动作?
原因:阿里云在创建Windows实例过程中,即使您没有指定主机名,系统也会默认分配一个主机名。而Windows实例的主机名需要系统重启才能生效,因此在创建阶段,系统会有一个重启过程。
解决方案:如果您本身不依赖阿里云修改主机名,而是由您自定义设置实例的主机名,可以通过禁用Plugin_Main_ConfigHostname插件来解决。禁用后,系统将不会为实例自动分配主机名。
Linux实例设置主机名后无需重启即可直接生效。
相关文档
您可以在创建实例时选择使用自定义数据来初始化该实例。具体操作,请参见自定义实例初始化配置。