Quantcast
Channel: VMware Communities : Blog List - All Communities
Viewing all articles
Browse latest Browse all 3135

PowerCLI での VM クローン について。(New-VM)

$
0
0

いまさらですが、PowerCLI で VM をクローンしてみようと思います。

 

今回は PowerCLI 5.5 R2 を使用しています。

PowerCLI> Get-PowerCLIVersion | select UserFriendlyVersion

 

UserFriendlyVersion

-------------------

VMware vSphere PowerCLI 5.5 Release 2 build 1671586

 

まず、PowerCLI で vCenter に接続します。

※vCenter のアドレスは「vc55u1-1.vmad.local」にしています。

PowerCLI> Connect-VIServer vc55u1-1.vmad.local

 

Name                           Port  User

----                           ----  ----

vc55u1-1.vmad.local            443   VMAD\Administrator

 

それでは、この VM 「vm001」をクローンしてみます。

PowerCLI> Get-VM vm001

 

Name                 PowerState Num CPUs MemoryGB

----                 ---------- -------- --------

vm001                PoweredOff 1        0.250

 

VM のクローンは、New-VM コマンドレットでできます。

「-VM」でクローン元、「-Name」でクローン先の VM を指定します。

ちなみに、VM のテンプレートからクローンするときは、

「-VM」の代わりに「-Template」に指定します。

 

今回は、ほかにもいくつかオプションを指定しています。

  • 「-VMHost」→ VM を作成する ESXiを指定。
  • 「-Datastore」→ VM を作成するデータストアを指定。
  • 「-DiskStorageFormat」→ 仮想ディスク(VMDK ファイル)のフォーマットを指定。

PowerCLI> New-VM -VM vm001 -Name vm002 -VMHost hv55n1.vmad.local -Datastore ds_hv55n1_01 -DiskStorageFormat EagerZeroedThick

 

Name                 PowerState Num CPUs MemoryGB

----                 ---------- -------- --------

vm002                PoweredOff 1        0.250

 

New-VM には、下記のようにパイプ「|」で VM を指定することもできます。

今回は、別のデータストアにクローンしてみました。

NFS データストアなので Thin 形式にしています。

PowerCLI> Get-VM vm001 | New-VM -Name vm003 -VMHost hv55n1.vmad.local -Datastore ds_nfs_181 -DiskStorageFormat Thin

 

Name                 PowerState Num CPUs MemoryGB

----                 ---------- -------- --------

vm003                PoweredOff 1        0.250

 

指定した ESXi / データストア に VM が作成されました。

PowerCLI> Get-VM vm00? | select Name,VMHost,{$_|Get-Datastore} | sort Name | ft -AutoSize

 

Name  VMHost            $_|Get-Datastore

----  ------            ----------------

vm001 hv55n1.vmad.local ds_hv55n1_01

vm002 hv55n1.vmad.local ds_hv55n1_01

vm003 hv55n1.vmad.local ds_nfs_181

 

VMDK ファイルも、指定したディスク形式になっています。

PowerCLI> Get-VM vm00? | Get-HardDisk | select Parent,Name,StorageFormat,@{N="GB";E={[int]$_.CapacityGB}},Filename | ft -AutoSize

 

Parent Name           StorageFormat GB Filename

------ ----           ------------- -- --------

vm001  Hard disk 1            Thick 10 [ds_hv55n1_01] vm001/vm001.vmdk

vm002  Hard disk 1 EagerZeroedThick 10 [ds_hv55n1_01] vm002/vm002.vmdk

vm003  Hard disk 1             Thin 10 [ds_nfs_181] vm003/vm003.vmdk

 

vNIC の種類(VMXNET3など)やポートグループは、クローン元の設定を引き継ぎます。

しかし、MAC アドレスは、ちゃんと再生成されます。

PowerCLI> Get-VM vm00? | Get-NetworkAdapter | select Parent,Name,Type,NetworkName,MacAddress | sort Parent | ft -AutoSize

 

Parent Name                 Type NetworkName  MacAddress

------ ----                 ---- -----------  ----------

