问题描述:当您选择Fedora CoreOS镜像创建了一台ECS实例A,通过实例A创建了一个自定义镜像,然后通过该自定义镜像新建了一台ECS实例B时,您为实例B设置的主机名不生效(登录实例B查看实例B的主机名与实例A的主机名相同)。
例如,您有一台Fedora CoreOS操作系统的ECS实例(实例A),主机名为test001,然后您使用该实例对应的自定义镜像新建了一台ECS实例(实例B),并且在创建实例的过程中,将实例B的主机名设置为了test002。当您成功创建并远程连接实例B后,实例B的主机名仍然为test001。
问题原因:阿里云公共镜像提供的Fedora CoreOS镜像采用操作系统官方的Ignition服务进行实例初始化配置。Ignition服务是指Fedora CoreOS与Red Hat Enterprise Linux CoreOS在系统启动时进入initramfs期间用来操作磁盘的程序。ECS实例在首次启动时,Ignition中的coreos-ignition-firstboot-complete.service会根据/boot/ignition.firstboot文件(该文件为空文件)是否存在,判断是否进行实例的初始化配置。如果文件存在,则进行初始化配置(其中包括配置主机名),并删除/boot/ignition.firstboot文件。
由于创建Fedora CoreOS实例后至少启动了一次,则对应自定义镜像中的/boot/ignition.firstboot文件已被删除。当您使用该自定义镜像新建ECS实例时,实例首次启动并不会进行初始化配置,对应的主机名称也不会发生变化。
修复方案:
说明为确保实例中数据安全,建议您在操作前先为实例创建快照。如果实例发生数据异常,可通过快照将云盘回滚至正常状态。具体操作,请参见创建快照。
当您基于Fedora CoreOS实例创建自定义镜像前,先使用root权限(管理员权限)在/boot目录下创建/ignition.firstboot文件。命令行操作说明如下:
以读写方式重新挂载/boot。
sudo mount /boot -o rw,remount创建/ignition.firstboot文件。
sudo touch /boot/ignition.firstboot以只读方式重新挂载/boot。
sudo mount /boot -o ro,remount关于Ignition相关的配置说明,请参见Ignition配置说明参考。