博客园  :: 首页  :: 管理

为Azure-云准备一个基于Red Hat 8.x 的虚拟机镜像

Posted on 2021-07-20 14:41  520_1351  阅读(185)  评论(0编辑  收藏  举报

由于公司最近要求部分项目上线到Azure云上,要求操作系统使用的Redhat 8.x,而且必须加固

而在Azure官网提供的镜像中,又没有Redhat,于是只有自己自定义Redhat镜像,最后加固,作为公司通用的基础镜像

于是在此记录部分重要的注意事项,及一些重要的操作过程,使用 Hyper-V 管理器准备RHEL 8 虚拟机。

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

本文假定已经从 Red Hat 网站获取 ISO 文件并将 RHEL 映像通过Hyper-V 管理器,安装到虚拟硬盘 (VHD),RHEL 安装说明,如下:

1、Azure 不支持 VHDX 格式。 Azure 仅支持固定 VHD。

     可使用 Hyper-V 管理器将磁盘转换为 VHD 格式,也可以使用 convert-vhd cmdlet。

     如果使用 VirtualBox,则选择“固定大小”,而不是在创建磁盘时默认动态分配选项。

2、Azure 支持 Gen1(BIOS 引导)和Gen2(UEFI 引导)虚拟机。

3、VHD 允许的最大大小为 1,023 GB

4、支持逻辑卷管理器 (LVM),该管理器可以在 Azure 虚拟机中的 OS 磁盘或数据磁盘上使用。

     但是,通常建议在 OS 磁盘上使用标准分区而不是 LVM。

     这种做法可以避免 LVM 名称与克隆的虚拟机冲突,尤其是当需要将操作系统磁盘附加到另一台相同的虚拟机进行故障排除时

5、对装载通用磁盘格式 (UDF) 文件系统的内核支持是必需的。

     在 Azure 上首次启动时,附加到来宾的 UDF 格式媒体会将预配配置传递到 Linux 虚拟机。

     Azure Linux 代理必须能够装载 UDF 文件系统以读取其配置并预配虚拟机,如果没有此支持,预配将失败!

6、不要在操作系统磁盘上配置交换分区

7、Azure 上的所有 VHD 必须已将虚拟大小调整为 1MB。 从原始磁盘转换为 VHD 时,必须确保在转换前原始磁盘大小是 1MB 的倍数。

 

+++RHEL 8(使用 Hyper-V 管理器)过程++++++++++++++++++++++++++++++++++++++++++++++++++++

详细的过程,可以参考如下URL:

https://docs.microsoft.com/zh-cn/azure/virtual-machines/linux/redhat-create-upload-vhd#rhel-8-using-hyper-v-manager

1、在 Hyper-V 管理器中安装完Redhat 8.x 操作系统后,通过控制台登录上(也可以配置上网络,ssh连接上)

2、通过运行以下命令,确保网络管理器服务会在引导时启动:

sudo systemctl enable NetworkManager.service

3、将网络接口配置为在启动时自动启动,并使用 DHCP

nmcli con mod eth0 connection.autoconnect yes ipv4.method auto

4、注册 Red Hat 订阅,以通过运行以下命令来启用来自 RHEL 存储库中的包的安装(也可以后续在Azure上操作):

# sudo subscription-manager register --auto-attach --username=XXX --password=XXX
# 补充:取消注册订阅,可以运行以下命令
# sudo subscription-manager unregister

5、在 grub 配置中修改内核引导行,使其包含 Azure 的其他内核参数并启用串行控制台。

# 删除当前的 GRUB 参数:
grub2-editenv - unset kernelopts

# 在文本编辑器中编辑 /etc/default/grub,并添加以下参数
# 遇到相同的选项,可以删除,只保留如下3行即可,笔者把lvm相关的都删除了,可以正常启动的
GRUB_CMDLINE_LINUX="rootdelay=300 console=tty1 console=ttyS0,115200n8 earlyprintk=ttyS0,115200 earlyprintk=ttyS0 net.ifnames=0"
GRUB_TERMINAL_OUTPUT="serial console"
GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"

6、完成 /etc/default/grub 编辑后,运行以下命令以重新生成 grub 配置

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

# 对于启用了 UEFI 的 VM,请运行以下命令(笔者因为没有使用到,因此使用不到如下命令):
# sudo grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg

7、请确保 SSH 服务器已安装且已配置为在引导时启动(默认采用此配置)。 修改 /etc/ssh/sshd_config 以包含以下行:

ClientAliveInterval 180

最后,检查一下网卡配置文件,删除UUID或者其他选项,保障sshd服务是开机自动启动的,然后重启一下,保障系统能正常重新启动

当然还有一些其他步骤,这里先不在 Hyper-V 管理器 中操作了

8、重启没有问题,就关机,通过 Hyper-V 管理器将虚拟机磁盘格式转换为VHD,最后上传到Azure下的Blob存储中

9、使用Blob中的VDH磁盘文件,创建托管磁盘,最后再使用这个磁盘创建一个VM

10、然后根据官网文档的步骤做完善,最后生成映像,通过对映像创建的虚拟机,进行OS hardening

 

当然,这里笔者在本应该在Hyper-V 管理器上的操作,缩减了很多(只做了一些相对重要的操作),

然后放到Azure上继续完善,主要是为了快速的实现Hyper-V到Azure云,可以避免一些错误,节省时间

 

 

尊重别人的劳动成果 转载请务必注明出处:https://www.cnblogs.com/5201351/p/15034862.html