vm001  Network adapter 1 Vmxnet3 pg-vlan-0005 00:50:56:90:30:b0

vm002  Network adapter 1 Vmxnet3 pg-vlan-0005 00:50:56:90:38:59

vm003  Network adapter 1 Vmxnet3 pg-vlan-0005 00:50:56:90:00:e6

 

大量のVM を作成したい場合は、

下記のようにまとめて作成したりもできます。

※この例だとクローン元 VM や ESXi などが決め打ちですが・・・

※赤字がコマンド入力している部分です。

PowerCLI> 4..10 | foreach {

>> $vm_name = "vm" + $_.ToString("000")

>> New-VM -VM vm001 -Name $vm_name -VMHost hv55n1.vmad.local -Datastore ds_nfs_181

>> }

>>

 

Name                 PowerState Num CPUs MemoryGB

----                 ---------- -------- --------

vm004                PoweredOff 1        0.250

vm005                PoweredOff 1        0.250

vm006                PoweredOff 1        0.250

vm007                PoweredOff 1        0.250

vm008                PoweredOff 1        0.250

vm009                PoweredOff 1        0.250

vm010                PoweredOff 1        0.250

 

あらかじめ CSV ファイルを用意して、

それを読み込んで New-VM を実行したりすることもできます。

 

このようなファイルを作成しておき・・・

PowerCLI> cat C:\work\vm_list.txt

SrcVM, NewVM, ESXi,            Datastore

vm001, vm011, hv55n1.vmad.local, ds_nfs_181

vm001, vm012, hv55n1.vmad.local, ds_nfs_181

vm001, vm013, hv55n2.vmad.local, ds_nfs_181

vm001, vm014, hv55n2.vmad.local, ds_nfs_181

 

CSV として読み込んで、New-VM を実行します。

読み込んだファイルに記載してあるように VM がクローンされます・・・

PowerCLI> $vm_list = Import-Csv C:\work\vm_list.txt

PowerCLI> $vm_list | foreach {

>> New-VM -VM $_.SrcVM -Name $_.NewVM -VMHost $_.ESXi -Datastore $_.Datastore

>> }

>>

 

Name                 PowerState Num CPUs MemoryGB

----                 ---------- -------- --------

vm011                PoweredOff 1        0.250

vm012                PoweredOff 1        0.250

vm013                PoweredOff 1        0.250

vm014                PoweredOff 1        0.250

 

最後に、

VM の削除は、Remove-VM コマンドレットでできます。

デフォルトだと vCenter のインベントリから VM を登録削除するだけですが、

「-DeletePermanently」を指定すると、VMDK ファイル自体も削除できます。

 

まちがって必要な VM を削除をしないように、

Get-VM で実行対象を絞ってから Remove-VM することをお勧めします。

 

まず、対象の VM を確認。

 

PowerCLI C:\> Get-VM vm00[2-9], vm01?

 

Name                 PowerState Num CPUs MemoryGB

----                 ---------- -------- --------

vm002                PoweredOff 1        0.250

vm003                PoweredOff 1        0.250

vm004                PoweredOff 1        0.250

vm005                PoweredOff 1        0.250

vm006                PoweredOff 1        0.250

vm007                PoweredOff 1        0.250

vm008                PoweredOff 1        0.250

vm009                PoweredOff 1        0.250

vm010                PoweredOff 1        0.250

vm011                PoweredOff 1        0.250

vm012                PoweredOff 1        0.250

vm013                PoweredOff 1        0.250

vm014                PoweredOff 1        0.250

 

 

確認した Get-VM を、そのまま Remove-VM にパイプで渡します。

vm001 だけは、削除せずに残してみました。

PowerCLI C:\> Get-VM vm00[2-9],vm01? | Remove-VM -DeletePermanently -Confirm:$false

PowerCLI C:\> Get-VM vm0??

 

Name                 PowerState Num CPUs MemoryGB

----                 ---------- -------- --------

vm001                PoweredOff 1        0.250

 

以上、PowerCLI での VM のクローンについてでした。


Viewing all articles
Browse latest Browse all 3135

Trending Articles