当前位置:首页 > CN2资讯 > 正文内容

2012 OpenStack Windows server 镜像 openstack制作镜像

12小时前CN2资讯


OpenStack 制作镜像

安装软件包

yum -y install qemu-kvm qemu-img kvm qemu-kvm-tools libvirt bridge-utils virt-install libguestfs-toolssystemctl start libvirtd #启动

自行下载Centos的ISO镜像

创建KVM虚拟机磁盘

qemu-img create -f qcow2 /data/centos.qcow2 10G # create disk image

使用以下命令创建KVM虚拟机

virt-install --name centos7 \ --ram 2048 --vcpus 1 \ --os-type linux --os-variant rhel7 --arch=x86_64 \ --network network=default,model=virtio \ --disk path=/data/centos.qcow2,format=qcow2 \ --cdrom=/data/CentOS-7.iso \ --console pty,target_type=serial \ --graphics vnc,listen=0.0.0.0,port=7788 ## 使用VNC连接宿主机的7788端口 就能看到系统安装的过程 图形化安装CentOS虚拟机,选择手动分区,且只分一个根分区 配置完成后就可以开始安装了,在CONFIGURATION中设置root密码,制作完后cloud-init可以重新设置root初始密码。大约几分钟后,即可自动完成安装配置工作,最后点击右下角的reboot重启退出虚拟机。注意:reboot后,kvm虚拟机不会重启,需要手动通过以下指令完成虚拟机重启。 # virsh start centos7 # 启动虚拟机

虚拟机操作

安装acpid软件包,并设置开机启动服务

yum install -y acpid && systemctl enable acpid # acpid是一个用户空间的服务进程, 用来处理电源相关事件,比如将kernel中的电源事件转发给应用程序,告诉应用程序安全的退出,防止应用程序异常退出导致数据损坏

配置nova console log功能

# 当操作系统内核崩溃时会报出内核系统crash出错信息,通常启动的时候一闪而过, 而此时系统还没有起来,不能通过远程工具(比如ssh)进入系统查看,我们可以通过配置grub,把这些日志重定向到Serial Console中,这样我们就可以通过Serial console来访问错误信息,以供分析和排错使用。修改配置文件/etc/default/grub,设置GRUB_CMDLINE_LINUX如下: GRUB_CMDLINE_LINUX="crashkernel=auto console=tty0 console=ttyS0,115200n8"

安装qemu-guest-agent软件包,并设置开机启动

# qemu-guest-agent是运行在虚拟机内部的一个服务,libvirt会在本地创建一个unix socket,模拟为虚拟机内部的一个串口设备,从而实现了宿主机与虚拟机通信,这种方式不依赖于TCP/IP网络,实现方式简单方便。 # 通过这种方式,宿主机可以发送指令写到socket文件中,虚拟机内部的qemu-guest-agent会轮询查看这个串行设备是否有指令,一旦接收到指令就可以执行对应的脚本,从而实现了宿主机控制虚拟机执行命令的功能,其中最常用的指令就是通过libvirt修改虚拟机密码,用法举例如下: virsh set-user-password instance-00000028 --user root --password 123123 yum install -y qemu-guest-agent && systemctl enable qemu-guest-agent

修改//etc/sysconfig/qemu-ga配置文件:

TRANSPORT_METHOD="virtio-serial" DEVPATH="/dev/virtio-ports/org.qemu.guest_agent.0" LOGFILE="/var/log/qemu-ga/qemu-ga.log" PIDFILE="/var/run/qemu-ga.pid" BLACKLIST_RPC="" FSFREEZE_HOOK_ENABLE=0

通过以下脚本,可以查看qemu-guest-agent支持的指令

  • 注意:确认包含guest-set-user-password指令,支持修改管理员密码。
virsh qemu-agent-command $vm_name '{"execute":"guest-info"}' | python -m json.tool | grep 'name' | cut -d ':' -f 2 | tr -d '",' | grep passwd

配置zeroconf

# zeroconf是一种古老的自动网络配置技术,在没有DHCP服务的年代,所有服务器都需要网管手动配置IP、hostname等,非常麻烦,zeroconf正好解决了这个问题,不过目前通常都通过DHCP获取地址了。但是,一些操作系统仍然会开启这个服务,当DHCP获取IP失败时,会尝试通过zeroconf配置。zeroconf启动时会自动创建一条路由169.254.0.0/16,而虚拟机访问metadata服务的地址正好是169.254.169.254,如果启动了zeroconf服务,由于路由冲突,虚拟机不能通过169.254.169.254路由到网络节点的metadata服务了。OpenStack虚拟机通常都是通过DHCP获取IP的,因此我们并不需要zeroconf服务。为了虚拟机能够访问metadata服务,我们必须禁止zeroconf服务。具体配置如下: echo "NOZEROCONF=yes" >> /etc/sysconfig/network echo "NETWORKING=yes" >> /etc/sysconfig/network

安装cloud-init(重要)

