1 文档说明

2 Vsphere PowerCli安装和配置

3 PowerCli常用命令

4 创建自定义规范

5 虚拟机克隆与配置脚本

6 技术资料

文档说明

使用Vsphere管理虚拟机,在进行虚拟机克隆及配置时,一般均为手动操作。克隆之后,虚拟机需进行vlan修改、基础os配置等,手动操作繁琐且需耗费大量时间,如机器名修改、IP地址修改,只能通过控制台操作(无法考虑文本,且反应较慢),且需要重启虚拟机,效率很低。

使用PowerCli命令行工具,通过编写脚本,封装虚拟机的克隆、设置编辑、OS配置等命令,执行后可实现虚拟机直接可访问,可有效提高配置效率。

并且,成熟的脚步,可供其他程序或平台调用,为实现虚拟机定制、自助或批量创建与配置提供技术支撑。

本文介绍PowerCli的安装、配置方法,验证技术可行性,提供示例脚本。

2 Vsphere PowerCli安装和配置

安装文件可从vmware官网下载,如PowerCli4.1、5.5。

双击软件包,默认安装。

安装后,运行PowerCli,提示:“无法加载文件c:programFilesvmwareinfrastructurevspherepowerCLIscriptinitialize-vitoolkitenviroment.ps1,因为在此系统中禁止执行脚本。有关信息,请查阅“get-help about_signing”。

  通过get-executionpolicy查看本地执行策略

  更改执行策略

  更改为RemoteSigned执行策略

备注:

Restricted 执行策略不允许任何脚本运行。

AllSigned和 RemoteSigned 执行策略可防止 Windows PowerShell 运行没有数字签名的脚本。

  再次运行VMware vSphere PowerCLI,提示”Welcome“界面,工具正常启动。

3 PowerCli常用命令

已整理的PowerCli命令有225个,可参考官方网址:

http://pubs.vmware.com/vsphere-60/index.jsp#com.vmware.powercli.cmdletref.doc/Add-VMHost.html

常用的有 :

Connect-VIServer– 连接虚拟化平台

get-vmhost – 显示ESXi主机列表

get-cluster –显示群集列表

get-datastore– 显示存储列表

get-resourcepool– 显示资源池

get-vm – 显示虚拟机列表

get-virtualswitch– 显示虚拟交换机列表

start-vm\stop -vm – 启动或关闭虚拟机

new -vm – 创建虚拟机

get-template– 显示模板列表

get-oscustomizationspec– 显示自定义规范列表

get-vapp – 显示vapp 应用列表

get-folder – 显示文件夹列表

get-vicommand– 显示所有命令列表

创建自定义规范

若要实现脚本完成虚拟机IP配置,需使用自定义规范。通过vcenter client【视图】-【管理】-【自定义规范管理器】-创建自定义规范。以win2003 x64为例,创建步骤如下:

使用虚拟机名称

vCenter Server 创建的计算机名称与客户机操作系统正在运行的虚拟机名称相同。

如果名称超过 15 个字符,它将被截断。

产品密钥(仅供参考)

w2003x64 MR78C-GF2CY-KC864-DTG74-VMT73

w2003x86 JCGMJ-TC669-KCBG7-HB8X2-FXG7M

输入管理员密码

选择时区

(可选) 在运行一次页面上,指定用户首次登录客户机操作系统时运行的命令,然后单击下一步

有关“运行一次”命令的更多信息,请参见 Microsoft Sysprep 文档。

选择典型设置,使用过程中,用脚本修改规范中的网络相关信息

拷贝sysprep

在创建完规范后,我们还需要复制相应版本的sysprep到vCenter服务器的指定目录中,规范才可以使用。

Vcenter server 5(win2008)中指定目录为:C:\Documentsand Settings\All Users\Application Data\VMware\VMware VirtualCenter\sysprep 此目录下有对应的各个版本,我们所需要做的就是将server 2003 的sysprep程序拷到这个目录下的svr2003-64目录中。对于win2003x86,则拷贝至svr2003目录中。

sysprep文件从镜像中找,在\SUPPORT\TOOLS\DEPLOY.CAB中。

vsphere4.1相关目录为:c:\ProgramData\VMware\VMware VirtualCenter\sysprep

