在最近的工作中,需要创建一批类似的机器。在VMware中创建了模板,然后根据自义向导部署之后,发现可以快速的完成新vm的部署。系统中的计算机名,IP地址都可以自动的完成更新。唯一的缺点是,系统自带的向导每次只能完成一台vm的安装。所以,必须寻找合适的方法,使得这个工作可以批量完成。

文章地址    https://blog.csdn.net/qishine/article/details/83961039

首先需要在Windows的powershell上安装VMware的Powercli。以管理员身份运行一个powershell的窗口,输入以下命令:

Install-Module -Name VMware.PowerCLI -AllowClobber

系统会提示是否要从不信任的源来安装模块,输入Y回车之后就开始自动安装了。

等待安装完毕后,可以查看当前安装的PowerCLI版本

Import-Module VMware.PowerCLI

Get-Module | FT -autosize

接下去就可以使用powershell对vCenter操作了。

Connect-VIServer -Server 10.10.10.10 -Username administrator@vsphere.local -Password YourPassword

由于我有多台vCenter需要管理,在对话框中输入Y,以确保每次都要我输入连接的服务器。

由于Linux系统在使用模板功能部署时,由于MAC地址改变会引起网络不可用。需要修改/etc/udev/rules.d/70-persistent-net.rules文件才可以。所以,我们要充分利用vCenter的Customization Specications能来创建虚拟机。

在VMware中我们需要创建一个Customization Specifications用于虚拟机部署的基准配置。Customization Specifications分为三种,Fixed, Custom,VM。经过测试,其中Fixed可以正常用于我们自定义vm的部署。

New-OSCustomizationSpec -NamingScheme Fixed -OSType Linux -DnsServer 114.114.114.114,8.8.8.8 -Domain qishine.csdn -NamingPrefix $osname -Type Persistent -Name $Customization

接下去需要对现有的Customization Specification创建映射,映射的字段我们需要在csv文件中事先准备好。

Get-OSCustomizationSpec $Customization | Get-OSCustomizationNicMapping | Set-OSCustomizationNicMapping -IpMode UseStaticIp -IpAddress $IPAddress -SubnetMask $Subnetmask -DefaultGateway $DefaultGW

然后就可以根据我们预先定义的参数来创建并配置虚拟机了

New-VM -Name $VMName -OSCustomizationSpec $Customization -Template $Template -VMHost $VMHost -DiskStorageFormat $disktype -Datastore $Datastore -ResourcePool $ResourcePool | Set-VM -NumCpu $CPU -MemoryMB $Memory -Confirm:$false -RunAsync

Get-VM -Name $VMName | Get-NetworkAdapter | Set-NetworkAdapter -NetworkName $VLAN -Confirm:$false

整个CSV文件是这样的

name host datastore template customization ipaddress subnetmask defaultgw dns1 dns2 vlan mem cpu resourcepool osname disktype
10.11.24.78-vm1 10.11.24.131 datastore1 (19) CentOS6.8 VM2 10.11.24.78 255.255.255.0 10.11.24.254 114.114.114.114 8.8.8.8 VM Network 1024 2 All qishine-csdn1 Thick
10.11.24.79-vm2 10.11.24.131 datastore1 (19) CentOS6.8 VM2 10.11.24.79 255.255.255.0 10.11.24.254 114.114.114.114 8.8.8.8 VM Network 1024 2 All qishine-csdn2 Thick
10.11.24.80-vm3 10.11.24.131 datastore1 (19) CentOS6.8 VM2 10.11.24.80 255.255.255.0 10.11.24.254 114.114.114.114 8.8.8.8 VM Network 1024 2 All qishine-csdn3 Thick

然后将以下内容保存成ps1文件

$vms = import-csv -path "D:\VM\Deployvm2.csv"

foreach ($vm in $vms){

$VMName = $vm.name

      $VMHost = $vm.host

      $Datastore = $vm.datastore

      $Template = $vm.template

      $Customization = $vm.customization

      $IPAddress = $vm.ipaddress

      $Subnetmask = $vm.subnetmask

      $DefaultGW = $vm.defaultgw

      $DNS1 = $vm.dns1

      $DNS2 = $vm.dns2

      $VLAN = $vm.vlan

      $Memory = $vm.mem

      $CPU = $vm.cpu

      $ResourcePool = $vm.resourcepool

      $osname = $vm.osname

      $disktype = $vm.disktype

    New-OSCustomizationSpec -NamingScheme Fixed -OSType Linux -DnsServer 114.114.114.114,8.8.8.8 -Domain qishine.csdn -NamingPrefix $osname -Type Persistent -Name $Customization

    Get-OSCustomizationSpec $Customization | Get-OSCustomizationNicMapping | Set-OSCustomizationNicMapping -IpMode UseStaticIp -IpAddress $IPAddress -SubnetMask $Subnetmask -DefaultGateway $DefaultGW

    New-VM -Name $VMName -OSCustomizationSpec $Customization -Template $Template -VMHost $VMHost -DiskStorageFormat $disktype -Datastore $Datastore -ResourcePool $ResourcePool | Set-VM -NumCpu $CPU -MemoryMB $Memory -Confirm:$false -RunAsync

 Get-VM -Name $VMName | Get-NetworkAdapter | Set-NetworkAdapter -NetworkName $VLAN -Confirm:$false

    Remove-OSCustomizationSpec $Customization -Confirm:$false

    Start-VM -VM $VMName -RunAsync

    }

因为,Fixed的Customization Specification不支持重新定义NamingPrefix。所以,对于每一个vm,我都创建了一个Customization Specification并且在部署后删除。

有了两个文件后,我们就可以批量创建vm了。直接运行刚才创建的ps1文件。

