初始化Windows虚拟机(KVM)的网卡IP

新创建的Windows虚拟机如果不能通过DHCP获取IP,我们就需要登录到虚拟机内手动配置,很麻烦。这个工作能自动化最好,为Windows虚拟机进行初始化通常有两种思路:

1.        通过cloudbase-init,这个是cloud-init的Windows版本。Cloudbase-init需要类似OpenStack等云平台的metadata service获取初始化数据,如果我们实际环境中没有使用这种复杂的管理平台来管理KVM虚拟机,cloudbase-init用起来就比较麻烦,需要自己构建metadata。

2.        内置初始化脚本。在系统内编写脚本,并添加到开机启动。虚拟机开机以前,在宿主机上通过guestfs工具把初始化脚本需要的数据拷进虚拟机磁盘。这种方法适合使用脚本或功能简单的自研平台创建虚拟机的情况。

Cloudbase-init的方法暂且不表,本文先演示笔者管理的环境里如何初始化Windows虚拟机的网络配置。

操作环境

宿主机操作系统CentOS7.4

虚拟机操作系统 Windows Server 2012 r2

虚拟机拥有1块网卡,我们的试验任务就是让内置脚本为这块网卡配置制定的IP。

制作虚拟机镜像

首先使用Windows Server 2012 r2的光盘ISO文件安装一台虚拟机,然后进行以下步骤:

1.     约定数据格式

文件名约定为nicinfo.ini,后续我们编写的内置脚本将读取该文件,内容格式如下:


ipsetup:1

ip:192.168.1.2

mask:255.255.255.0

gw:192.168.1.1

mac: 52:54:00:a0:d8:67

各字段意义:

ipsetup是一个标志位,控制是否进行IP配置,1表示进行,0表示不进行。因为对虚拟机来说只有第一次启动时需要配置IP,其他时间的重启都不需要,所以内置脚本需要在完成IP配置后把ipsetup置0,防止脚本再次执行;

ip、mask、gw和mac分别是IP地址,网络掩码,网关和MAC地址。

2.     编写powershell脚本

脚本名setup.ps1,可以读取并解析符合上一步中所定义格式的数据,放在路径C:\Windows\下


sleep 120

$ini = Get-Content "C:\Windows\nicinfo.ini"

$hash = @{}

foreach ($iniLine in $ini) {

$key = $iniLine.split(':',2)[0]

$value   = $iniLine.split(":",2)[1]

$hash."$key" = $value

}

$ipsetup=$hash["ipsetup"]

if($ipsetup -eq "1"){

$ip = $hash["ip"]

$mask = $hash["mask"]

$gw = $hash["gw"]

$mac = $hash["mac"]

$nic = Get-WmiObject   win32_networkadapterconfiguration -filter "MACAddress='$mac'"

$nic.EnableStatic($ip, $mask)

$nic.SetGateways($gw, 1)

$nic.SetDNSServerSearchOrder("8.8.8.8")

$ini -replace "ipsetup:1","ipsetup:0" > tmp.ini

mv -Force tmp.ini nicinfo.ini

}

开始让脚本sleep 120秒是给网卡设备启用时间,如果不等待,有可能会出现脚本在网卡起来之前就运行,导致配置IP失败。

如果ipsetup值为1,脚本就按照给定的数据设置网卡信息,并在结尾把ipsetup置0 。

3.     添加脚本开机启动

在“运行”中执行gpedit.msc,进入组策略管理,找到计算机配置->Windows设置->脚本(启动/关机),双击“启动”按钮

切换到powershell标签,点击“添加”:

添加上一步中写的脚本,然后点击确定,就添加完成了。

设置完后把虚拟机关机,现在这个镜像就可以拿来创建新的虚拟机了。

验证

在宿主机上执行以下命令:


virt-copy-in -a vmdisk.img nicinfo.ini   C:/Windows/

vmdisk.img是刚才制作好的虚拟机镜像文件。

然后把虚拟机开机,过一会登录虚拟机会发现网卡已经配置好了,

原文地址:http://blog.51cto.com/3646344/2115317

时间: 2024-10-28 13:42:18

初始化Windows虚拟机(KVM)的网卡IP的相关文章

shell 脚本创建虚拟机 并配置网卡ip地址(两个脚本)

#######################脚本1:创建虚拟机kvm##########################!/bin/bashqcow2_dir=/var/lib/libvirt/imagesread -p "请输入虚拟机号码:" num #主机号if [ $num -lt 9 ];thennum=0$num ##主机号fiif [ -z "$num" ];thenecho "错误输出"exit 1fikvm_name=host$