vsphere5.5 linux操作系统相关目录为:/etc/vmware-vpx/sysprep

至此自定义规范可以使用。

虚拟机克隆与配置脚本

编写并验证通过的脚本如下,执行后可完成虚拟机克隆及配置,或修改已存在虚拟机的机器名和IP配置,其中w2003x642为自定义规范。参考如下。

注意:若basevm为之前使用脚本克隆并配置的虚拟机,则使用basevm作为被克隆虚拟机前,需要开机一次,使虚拟机自动完成配置,方可用于克隆。不然会导致新虚拟机克隆后自动配置失败。

##执行前提1:需要在vcenter client创建自定义规范$basespec,vcenter server sysprep相关目录中存在win2003的sysprep文件.

##执行前提2:所操作的虚拟机、或模板需安装vmtools

##将脚本编写至**.ps1文件中,如clonenewvm.ps1,打开PowerCli命令行,执行./clonenewvm.ps1即可

##'#'为注释

##'#'为注释

$vc = '1.1.1.1' #VCenter IP

##连接VC

Connect-VIServer -Server $vc -username "username"-Password "password"

##相关参数(以下为例,实际使用可通过其他方式或脚本配置),依次为资源池、克隆后配置的虚拟机名称、待克隆的虚拟机、IP地址、掩码、网关、DNS1、DNS2、VLAN、宿主机、存储、自定义规范

$pool=Get-ResourcePool -name 'T01'

$name='vmname'

$basevm='basevmname'

$ip='1.2.2.2'

$netmask='255.255.255.0'

$gateway='1.2.2.254'

$DNSA='1.2.3.1'

$DNSA2='1.2.3.2'

$network='VLAN_1'

$vmhost=get-vmhost -vm $basevm

$storage=get-datastore -vm $basevm

$basespec='w2003x642'

##临时规范文件

$specName = "tempSpec" + (Get-Random)

Get-OSCustomizationSpec -Name $basespec |New-OSCustomizationSpec -Name $specName -Type NonPersistent

##删除规范中原网络相关配置

Get-OSCustomizationSpec $specName |Get-OSCustomizationNicMapping | Remove-OSCustomizationNicMapping-Confirm:$false

##添加自定义的网络相关配置

New-OSCustomizationNicMapping -Spec $specName -IpModeUseStaticIP -IpAddress $ip -SubnetMask $netmask -DefaultGateway $gateway -DNS$DNSA,$DNSA2

$osspec=Get-OSCustomizationSpec $specName

##基于模板创建虚拟机并配置

##New-VM -Name $name -VMHost $vmhost -Datastore$storage -OSCustomizationSpec $osspec -Template $Template -ResourcePool $pool

##仅配置当前已存在虚拟机

#Get-VM $name | set-vm -OSCustomizationSpec  $spec

#Set-VM -vm $name -OSCustomizationSpec $osspec-Confirm:$false

##基于其他虚拟机克隆并配置

New-VM -VM $basevm -Name $name -VMHost $vmhost-Datastore $storage -OSCustomizationSpec $osspec -ResourcePool $pool

##配置vlan

Get-VM -Name $name | Get-NetworkAdapter |Set-NetworkAdapter -NetworkName $network -Confirm:$false

##删除临时规范文件

Remove-OSCustomizationSpec -Confirm:$false-customizationSpec (Get-OSCustomizationSpec -name $specName)

##启动虚拟机

#start-vm $name

##断开连接

Disconnect-VIServer $vc -confirm:$false

##出错时,日志查看方法

#$lastError = $error[0]

#$lastError | select *

技术资料

官网资料:

http://pubs.vmware.com/vsphere-60/index.jsp#com.vmware.powercli.cmdletref.doc/Add-VMHost.html

