2012 OpenStack Windows server 镜像 openstack制作镜像
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指令,支持修改管理员密码。
配置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,这里举几个应用场景:
- Set Passwords:
安装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可以上传镜像了
openstack制作windows server 2012镜像
Windows Server 2012 R2 Shutting down service:Windows Modules Installer 卡住windows server 2012 r2系统
Windows Server 2012---Windows Server Backup安装和使用Windows Server backup
Hyper-V Comparison:Windows Server 2008 R2 vs Windows Server 2012Microsoft Hyper-V Server 2012 R2
升级Windows Server 2008 R2 Hyper-V 主机到Windows Server 2012Microsoft Hyper-V Server 2012 R2
windows server 2016打开服务器管理器提示windows server essentials windows server2016服务器管理器怎样使用
windows 10 制作招聘系统镜像windows系统镜像制作
SQL Server HA - Install SQL Server 2012 on a Windows Server 2012 Cluster
部署Windows Server Update Services(WSUS)服务器Windows Server Update Services
Windows Server 2012 就地升级至 Windows Server 2012 R2 Preview windows server2012 R2