news 2026/6/9 21:30:19

云平台生成自定义虚拟机镜像

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
云平台生成自定义虚拟机镜像

定制云镜像场景

私有云平台上常见的虚拟机镜像厂商提供免费的,常规之外的业务镜像需要提供官方ISO镜像由云厂商定制化完成。那具体云平台使用的镜像和ISO标准镜像有什么不同呢,为什么需要要重新定制化虚拟机镜像呢?云平台镜像并不是使用原版标准iso镜像来生成虚拟机,为了适应云平台的管理、监控、动态配置网络、注入ssh公钥、创建用户和设置密码、执行自定义脚本、动态扩容等功能性要求,需要执行镜像虚拟化操作。cloud-init就是用于云环境中虚拟机初始化工具,他的核心作用是在虚拟机首次启动时,自动完成系统配置

了解cloud-init

Cloud-init是一种开源的Linux虚拟机初始化工具,它可以快速地在AWS和OpenStack等云平台上创建虚拟机,并完成系统初始化任务,例如用户设置、密码设定、磁盘扩展、安装软件包等。启动系统时,cloud-init会从nova metadata服务或config drive中获取metadata,实现定制任务,包括但不限于:设置默认语言环境、设置实例主机名、添加ssh keys到.ssh/authorized_keys、设置用户密码、配置网络以及安装软件包等。

安装包下载地址:

Centos7下载地址: http://cloud.centos.org/centos/7/images/

Debian10下载地址: http://cdimage.debian.org/cdimage/cloud/OpenStack/current-10/ Ubuntu18下载地址: https://cloud-images.ubuntu.com/bionic/current/

在kvm环境实现虚拟机镜像制作

通过ISO生成虚拟机,然后在可以通外部网络的环境下,安装配置对应系统版本的镜像源(默认的基础repo就行),然后安装下列程序。对应的telegraf直接从本地上传一个安装即可。

前期条件
  • 准备一台KVM机器,用于制作初始的centos7镜像
  • 已为Linux云服务器绑定弹性IP。
  • 已登录Linux云服务器。
  • Linux云服务器的网卡属性为DHCP方式。

1.下载cloud-init

yum install cloud-init -y rpm -qa |grep cloud-init cloud-init -v #根据镜像原yum源来安装cloud-init比较好,或者epel中有该rpm程序包。 [root@localhost ~]# cloud-init -v /usr/bin/cloud-init 19.4 #开启cloud-init cloud-init init --local //设置开机自启动 systemctl enable cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service

2.配置cloud-init工具

编辑配置文件

配置文件中的disable_root字段为1表示为禁用,为0表示不禁用。true表示禁用,false表示不禁用。

ssh_pwauth为1,设置开放root密码远程登录并开启root用户的ssh权限。

设置disable_root值为0

lock_passwd 设置为false,false表示不锁住用户密码。

[root@centos7-2 ~]# cat /etc/cloud/cloud.cfg users: - default disable_root: 0 #是否禁用root用户 ssh_pwauth: 1 #ssh秘钥认证 #手动添加openstack列和主机名称管理 datasource_list: [ 'OpenStack' ] datasource: OpenStack: metadata_urls: ["http://169.254.169.254"] timeout: 5 max_wait: 60 preserve_hostname: flase #是否保留主机名称 manage_etc_hosts: true #管理hosts文件 #建议提前配置好网卡配置文件为dhcp获取,否则在私有云上创建的实例可能会导致获取不到IP地址; #原因是cloud-init中的自动配置网卡文件可能会导致mac地址不一致 network: config: disabled #disabled:为不透传ip,需要手动写入;enable:cloud-init会自动配置ip,需要去掉该参数 #自定义用户登录显示。 runcmd: - [ sh, -c, echo "=========Welcome To OpenStack'=========" > /root/runcmd.log ] cloud_init_modules: - ssh - migrator - bootcmd - write-files - growpart - resizefs - set_hostname - update_hostname - update_etc_hosts - rsyslog - users-groups cloud_config_modules: - mounts - locale - set-passwords - yum-add-repo - package-update-upgrade-install - timezone - puppet - chef - salt-minion - mcollective - disable-ec2-metadata - runcmd - ntp-conf cloud_final_modules: - rightscale_userdata - scripts-per-once - scripts-per-boot - scripts-per-instance - scripts-user - ssh-authkey-fingerprints - keys-to-console - phone-home - final-message - power-state-change system_info: distro: centos paths: cloud_dir: /var/lib/cloud/ templates_dir: /etc/cloud/templates/ ssh_svcname: sshd # vim:syntax=yaml chpasswd: list: | root:Cl0ud-init #设置要修改的密码,这里可以去掉root用户密码固定,False expire: False

3.安装对应软件包

监控agent等,按需安装即可,用于云平台管理云主机功能实现