基于PowerCli自动部署和配置vmvare虚拟机的更多相关文章

  1. FastDFS 自动部署和配置脚本

    写了一个自动安装和配置FastDFS的脚本,还没有写好关于nginx的配置.先贴上,如下: 自动安装FastDFS,(这部分是之前同事写好的) #!/bin/bash #instll gcc echo ...

  2. 基于webhook方案的Git自动部署方案

    之前已经用Git实现了自己博客的提交自动部署,并自动提交到GitHub和coding以备不时之需.平时项目代码都托管在Coding或者GitHub上,也已经用上了coding提供的webhook功能, ...

  3. 在Eclipse for mac中配置tomcat,使web项目自动部署到tomcat

    jdk.tomcat的配置就不多说了,网上一大堆. 一.发现问题 在eclipse中新建Dynamic Web Project,配置好本地的tomcat并写好代码后选择Run on Server,但运 ...

  4. Nginx--服务部署、基于域名的虚拟主机配置

    一.服务部署 1.预处理 安装CentOS ,配置hosts.静态IP.设置必要的安全参数等(略) 1-1.系统环境 [root@vnx ~]# cat /etc/redhat-release Cen ...

  5. centos 安装git服务器,配置使用证书登录并你用hook实现代码自动部署

    安装git服务器先安装依赖软件:yum -y install gcc zlib-devel openssl-devel perl cpio expat-devel gettext-devel open ...

  6. jenkins发布普通项目、配置自动上线自动部署

    1.以root用户运行jenkins是不专业的 刚开始用jenkins时用jenkins这个普通用户运行程序,始终无法连接到gitlab,报错如下: 先是把修改jenkins上的git路径,将git修 ...

  7. Jenkins+Gitlab配置Webhook实现提交自动部署

    一.概述 在上一篇文章,链接如下: https://www.cnblogs.com/xiao987334176/p/11434849.html 已经实现了 Jenkins+harbor+gitlab+ ...

  8. gitblit git SERVER window 安装配置 hook post-receive 自动部署

    项目中使用的是gitblit windos版 1.安装 需要JAVA SDK http://gitblit.com/Download Gitblit GO (Windows) 下载后,解压缩,放到例如 ...

  9. 基于MACVLAN配置VMWARE虚拟机中容器网络

    基于MACVLAN配置VMWARE虚拟机中容器网络 测试部环境组 201711 0 文档说明 MACVLAN是docker的一种支持跨主机网络的driver.macvlan本身是linux kerne ...

随机推荐

  1. windows7安装 npm和cnpm

    1.node.js下载地址: https://nodejs.org/en/download/ 我选择的安装路径是D:\files\nodejs 2.查看安装是否成功 3.创建文件夹 在D:\files ...

  2. nuxt导入css样式

    全局导入,适用于所有组件 在nuxt.config.js文件引 css:["~样式path"], 如:css:["~assets/css/main.css"], ...

  3. C语言编译和链接详解(通俗易懂,深入本质)

    我们平时所说的程序,是指双击后就可以直接运行的程序,这样的程序被称为可执行程序(Executable Program).在 Windows 下,可执行程序的后缀有.exe和.com(其中.exe比较常 ...

  4. ABB 机器人 流水灯and跑马灯

    MODULE MainModule VAR signaldi signaldi14; PROC main() //di14_test 数字输入信号 WHILE di14_test = DO ycld; ...

  5. iview修改table组件实现循环向上滚屏

    前提,最近项目中需要实现table的滚屏效果,并且使用的是iview的table组件,踩坑,填坑如下. 1.首先找到Table组件中的table,就是这个class:ivu-table-body te ...

  6. C++雾中风景番外篇4:GCC升级二三事

    最近将手头上负责的项目代码从GCC 4.8.2升级到了GCC 8.2.(终于可以使用C++17了,想想后续的开发也是很美好啊~~)不过这个过程之中也遇到了一些稀奇古怪的问题,在这里做一个简单的记录,希 ...

  7. Linux netstat命令详解(检验本机各端口的网络连接情况)

    netstat命令用于显示与IP.TCP.UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况.netstat是在内核中访问网络及相关信息的程序,它能提供TCP连接,TCP和UDP ...

  8. html()和append()

    html()方法会替换原有内容,append() 方法在被选元素的结尾插入指定内容.prepend() 方法在被选元素的开头插入指定内容 appendChild() 方法向节点添加最后一个子节点.pr ...

  9. 吴裕雄 python 机器学习——集成学习AdaBoost算法分类模型

    import numpy as np import matplotlib.pyplot as plt from sklearn import datasets,ensemble from sklear ...

  10. 接入HikariCP遇到问题

    老Tomcat项目在接入HikariCP时遇到报错: Caused by: java.lang.AbstractMethodError: com.mysql.jdbc.Connection.isVal ...