kvm一键shell自动生成 windows 虚拟机,无人值守操作方案(step1)

kvm一键shell自动生成 windows 虚拟机,无人值守操作方案分为四个步骤来联合完成: 第一步:开机启动脚本编写,使机器在一启动的时候能够执行该脚本,完成所有需要完成的基本操作(诸如设置密码,绑定Ip,加域,激活),这一步在单独一台机器上反复测试反复编写: 第二步:制定自动应答文件,使其能够无人自动安装,不需要人为干预:也就是消除机器第一次启动时候,需要人工选择<安装语言>,<接受许可协议>等等这些步骤: 第三步:完成以上几步,剩下就需要linux 通过virt-copy-

KVM下windows虚拟机使用virtio驱动

KVM下windows虚拟机默认disk使用的是Qemu IDE硬盘,网卡默认是rtl8139网卡.为了使kvm主机在相同的配置下,有更好的效率,可以将网卡和磁盘替换成virtio的驱动. windows的virtio驱动主要包括网卡以及磁盘的驱动,主要有三种方式,第一种是已有windows的操作系统,需要更新驱动,第二种是是安装时加载virtio驱动,第三种是直接制作virtio驱动的iso系统镜像. 一:更新virtio驱动 1.修改xml文件 原始xml文件 <disk type='fil

更改CloudStack中KVM平台的Windows虚拟机默认磁盘类型为VirtIO

前言 本文的目的是为了解决在使用CloudStack(CloudPlatform)时,基于KVM虚拟化平台,Windows虚拟机的性能低下的问题. 此性能,主要指磁盘IO和网卡性能. 相关文档 由于CS文档中,只强调了PV这个概念,根据PV模式区分使用不同的硬件接口类型.所以收集部分链接给大家扫盲. 关于PV(Paravirtualization-半虚拟化)模式的概念,请参阅: http://www.rackspace.com/knowledge_center/article/choosing-

RHEL6.4 KVM安装 网卡桥接设置 PXE无人值守安装虚拟机

实验需求:在Vmware里面安装KVM虚拟机,PXE引导无人值守安装虚拟机 --------------------------------------分割线 -------------------------------------- 1.在Vmware里面安装RHEL6.4 2.安装vmtools过程略...关闭防火墙与Selinux [[email protected] ~]# service iptables stop [[email protected] ~]# chkconfig i

windows虚拟机静态ip配置

宿主机:win10 虚拟机:win7 win7虚拟机网络适配器如下设置 虚拟机的虚拟网卡设置里,VMnet8设置如下,去掉DHCP勾选,记住网关地址 在宿主机的网络与共享中心里,该VMnet8网卡的ip地址 在win7虚拟机里网络与共享中心 网关地址与虚拟机中的一致,ip地址自己在范围内设置. 这样就虚拟机与主机互相都可以ping的通,但是虚拟机不能上网了,有待继续解决.

windows环境下一块网卡配置双Ip或者多个Ip

倘若 有 69.231和238两台机器 ,其中这两台机器的站点部署一致互相为冷备份.如果69.231挂了,只要69.238这台冷备份的机器上面部署的站点内容和69.231一致就可以通过在69.238这个机器上配置双Ip的方式进行切换! windows环境下一块网卡配置双Ip或者多个Ip

kvm安装windows虚拟机无法找到硬盘

kvm中安装linux虚拟机 #qemu-img create -f qcow2 linuxtest.qcow2 50G #virt-install --connect qemu:///system \ --name centos \ --ram 2048 \ --vcpus=2 --disk path=/home/kvm_img/centos.qcow2,device=disk,format=qcow2,bus=virtio,cache=none,size=50 \ --cdrom /mnt/

windows server 2012R2 双网卡绑定

windows server 2012R2 双网卡绑定 在目前的工作当中,对于双网卡绑定应用还是比较广泛的.双网卡绑定的好处在于,它可以实现网络的容错(主主模式.主备模式),还可以实现带宽的绑定.下面我们通过实验来实现双网卡的绑定. 实验准备:准备两个虚拟机,server01用来做目标服务器,需要两块网卡,并清除网卡上的所有配置.server02做测试服务器. 步骤一:准备至少两块网卡 首先在server01上添加一块网卡.,右键单击server01,选择配置,点击添加 选择网络适配器,下一步