yum -y install telegraf qemu-guest-agent cloud-utils-growpart acpid // ACPI服务是控制重启和关闭实例 yum -y install acpid systemctl enable acpid // 安装cloud-utils-growpart 允许分区调整 yum -y install cloud-utils-growpart //qemu-guest-agent,缩写qga。该功能支持该镜像创建的云主机可以进行修改密码和热升级的操作。 yum -y install qemu-guest-agent #自动化脚本安装有点问题,需要手动yum安装。 systemctl enable qemu-guest-agent #生成虚拟机镜像以后新建的虚拟机看这个服务启动是否成功。 // CentOS系统必须要禁用默认zeroconf路由,以便精确访问OpenStack数据源 echo "NOZEROCONF=yes" >> /etc/sysconfig/network // 配置GRUB_CMDLINE_LINUX内容 [root@centos7 ~]# vim /etc/default/grub GRUB_CMDLINE_LINUX="crashkernel=auto console=tty0 console=ttyS0,115200n8" // 保存更改 [root@centos7 ~]# grub2-mkconfig -o /boot/grub2/grub.cfg //安装telegraf来支持云管对虚拟机的监控功能 rpm -ivh telegraf-1.0.1-1.x86_64.rpm systemctl enable telegraf //提供云主机访问云硬盘的速度,宿主机安装virtIio-win(未测试) yum -y install virtio-win

4.关闭防火墙和selinux

# 关闭selinux sed -i -r 's/^(SELINUX=).*/\1disabled/' /etc/selinux/config systemctl stop firewalld.service systemctl disable firewalld.service iptables -F

5.配置网卡动态获取ip

#cat /etc/sysconfig/network-scripts/ifcfg-eth0 TYPE=Ethernet BOOTPROTO=dhcp NAME=eth0 DEVICE=eth0 ONBOOT=yes

更多云计算知识请关注公众号路途-在路上的订阅内容 :https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzY0MDIyMjExMQ==&action=getalbum&album_id=4288308068947279885&scene=126&sessionid=1765549598439#wechat_redirect

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 21:02:27

22、深入解析fwsnort:网络攻击检测与响应的利器

深入解析fwsnort:网络攻击检测与响应的利器 1. fwsnort规则激活与命令行选项 fwsnort是一款强大的工具,可将Snort规则转换为iptables策略,以增强网络安全防护。在使用fwsnort时,首先需要激活规则链,让iptables将流量引导至这些规则进行处理。 在fwsnort.sh脚本的最后部…

作者头像 李华
网站建设 2026/6/10 14:14:32

23、深入解析 fwsnort 与 psad 的协同防御机制

深入解析 fwsnort 与 psad 的协同防御机制 在网络安全领域,有效抵御各类攻击是至关重要的任务。fwsnort 和 psad 作为两款强大的工具,各自具备独特的功能,而将它们结合使用,能够显著提升网络的安全性。本文将详细介绍 fwsnort 的部署、白名单和黑名单的设置,以及如何将 f…

作者头像 李华
网站建设 2026/6/9 18:57:26

28、深入了解fwknop:安全访问的利器

深入了解fwknop:安全访问的利器 1. fwknop基础配置 fwknop是一款强大的安全访问工具,在使用前需要进行一系列的基础配置。 首先,在fwknop客户端命令行中,使用 -s 参数在SPA包中放置通配符IP地址是不被接受的。并且, REQUIRE_SOURCE_ADDRESS 需设置为 Y 。 邮件地…

作者头像 李华
网站建设 2026/6/10 12:26:48

30、网络安全中的数据可视化与端口扫描分析

网络安全中的数据可视化与端口扫描分析 在当今开放的互联网环境中,网络安全面临着诸多挑战。安全设备如入侵检测系统和防火墙在应对来自全球各地的攻击时,会产生大量的事件数据。如何从这些海量数据中提取有价值的信息,成为了安全管理员的重要任务。本文将介绍一些网络安全…

作者头像 李华
网站建设 2026/6/9 18:47:13

SolidWorks三视图设计技巧介绍

一、核心原则:从三维到二维的精准转换三视图的本质是将三维实体信息无歧义地投射到二维平面。在SolidWorks中,这并非简单的“画图”,而是三维模型在特定方向上的精确投影。理解这一点是掌握所有技巧的基础。核心思想:主视图是灵魂…

作者头像 李华
网站建设 2026/6/10 14:16:24

如何更详细地应用AI提升学习效率?——大学生实战指南

个人首页: VON 鸿蒙系列专栏: 鸿蒙开发小型案例总结 综合案例 :鸿蒙综合案例开发 鸿蒙6.0:从0开始的开源鸿蒙6.0.0 鸿蒙5.0:鸿蒙5.0零基础入门到项目实战 本文章所属专栏:《AI从0到1:普通人…

作者头像 李华