使用powercli创建模板与克隆虚机
用powercli练练手,需从实际案例出发,本节将使用powercli写两个demo,一个是创建模板,并根据模板创建新的虚机;另一个demo是克隆虚机。
【注意】
1、创建模板与克隆操作只能在vcenter上使用
2、powercli是 异步任务,因此需等待一个任务完成后,再去执行下一个任务。(使用 -Runasync 与 -ErrorAction stop 类似于linux中的nohup与&的使用)
一、创建模板并根据模板生成虚机
$task = Stop-VM win -Confirm:$false -ErrorAction Stop -RunAsync #停止虚机,并放后台
while( $task.state -eq "Running" ) #使用while循环时刻监控上一任务是否结束
{
$task = Get-Task -ID $task.id
} $task1 = New-Template -VM ( Get-VM win2 ) -Name "tp" -Location "nickdc" -ErrorAction Stop -RunAsync #根据虚机创建模板
while( $task1.state -eq "Running" )
{
$task1 = Get-Task -ID $task1.id
} #根据模板创建虚机
$task2 = New-VM -Name win3 -Template ( Get-Template tp) -VMHost (Get-VMHost 10.32.2.99) -Datastore (Get-Datastore datastore1) -ResourcePool testpool -ErrorAction Stop -RunAsync
while( $task2.state -eq "Running" )
{
$task2 = Get-Task -ID $task2.id
} Start-vm win3 #开启虚机
二、克隆虚机
脚本过程:确认虚机名与虚机所在的磁盘--> 连接vcenter-->关闭虚机-->克隆虚机-->开启虚机
$eap = $ErrorActionPreference
Try{
$ErrorActionPreference = 'Stop' # set vm name & clone vm name
$sourcevmname = "abcd"
$clonevmname = "123" # check vm name
$tip1 = Read-Host "make sure source vm name is $sourcevmname , if true , input 'y/Y' "
$tip2 = Read-Host "make sure clone vm name $clonevmname , if true , input 'y/Y'" if ( $tip1 -eq "y|Y" -and $tip2 -eq "y|Y" )
{
echo "please make sure vm name "
exit 1
} #connect vcentr
$vcenterip = "8.8.8.8"
$user = "administrator@vsphere.com"
$passwd = "123456"
Connect-VIServer $vcenterip -User $user -Password $passwd -SaveCredentials
sleep 20 $starttime = date -Format "HH:mm:ss"
echo "start time : $starttime" #shutdown vm
echo (get-vm $sourcevmname).PowerState
if( (get-vm $sourcevmname).PowerState -eq "PoweredOn" )
{
stop-vm $sourcevmname -Confirm:$false
echo "stop vm"
sleep 30
} #clone vm
$myDatastore = Get-Datastore -Name datastore1
$vmhost = Get-VMHost -Name 10.32.2.99
$pool = Get-ResourcePool -Name testpool
echo "start clone vm..."
$task = New-VM -Name $clonevmname -VM $sourcevmname -Datastore $myDatastore -VMHost $vmhost -ResourcePool $pool -RunAsync -ErrorAction Stop
while( $task.state -eq "Running" )
{
$task = Get-Task -ID $task.id
}
echo "clone ok!" sleep 5 #start vm
echo "start vm"
start-vm $clonevmname
echo "everything ok!" $usetime = (New-TimeSpan $starttime ).TotalMinutes
$msg = "clone take {0:n0} minutes" -f $usetime
echo $msg
}
Catch{
Write-Host "error !"
Exit 1
}
Finally{
$ErrorActionPreference = $eap
}
使用powercli创建模板与克隆虚机的更多相关文章
- vSphere克隆虚机重启网卡报错
使用VMware vSphere克隆虚机,修改IP重启网卡报错: 解决报错: 修改 /etc/udev/rules.d/70-persistent-net.rules 文件,克隆后会多出eth2和et ...
- 克隆虚机网卡出现 Device eth0 does not seem to be present, delaying initialization 错误
错误原因 克隆的Linux系统在新的机器上运行,新服务器网卡物理地址已经改变.而/etc/udev/rules.d/70-persistent-net.rules这个文件确定了网卡和MAC地址的 ...
- 远程管理 KVM 虚机 - 每天5分钟玩转 OpenStack(5)
上一节我们通过 virt-manager 在本地主机上创建并管理 KVM 虚机.其实 virt-manager 也可以管理其他宿主机上的虚机.只需要简单的将宿主机添加进来 填入宿主机的相关信息,确定即 ...
- 云与备份之(1):VMware虚机备份和恢复
本系列文章会介绍云与备份之间的关系,包括: (1)VMware 虚机备份和恢复 (2)KVM 虚机备份和恢复 (3)云与备份 (4)OpenStack 与备份 (5)公有云与备份 1. 与备份有关的V ...
- 远程管理 KVM 虚机
上一节我们通过 virt-manager 在本地主机上创建并管理 KVM 虚机.其实 virt-manager 也可以管理其他宿主机上的虚机.只需要简单的将宿主机添加进来 填入宿主机的相关信息,确定即 ...
- O005、远程管理 KVM 虚机
参考https://www.cnblogs.com/CloudMan6/p/5256018.html 上一节我们通过 virt-manager 在本地主机上创建并管理 KVM 虚机,其实 virt ...
- Terraform:创建 Azure 虚机
笔者在前文<Terraform 简介>中简单介绍了 Terraform 相关的概念,本文让我们使用 Terraform 在 Azure 上创建一个虚机,以此来直观体验一下 Terrafor ...
- Openstack之Nova创建虚机流程分析
前言 Openstack作为一个虚拟机管理平台,核心功能自然是虚拟机的生命周期的管理,而负责虚机管理的模块就是Nova. 本文就是openstack中Nova模块的分析,所以本文重点是以 ...
- OpenStack 创建虚机过程简要汇总
1. 总体流程 翻译自原文(英文):https://ilearnstack.com/2013/04/26/request-flow-for-provisioning-instance-in-opens ...
随机推荐
- 测试mybatis延迟加载错误与解决方法
什么是延迟加载? 延迟加载又叫懒加载,也叫按需加载,也就是说先加载主信息,需要的时候,再去加载从信息. 需求: 查询订单信息,需要时再去查询用户信息 实现方式: 编写两个statement,其中一个s ...
- es6 | 新增语法 | 总结
电梯 原文 https://www.jianshu.com/p/5f40c43c6f85 重点: 遍历map结构 正则扩展 at相当于charAt() ,可以识别中文normarize()includ ...
- [转载] miller rabin
本文转载自https://www.cnblogs.com/zsq259/p/11602175.html Miller-Rabin 事先声明,因为菜鸡Hastin知识水平有限就是菜,因此语言可能不是特别 ...
- SecureCRT 日记保存带时间戳
%h:%m:%s:%t--- result:
- Numpy | 09 高级索引
NumPy 比一般的 Python 序列提供更多的索引方式.除了之前看到的用整数和切片的索引外,数组可以由整数数组索引.布尔索引及花式索引. 整数数组索引 实例1:获取数组中(0,0),(1,1)和( ...
- ent 基本使用 一 schema 迁移
ent 是 facebook 开源的golang orm 框架,简单强大,以下是一个简单使用 环境准备 安装ent 工具 go get github.com/facebookincubator/ent ...
- podium服务器端的微前端开发框架
podium 是一个比较全的微前端开发框架. 具有以下特性 自治开发 强大的组合能力 基于约定的开发模式 podium 包含的组件 podlets 页面片段,是一个独立的http 服务,独立运行的,实 ...
- 服务器使用bbr加速配置
服务器内核升级: 以centos7为例,配置之前可使用以下命令查看内核版本,若是4.0以上则无需对内核升级: uname -r 对内核升级的方法: 直接使用以下命令进行内核版本的下载: rpm --i ...
- 如何把Eclipse项目迁移到AndroidStudio(如何把项目导入安卓)--这我很困惑
学习android对我来说,就是兴趣,所以我以自己的兴趣写出的文章,希望各位多多支持!多多点赞,评论讨论加关注. 大佬必备功能. 把Eclipse项目迁移到AndroidStudio 现在就叫你如何把 ...
- Eureka 的高级使用
基础架构Eureka架构中的三个核心角色: 服务注册中心 Eureka的服务端应用,提供服务注册和发现功能,就是刚刚我们建立的eureka-demo 服务提供者 提供服务的应用,可以是SpringBo ...