等待命令完成后,我们就能在vCenter中或者SCVMM中看到这3台虚拟机了。

并且这些vm都会按照我们之前的定义自动配置系统中的IP和计算机名。然后就可以直接使用这些vm了。

注意,这些vm在开机后会重启一次,以应用我们自定义的内容。

如何在Windows中批量创建VMware的虚拟机的更多相关文章

  1. 如何在windows中编写R程序包(转载)

    网上有不少R包的编译过程介绍,挑选了一篇比较详细的,做了稍许修改后转载至此,与大家分享 如何在windows中编写R程序包 created by helixcn modified by binaryf ...

  2. 如何在linux中批量建立用户并设置随机密码

    Ubuntu是基于linux的免费开源操作系统,同时也是真正意义上的“多任务多用户”操作系统,既然是多用户系统,自然就涉及到创建多个用户的问题.同时由于Ubuntu系统中的root用户具有最高权限,无 ...

  3. 如何在Windows中手动生成SSH密钥?(转)

    在Windows上,您可以通过多种方式创建SSH密钥.Windows需要SSH客户端,但在其操作系统上没有默认的SSH客户端.请注意,Windows目前正在测试本机OpenSSH应用程序,一般,不提倡 ...

  4. 如何在Windows中打开多个Windows Media Player

    博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:如何在Windows中打开多个Windows Media Player.

  5. 如何在CAD中批量打印图纸?这种方法你要知道

    CAD图纸都是使用CAD制图软件进行设计出来的,图纸的格式均为dwg格式的,不方便进行使用.就需要将图纸进行打印出来.多张CAD图纸如果一张一张进行打印速度就会非常的慢,那就可以使用CAD中的批量打印 ...

  6. 如何在Word中批量选中特定文本

    如何在Word中批量选中特定文本 举个例子,我们对如下文本进行操作,将文本中所有的“1111111”标红,所有的“2222222”标绿,所有的“3333333”标蓝 在Word中找到“查找”下的“高级 ...

  7. 如何在Windows环境下安装Linux系统虚拟机

    如何在Windows环境下安装Linux系统虚拟机 本篇经验写给想要入门学习C语言的小白们.Windows系统因为使用窗口图形化,操作简单,功能多样,所以我们在Windows环境下可以做到很多,但想要 ...

  8. vmrun 批量创建vmware虚拟机

    1 准备模板机 具体步骤如下: 1. 下载镜像安装系统 https://mirrors.aliyun.com/centos/7.5.1804/isos/x86_64/ 2. 安装完成配置好IP ,关闭 ...

  9. 浅谈ETL架构中ODS的作用以及如何在HaoheDI中自动创建ODS表

    什么是ODS表? 在ETL架构中,源数据很少会直接抽取加载到数据仓库EDW,二者之间往往会设置一个源数据的临时存储区域,存储数据在清洗转换前的原始形态,通常被大家称做操作型数据存储,简称ODS,在Ki ...

随机推荐

  1. Linux编辑shell脚本快速启动jar包

    1.上传jar包到服务器 2.创建并编辑start.sh文件 vi start.sh 将下面内容复制到文件中 ps -ef|grep xf-demo |grep -v grep |awk '{prin ...

  2. sql server2016 数据库日志 清空语句

    /*1.查询数据库日志文件名称*/--TC_MES_DEV为数据库名--这里的 数据库日志名,可以用以下注释的语句进行查询(_log那个)USE [TC_MES_DEV]GOSELECT file_i ...

  3. 密码学系列之:在线证书状态协议OCSP详解

    目录 简介 PKI中的CRL CRL的缺点 CRL的状态 OCSP的工作流程 OCSP的优点 OCSP协议的细节 OCSP请求 OCSP响应 OCSP stapling 总结 简介 我们在进行网页访问 ...

  4. 关于 Flink 状态与容错机制

    Flink 作为新一代基于事件流的.真正意义上的流批一体的大数据处理引擎,正在逐渐得到广大开发者们的青睐.就从我自身的视角看,最近也是在数据团队把一些原本由 Flume.SparkStreaming. ...

  5. 报告指SpaceX估值已达到1000亿美元,埃隆马斯克以此回击其接受政府补贴的批判

    SpaceX首席执行官埃隆-马斯克(Elon Musk)表示,名下的航天发射服务供应商市值已达到1000亿美元.该金额是根据上个月的评估报告确认的,标志着SpaceX在完成最新一轮融资,并筹集超过10 ...

  6. 以三元组表为存储结构实现矩阵相加(耿5.7)----------西工大 noj

    #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <stri ...

  7. DQL基础查询和DQL条件查询

    DQL:查询表中的记录 1.语法 select 字段列表 from 表名列表 where 条件列表 group by 分组字段 having 分组之后的条件 order by 排序 limit 分页限 ...

  8. TFRecord的Shuffle、划分和读取

    对数据集的shuffle处理需要设置相应的buffer_size参数,相当于需要将相应数目的样本读入内存,且这部分内存会在训练过程中一直保持占用.完全的shuffle需要将整个数据集读入内存,这在大规 ...

  9. Modbus转OPC

    在这里给大家介绍一种低成本的将Modbus RTU协议的串口设备接入到OPC UA的服务器呢? OPC全称是OLE(Object Linking and Embedding) for Process ...

  10. 最佳实践 | 联通数科基于 DolphinScheduler 的二次开发

    点击上方 蓝字关注我们 ✎ 编 者 按 数据时代下,井喷的数据量为电信行业带来新的挑战.面对每日数百 TB 的新增数据,稳定可靠的调度系统必不可少. 中国联通旗下的联通数字科技有限公司(以下简称&qu ...