LoginSignup
0
0

vSphere 仮想マシンのスナップショットをまとめて取る

Posted at

概要

GUI から複数仮想マシンのスナップショットを撮るのがだるいので、自動化する。

1. 環境構築

VMWare 公式で、 SDK 的なパッケージである PowerCLI が PowerShell モジュールとして提供されている。

Nix Flake を使う場合は、まずは Powershell を devshell に入れる。

flake.nix
{
  description = "PowerCLI";

  inputs = {
    nixpkgs = { url = "github:NixOS/nixpkgs/nixpkgs-unstable"; };
    flake-utils = { url = "github:numtide/flake-utils"; };
  };

  outputs = { self, nixpkgs, flake-utils }:
    flake-utils.lib.eachDefaultSystem (system:
      let
        inherit (nixpkgs.lib) optional;
        pkgs = import nixpkgs { inherit system; };
      in
      {
        devShell = pkgs.mkShell {
          buildInputs = with pkgs; [
            powershell
          ];
        };
      });
}

または、以下のように nix-shell で一発でやってもいい。

nix-shell -p powershell

PowerShell 環境に入れたら、 PowerCLI モジュールをインストールする。

Install-Module -Name VMware.PowerCLI -AllowClobber

2. スクリプトを実行する。

以下スクリプトを適当な場所に配置する。

Connect-VIServer -Server "<vCenter のアドレス>"

$vmList = "<スナップショットを撮りたい VM の名前>", "<スナップショットを撮りたい VM の名前>", ...

foreach ($vmName in $vmList) {
    New-Snapshot -VM $vmName -Name "<スナップショットの名前>" -Description "<スナップショットの説明>" -Quiesce -Memory
    Write-Output "Snapshot created for $vmName."
}

Disconnect-VIServer -Server "<vCenter のアドレス>" -Confirm:$false

<vCenter のアドレス>、<スナップショットを撮りたい VM の名前>、<スナップショットの名前>、<スナップショットの説明> の部分を書き換える。

そしたら実行する。

$ pwsh ./snapshot.ps1

Specify Credential
Please specify server credential
User: XXX
Password for user XXX: *****

Name               Port  User
----               ----  ----
vCenter のアドレス   443   XXX
WARNING: The 'Quiesced' property of Snapshot type is deprecated and will be removed in a future release.
WARNING: The 'Quiesced' property of Snapshot type is deprecated and will be removed in a future release.
WARNING: The 'Parent' property of Snapshot type is deprecated. Use the 'ParentSnapshot' property instead.

Description       : 自分で書いた説明
Created           : 1/01/2023 0:00:00AM
Quiesced          : False
PowerState        : PoweredOn
VM                : XXX
VMId              : VirtualMachine-vm-XXX
Parent            : 
ParentSnapshotId  : 
ParentSnapshot    : 
Children          : 
SizeMB            : XXX
SizeGB            : XXX
IsCurrent         : True
IsReplaySupported : False
ExtensionData     : VMware.Vim.VirtualMachineSnapshotTree
Id                : VirtualMachineSnapshot-snapshot-XXX
Name              : XXX
Uid               : XXX

Snapshot created for vm-name.

Description       : 自分で書いた説明
Created           : 1/01/2023 0:00:00AM
Quiesced          : False
PowerState        : PoweredOn
VM                : XXX
VMId              : VirtualMachine-vm-XXX
Parent            : 
ParentSnapshotId  : 
ParentSnapshot    : 
Children          : 
SizeMB            : XXX
SizeGB            : XXX
IsCurrent         : True
IsReplaySupported : False
ExtensionData     : VMware.Vim.VirtualMachineSnapshotTree
Id                : VirtualMachineSnapshot-snapshot-XXX
Name              : XXX
Uid               : XXX

Snapshot created for vm-name.

仮想マシンのアクションから、ちゃんとスナップショットが作成されていることを確認する。

おわり。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0