# cloud-init是虚拟机第一次启动时执行的脚本,主要负责从metadata服务中拉取配置信息,完成虚拟机的初始化工作,比如设置主机名、初始化密码以及注入密钥等。手动安装cloud-init并设置开机启动如下: yum install -y cloud-init && systemctl enable cloud-init #对于 Linux 镜像,cloud-init 负责 instance 的初始化工作。cloud-init 功能很强大,能做很多事情,而且我们可以通过修改配置文件灵活定制 cloud-init。
  • cloud-init 的配置文件为 /etc/cloud/cloud.cfg,这里举几个应用场景:
#1. 如果希望 root 能够直接登录 instance(默认不允许 root 登录),设置: disable_root: 0 #2. 如果希望能以 ssh passwod 方式登录(默认只能通过 private key 登录),设置: ssh_pwauth: 1 #3. 如果希望能够修改 instance 的 hostname(默认 instance 每次重启后 cloud-init 都会重新将 hostname 恢复成初始值),将cloud_init_modules 列表中下面两项删除或注释掉: - set_hostname - update_hostname #instance 每次启动 cloud-init 都会执行初始化工作,如果希望改变所有 instance 的初始化行为,则修改镜像的 /etc/cloud/cloud.cfg 文件;如果只想改变某个 instance 的初始化行为,直接修改 instance 的 /etc/cloud/cloud.cfg。
  • Set Passwords:
chpasswd: list: | centos:openstack expire: False #如果指定expire, 并且设置为 false, 则将密码全局配置键用作所有用户帐户的密码。如果指定了expire并将其设置为 true, 则用户密码将过期, 从而防止使用默认的系统密码。

安装growpart

# 虚拟机制作镜像时指定了根分区大小(比如我们设置为10GB),为了使虚拟机能够自动调整为flavor disk指定的根磁盘大小,即自动扩容, 我们需要安装glowpart(老版本叫growroot)并完成以下配置: yum install -y epel-release yum install -y cloud-utils-growpart rpm -qa kernel | sed 's/^kernel-//' | xargs -I {} dracut -f /boot/initramfs-{}.img {}# 完成以上工作后,我们的镜像配置基本结束,删除一些无用文件,清理history命令后执行关机:

宿主机操作

移除本地信息

#在宿主机上运行以下命名,移除宿主机信息,比如mac地址等。 virt-sysprep -d centos7

压缩镜像

virt-sparsify --compress $kvname.qcow2 $kvname-.qcow2

可以上传镜像了


    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/29085.html

    分享给朋友:

    “2012 OpenStack Windows server 镜像 openstack制作镜像” 的相关文章

    推荐高效的CN2 GIA VPS解决方案与商家分析

    在如今快速发展的互联网时代,对于个人用户和企业来说,服务器的选择显得尤为重要。CN2 GIA VPS,作为一种高效的虚拟专用服务器,逐渐成为许多人青睐的选择。它是什么?到底能为我们提供什么样的服务呢?我来分享一下我对CN2 GIA VPS的理解。 CN2 GIA VPS,是一种通过中国电信的CN2...

    Linode Speed Test: 提升云服务性能的关键指南

    从2003年成立以来,Linode已经在云计算领域中扮演了重要角色。作为一家美国主机服务商,它的目标是为开发者提供全面而灵活的云计算解决方案。个人开发者、小型企业甚至大型企业都能在这里找到适合自用的工具。Linode不止提供基础的主机服务,还围绕开发者的需求不断迭代产品,确保用户体验越发顺畅。 同时...

    腾讯云轻量云:简单易用的云服务器解决方案

    当我回顾腾讯云轻量应用服务器(简称轻量云)时,我觉得它真的是一款设计出色的产品。作为腾讯云推出的一项云服务,轻量云专注于轻量应用场景,强调的是“开箱即用”和“简单易用”。无论是初学者还是开发者,都能轻松上手,快速构建所需的网站或应用。 轻量云的规格多样,具有多种CPU和内存的组合选项,如2核2GB和...

    反向代理的工作原理与应用场景详解

    反向代理概述 反向代理,听起来似乎有点复杂。实际上,这是一个位于客户端和服务器之间的“中间人”,它对客户端是透明的。换句话说,客户端并不知道有这个反向代理的存在。它的主要任务是接收客户端的请求,然后把这些请求转发给后端的服务器,再把服务器的响应返回给客户端。想象一下,反向代理就像一个邮递员,负责将信...

    vi和vim的区别:选择合适的文本编辑器

    vi与vim的基本概述 在我初次接触文本编辑器时,vi这个名字总是出现在我的眼前。vi是一个非常经典的编辑器,诞生于1976年,最初是为了在Unix系统上进行文本编辑而设计的。它的界面简单,但功能强大,支持基本的文本编辑需求。我常常在命令行中打开vi,只有最基本的命令,但却能完成许多编辑工作。这种简...

    SSH Key Dmit 登录教程:快速安全的远程连接方法

    什么是 SSH Key SSH Key 是一种用于安全远程登录的认证方法,与传统的用户名和密码相比,它提供了更高的安全性。简单来说,SSH Key 是一对加密密钥,其中一个是公钥,另一个是私钥。公钥可以共享给其他人,而私钥则需严格保管。使用 SSH Key 登录时,服务器会使用公钥进行验证,确保您是...