59
Windows Server 2012 Community Day 2013 年 12 月 PowerShell を使用した Hyper-V の管理 高井 一輝 System Center User Group Japan

PowerShell を使用した Hyper-V の管理

Embed Size (px)

DESCRIPTION

Windows Server 2012 Community Day 2013年12月 (第9回) のセッション資料です。 セッションで使用したスクリプトは以下に掲載しています。 http://wp.me/p1Cs5O-7w

Citation preview

Page 1: PowerShell を使用した Hyper-V の管理

Windows Server 2012 Community Day 2013 年 12 月

PowerShell を使用したHyper-V の管理

高井 一輝System Center User Group Japan

Page 2: PowerShell を使用した Hyper-V の管理

自己紹介

• 高井 一輝 (Takai Kazuki)

• 某 ISP 勤務• クラウドとオンプレミスを組み合わせたインテグレーション

• 見積り、提案書の作成から設計、構築、試験、運用まで

• ネットワーク、サーバ (Windows、Linux)

• System Center User Group Japan (SCUGJ)

• Twitter : @zhuky7 / Facebook : kazuki.takai

• Blog : http://operationslab.wordpress.com/

2

Page 3: PowerShell を使用した Hyper-V の管理

本日の内容

• お話すること• PowerShell についてのおさらいと PowerShell 4.0

• 運用管理視点での PowerShell

• PowerShell を使用した Hyper-V 環境の管理

• お話しないこと• Windows Server の初期構成や、Hyper-V ホストの構築方法

• ネットワーク仮想化と仮想ネットワークの管理

• System Center 製品の詳細

3

Page 4: PowerShell を使用した Hyper-V の管理

このセッションのゴール

• PowerShell でできることを理解する

• PowerShell を使用するメリットを理解する

• PowerShell を使用して Hyper-V の管理タスクを実施できる

4

Page 5: PowerShell を使用した Hyper-V の管理

本日の環境

• Windows Server 2012 R2• 多くのコマンドは Windows Server 2012 でも利用可能

• 一部のデモは Windows Server 2012 を併用

5

Page 6: PowerShell を使用した Hyper-V の管理

アジェンダ

• Windows PowerShell とは

• Windows Server 2012 R2 PowerShell 4.0 の新機能

• PowerShell による管理・運用

• PowerShell による Hyper-V 環境の管理

6

Page 7: PowerShell を使用した Hyper-V の管理

Windows PowerShell とは

7

Page 8: PowerShell を使用した Hyper-V の管理

PowerShell とは

• Windows で利用可能な新しいシェル / スクリプト言語• Windows Server 2008 R2 以降で標準搭載

• コマンドプロンプトよりも高度な処理 / 制御が可能

• WSH よりもスクリプトの記述が容易

• Character-based User Interface

• テキストベースではなくオブジェクトベース• パイプラインを流れるのはオブジェクト

• 豊富なコマンドレット• PowerShell 本体で用意されているコマンドレット

• Windows Server OS や役割 / 機能に付随するコマンドレット

• 特定の製品やサービスに付随するコマンドレット8

Page 9: PowerShell を使用した Hyper-V の管理

なぜ PowerShell を使用するのか

• 運用管理者にとってのメリット• GUI では設定できない項目の操作 / 変更が可能

• 自動化が容易 (スクリプト化可能)

– 操作ミスの低減

– 作業の効率化

– 時間短縮

• 操作履歴 (ログ) を取得しやすい

• デフォルトでリモートからアクセス可能

• 運用管理者にとってのデメリット• 直観的ではない (「グラフィカル」ではない)

9

Page 10: PowerShell を使用した Hyper-V の管理

PowerShell 実行環境

• PowerShell (PowerShell コンソール)• powershell.exe

• 通常の PowerShell 環境

• PowerShell ISE (Integrated Scripting Environment)• powershell_ise.exe

• スクリプト作成 / デバッグ用の環境

– ブレークポイントの設定

– スクリプトの一部を選択して実行 (選択範囲を実行)

• コンソールと ISE では、一部動作 (挙動) が異なる• 外部コマンドの呼び出し制約

10

Page 11: PowerShell を使用した Hyper-V の管理

Windows Server 2012 R2PowerShell 4.0 の新機能

11

Page 12: PowerShell を使用した Hyper-V の管理

Windows Server 2012 R2 の PowerShell

• PowerShell 4.0• w/ Windows Management Framework 4.0

• モジュール及びコマンドの追加• PowerShell 4.0 としての追加

• Windows Server 2012 R2 としての追加

※PS 4.0 (WMF 4.0) は Windows Server 2012 R2 以外でも利用可能

– Windows 7 SP1, Windows Server 2008 R2 SP1, Windows Server 2012

– .NET Framework 4.5 が必要

– http://www.microsoft.com/ja-jp/download/details.aspx?id=4085512

Page 13: PowerShell を使用した Hyper-V の管理

追加されたコマンド

13

Export-BinaryMiLogImport-BinaryMiLogAdd-WindowsImageExpand-WindowsImageExport-WindowsImageGet-WindowsImageContentNew-WindowsImageRemove-WindowsImageSet-AppXProvisionedDataFileSplit-WindowsImageAdd-VMNetworkAdapterExtendedAclAdd-VmNetworkAdapterRoutingDomainMappingCopy-VMFileDebug-VMGet-VMFirmwareGet-VMNetworkAdapterExtendedAclGet-VmNetworkAdapterIsolationGet-VMNetworkAdapterRoutingDomainMappingRemove-VMNetworkAdapterExtendedAclRemove-VMNetworkAdapterRoutingDomainMappingSet-VMFirmwareSet-VmNetworkAdapterIsolationSet-VmNetworkAdapterRoutingDomainMappingTest-VMNetworkAdapterExpand-IscsiVirtualDiskExport-IscsiTargetServerConfigurationImport-IscsiTargetServerConfigurationResize-IscsiVirtualDiskStop-IscsiVirtualDiskOperationGet-FileHashDebug-MMAppPrelaunchAdd-NetEventNetworkAdapterAdd-NetEventPacketCaptureProviderAdd-NetEventProviderAdd-NetEventVmNetworkAdapterAdd-NetEventVmSwitchGet-NetEventNetworkAdapterGet-NetEventPacketCaptureProviderGet-NetEventProviderGet-NetEventSessionGet-NetEventVmNetworkAdapterGet-NetEventVmSwitch

New-NetEventSessionRemove-NetEventNetworkAdapterRemove-NetEventPacketCaptureProviderRemove-NetEventProviderRemove-NetEventSessionRemove-NetEventVmNetworkAdapterRemove-NetEventVmSwitchSet-NetEventPacketCaptureProviderSet-NetEventProviderSet-NetEventSessionStart-NetEventSessionStop-NetEventSessionAdd-NetNatExternalAddressAdd-NetNatStaticMappingGet-NetNatGet-NetNatExternalAddressGet-NetNatGlobalGet-NetNatSessionGet-NetNatStaticMappingNew-NetNatRemove-NetNatRemove-NetNatExternalAddressRemove-NetNatStaticMappingSet-NetNatSet-NetNatGlobalFind-NetIPsecRuleFind-NetRouteGet-NetCompartmentTest-NetConnectionSelect-NetVirtualizationNextHopGet-PcsvDeviceRestart-PcsvDeviceSet-PcsvDeviceBootConfigurationStart-PcsvDeviceStop-PcsvDeviceRead-PrinterNfcTagWrite-PrinterNfcTagConfigurationGet-DscConfigurationGet-DscLocalConfigurationManagerGet-DscResourceNew-DscCheckSum

Restore-DscConfigurationSet-DscLocalConfigurationManagerStart-DscConfigurationTest-DscConfigurationGet-SMCounterSampleGet-SMPerformanceCollectorGet-SMServerBpaResultGet-SMServerClusterNameGet-SMServerEventGet-SMServerFeatureGet-SMServerInventoryGet-SMServerServiceRemove-SMServerPerformanceLogStart-SMPerformanceCollectorStop-SMPerformanceCollectorDisable-SmbDelegationEnable-SmbDelegationGet-SmbBandWidthLimitGet-SmbDelegationRemove-SmbBandwidthLimitSet-SmbBandwidthLimitSet-SmbPathAclMove-SmbClientGet-SilComputerGet-SilDataGet-SilLoggingGet-SilSoftwareGet-SilUalAccessGet-SilWindowsUpdatePublish-SilDataSet-SilLoggingStart-SilLoggingStop-SilLoggingExport-StartLayoutGet-StartAppsImport-StartLayoutClear-FileStorageTierFlush-VolumeGet-FileStorageTierGet-StorageNodeGet-StorageTier

Get-StorageTierSupportedSizeNew-StorageTierNew-VolumeRegister-StorageSubsystemRemove-StorageTierResize-StorageTierSet-FileStorageTierSet-StorageProviderSet-StorageTierUnregister-StorageSubsystemUpdate-StoragePoolWrite-FileSystemCacheWrite-VolumeCacheDisable-TlsSessionTicketKeyEnable-TlsSessionTicketKeyExport-TlsSessionTicketKeyNew-TlsSessionTicketKeyGet-TpmEndorsementKeyInfoGet-TpmSupportedFeatureAdd-VpnConnectionRouteAdd-VpnConnectionTriggerApplicationAdd-VpnConnectionTriggerDnsConfigurationAdd-VpnConnectionTriggerTrustedNetworkGet-VpnConnectionTriggerNew-VpnServerAddressRemove-VpnConnectionRouteRemove-VpnConnectionTriggerApplicationRemove-VpnConnectionTriggerDnsConfigurationRemove-VpnConnectionTriggerTrustedNetworkSet-VpnConnectionIPsecConfigurationSet-VpnConnectionTriggerDnsConfigurationSet-VpnConnectionTriggerTrustedNetworkGet-WindowsSearchSettingSet-WindowsSearchSetting:

Page 14: PowerShell を使用した Hyper-V の管理

追加されたコマンド (Hyper-V 関連)

• Hyper-V モジュール• Copy-VMFile

• Debug-VM

• Test-VMNetworkAdapter

• *-VMFirmware

• *-VMNetworkAdapterExtendedAcl

• *-VmNetworkAdapterIsolation

• *-VmNetworkAdapterRoutingDomainMapping

• NetWNV モジュール• Select-NetVirtualizationNextHop

14

Page 15: PowerShell を使用した Hyper-V の管理

PowerShell 4.0 の主な変更点

• 運用管理者の視点では…• Default Execution Policy

• Get-FileHash コマンドレット

• Desired State Configuration (DSC)

• *-ScheduledJob の RunNow パラメーター

• *-JobTrigger の RepeatIndefinitely パラメーター

• Get-Process コマンドレットの IncludeUserName パラメーター

• etc...

What's New in Windows PowerShell

http://technet.microsoft.com/en-us/library/hh857339.aspx

15

Page 16: PowerShell を使用した Hyper-V の管理

Default Execution Policy の変更

• Default の実行ポリシーが RemoteSigned に変更• Windows Server 2012 R2 のみ

– Local Machine ポリシーの既定値が変更された

• Windows 8.1 は Undefined のまま

※実行ポリシーの話は後ほど

16

Page 17: PowerShell を使用した Hyper-V の管理

Get-FileHash コマンドレット

• ファイルのハッシュ値を計算するコマンドレット

• 複数のハッシュアルゴリズムに対応• SHA1, SHA256, SHA384, SHA512, MACTripleDES, MD5,

RIPEMD160

• デフォルトは SHA256

• PowerShell 3.0 以前でも .NET のクラスを使用することでハッシュ値の計算は可能• System.Security.Cryptography.SHA1

• System.Security.Cryptography.MD5

17

Page 18: PowerShell を使用した Hyper-V の管理

Get-FileHash コマンドレット

18

Page 19: PowerShell を使用した Hyper-V の管理

Desired State Configuration (DSC)

• Windows PowerShell Desired State Configuration• サーバーの構成と管理を行うための新機能

• サーバーに対する操作 (構築) 手順ではなく、サーバーの状態を記述することでサーバーを自動構成

• DSC によるサーバーの構成手順• PowerShell で構成後のサーバーの状態を定義

• PowerShell コードから構成データが含まれる MOF ファイルを生成

• MOF ファイルを使用してサーバーを構成

19

Page 20: PowerShell を使用した Hyper-V の管理

DSC の Configuration

20

Configuration WebServerConfig{

Node web01{

WindowsFeature FTPRole{

Name = "Web-FTP-Server"Ensure = "Present"IncludeAllSubFeature = $true

}}

} WebServerConfigStart-DscConfiguration -Wait -Path .¥WebServerConfig

Page 21: PowerShell を使用した Hyper-V の管理

DSC リソース

21

Archive Environment File Resources A

Group Log Package Resources B

Process Registry Role Resources C

Script Service User Resources D

Windows PowerShell Desired State Configuration

Built-In Resources Custom Resources

Page 22: PowerShell を使用した Hyper-V の管理

DSC ビルトイン リソース

• Role• Windows の役割や機能を構成

• User / Group• ローカルユーザーやグループを構成

• Service• Windows サービスの状態を構成

• Package• Windows インストーラーや setup.exe などのパッケージを構成

• File• ファイルやフォルダーを構成

• etc...

22

Page 23: PowerShell を使用した Hyper-V の管理

Desired State Configuration

DEMO

Page 24: PowerShell を使用した Hyper-V の管理

PowerShell による管理・運用

24

Page 25: PowerShell を使用した Hyper-V の管理

PowerShell による管理・運用

• PowerShell を使用する目的• 管理タスクの自動化

• 運用管理の効率化

• 運用管理を自動化・効率化するための準備• スクリプトを実行できるよう構成する

• リモートから接続して管理できるよう構成する

• PowerShell 起動時のプロファイルを構成する

25

Page 26: PowerShell を使用した Hyper-V の管理

スクリプトの実行許可

• スクリプトの実行やコンフィグレーションのロード• 実行ポリシー (Execution Policy) によって制御される

• 既定値では、スクリプトの実行が禁止されている

– Windows Server 2012 R2 以外

• 実行ポリシーの確認と変更• Get-ExecutionPolicy / Set-ExecutionPolicy

• グループポリシーによる設定

– コンピューターポリシー / ユーザーポリシー

• PowerShell 起動時のオプションで指定

– powershell.exe -ExecutionPolicy <Policy>

26

Page 27: PowerShell を使用した Hyper-V の管理

実行ポリシー

• 実行ポリシーは以下の 6 種類 (5 段階 + “未定義”)• Restricted : スクリプトの実行を禁止する

• AllSigned : 有効な署名付きのスクリプトのみ実行可能

• RemoteSigned : ローカルのスクリプトは無条件に実行可能リモートから取得したスクリプトには署名が必要

• Unrestricted : スクリプトは実行可能 (一部警告表示あり)

• Bypass : スクリプトは実行可能 (警告表示なし)

• Undefined : 未定義

• 規定値は Undefined• Windows Server 2012 R2 のみ RemoteSigned (LocalMachine Scope)

• 全てのスコープで Undefined の場合、Restricted とみなされる

27

Page 28: PowerShell を使用した Hyper-V の管理

実行ポリシーのスコープ

• 実行ポリシーはスコープごとに設定可能• MachinePolicy : グループポリシーによる設定 (Computer)

• UserPolicy : グループポリシーによる設定 (User)

• Process : 実行中の PowerShell セッション内のみ有効

• CurrentUser : ログインユーザーの設定 (レジストリに格納)

• LocalMachine : ローカルコンピューターの設定 (レジストリに格納)

• 上位スコープの設定が優先される

• 基本的には管理者権限で設定を行う• Process / CurrentUser スコープは一般ユーザー権限で設定変更可能

• LocalMachine スコープでスクリプト実行を禁止していても、Process スコープで実行を許可することで、一時的なスクリプトの実行が可能

28

Page 29: PowerShell を使用した Hyper-V の管理

リモート接続の構成

• リモート コンピューターへ接続して操作を行う• WS-Management を使用してリモートコンピューターの WinRM

(Windows Remote Management) サービスへ接続する

• 事前にリモート接続の構成が必要

– Windows Server 2012 R2 では、同一セグメントからのリモート接続がデフォルトで許可されている

• とりあえず接続したい場合は以下を実行 (検証環境向け)

– 接続先 : Enable-PSRemoting -Force

– 接続元 : Set-Item WSMan:¥localhost¥Client¥TrustedHosts -Value *

– 本番環境へ適用する際は、設定の意味を理解してセキュリティを考慮する

• Get-Help about_Remote

– http://technet.microsoft.com/en-us/library/hh847900.aspx

29

Page 30: PowerShell を使用した Hyper-V の管理

リモート接続の要件

• リモート接続の要件を満たすようコンピューターを構成する• WinRM サービスが起動している

• WinRM のエンドポイントが適切に構成されている

• Windows Firewall やその他の Firewall 製品で通信が許可されている

– ネットワークロケーションがパブリック ネットワークの場合、PowerShell のバージョン / OS によって Enable-PSRemoting の挙動が異なるので注意

• 接続先コンピューターの Administrators グループに所属しているか、権限が適切に構成されている

• 接続先に対する資格情報の送信が許可されている

– ドメインに参加しているか、TrustedHosts が適切に構成されている

• Get-Help about_Remote_Requirements

– http://technet.microsoft.com/en-us/library/hh847859.aspx

30

Page 31: PowerShell を使用した Hyper-V の管理

リモート接続時の注意点

• PowerShell のバージョンによりセッションの扱いが異なる• PowerShell 2.0 / WinRM 2.0 では接続元側でセッション情報を保持

• PowerShell 3.0 / WinRM 3.0 以降は接続先側でセッション情報を保持

– セッションを切断し、別の接続元から同一のセッションへ再接続が可能

• トラブルが少ない構成• ドメイン環境

• Domain Admins グループのユーザーを使用

• WMF (Windows Management Framework) 3.0(PowerShell 3.0 / WinRM 3.0) 以降を使用

31

Page 32: PowerShell を使用した Hyper-V の管理

プロファイルの構成

• プロファイル• PowerShell 起動時に自動的にロードされるスクリプト

• 以下の4種類 (上から順に実行される)– $PROFILE.AllUsersAllHosts

• $PSHOME¥profile.ps1

– $PROFILE.AllUsersCurrentHost• $PSHOME¥Microsoft.PowerShell_profile.ps1

• $PSHOME¥Microsoft.PowerShellISE_profile.ps1

– $PROFILE.CurrentUserAllHosts• $HOME¥Documents¥WindowsPowerShell¥profile.ps1

– $PROFILE.CurrentUserCurrentHost• $HOME¥Documents¥WindowsPowerShell¥Microsoft.PowerShell_profile.ps1

• $HOME¥Documents¥WindowsPowerShell¥Microsoft.PowerShellISE_profile.ps1

32

Page 33: PowerShell を使用した Hyper-V の管理

PowerShell 起動時に実行ログの取得を開始

• PowerShell で実行ログを取得• Start-Transcript コマンドレット

• PowerShell 起動時に Start-Transcript を実行• プロファイル内で Start-Transcript を実行

• AllUsersCurrentHost または CurrentUserCurrentHost に記述– PowerShell ISE はトランスクリプションをサポートしない

• トランスクリプトへの出力は PowerShell の実行ログのみ• PowerShell から起動した外部コマンド (ipconfig など) の出力は

記録されない

• 外部コマンドの出力を記録したい場合は、Start-Process で標準出力や標準エラー出力をリダイレクトする

33

Page 34: PowerShell を使用した Hyper-V の管理

PowerShell による Hyper-V 環境の管理

34

Page 35: PowerShell を使用した Hyper-V の管理

PowerShell による Hyper-V 環境の管理

• Hyper-V ホスト / 仮想マシンの管理• 基本的に Hyper-V モジュールのコマンドレットを使用

• タスクに応じて適切なコマンドレットを選択

– Get-* : 状態の確認、情報取得

– New-* : 新規作成

– Set-* : 設定の変更

– Add-* : 設定の追加、コンポーネントの追加

– Remove-* : 削除、コンポーネントの取り外し

– その他、直観的な動詞Start-* / Stop-* / Suspend-* / Resume-* / Move-* / etc...

35

Page 36: PowerShell を使用した Hyper-V の管理

仮想マシンの構成・管理

• 仮想マシンの状態を変更• Start-VM / Stop-VM / Restart-VM

Suspend-VM / Resume-VM / Save-VM

• 仮想マシンの作成、削除• New-VM / Remove-VM

• 仮想マシンの構成変更• Set-VM

• Set-VMBios / Set-VMProcessor / Set-VMMemorySet-VMHardDiskDrive / Set-VMNetworkAdapter

• Enable-VMIntegrationService / Disable-VMIntegrationService

36

Page 37: PowerShell を使用した Hyper-V の管理

スナップショットの管理と仮想マシンのエクスポート

• スナップショットの管理• Checkpoint-VM

• Restore-VMSnapshot

• Remove-VMSnapshot

• 仮想マシンのエクスポート / インポート• Import-VM

• Export-VM

• Export-VMSnapshot

37

Page 38: PowerShell を使用した Hyper-V の管理

レプリケーションの管理

• Hyper-V Replica によるレプリケーションの管理• Enable-VMReplication

• Set-VMReplication

• Start-VMInitialReplication / Stop-VMInitialReplication

• Import-VMInitialReplication

• Stop-VMReplication

• Suspend-VMReplication / Resume-VMReplication

• Remove-VMReplication

• Start-VMFailover

• Stop-VMFailover

38

Page 39: PowerShell を使用した Hyper-V の管理

その他の操作

• ライブマイグレーション• Move-VM

• Move-VMStorage

• VHD / VHDX の管理• New-VHD

• Mount-VHD

• Dismount-VHD

• その他• Copy-VMFile

39

Page 40: PowerShell を使用した Hyper-V の管理

Copy-VMFile

• Hyper-V ホストから仮想マシンへファイルをコピー• 仮想マシンから Hyper-V ホストへのコピーはできない

• 対象となる仮想マシンの要件

– 仮想マシンの設定で統合サービスの「ゲスト サービス」が有効化されている(既定値は「無効」)

– 仮想マシンの OS で「Hyper-V ゲスト サービス インターフェイス」サービス(vmicguestinterface) が起動している

• コピー先のパスに対して、コピー先 OS 上の Administrators グループが「フル コントロール」を保持している必要がある

– Administrator アカウントではなく、Administrators グループ

40

Page 41: PowerShell を使用した Hyper-V の管理

Copy Files to VM w/o Network

DEMO

Page 42: PowerShell を使用した Hyper-V の管理

Hyper-V を管理する際の注意点

• WMI の名前空間• root¥virtualization 名前空間が Windows Server 2012 R2 で廃止に

– Windows Server 2012 時点で非推奨となっていた

• root¥virtualization¥v2 を使用する

• Windows Server 2008 R2 などからスクリプトを移植する際は注意

42

Page 43: PowerShell を使用した Hyper-V の管理

本日のデモシナリオ

• OSの構成変更前にスナップショットを取得

• クロスバージョン ライブマイグレーション

• Hyper-V Replica テストフェイルオーバー

• 仮想マシンの展開

43

Page 44: PowerShell を使用した Hyper-V の管理

OSの構成変更前にスナップショットを取得

• 重要な変更を行う前にスナップショットを取得• 変更に成功したらスナップショットを削除

• 変更に失敗したらスナップショットへ戻す

• スナップショット (チェックポイント) の操作• Checkpoint-VM

• Restore-VMSnapshot

• Remove-VMSnapshot

44

Page 45: PowerShell を使用した Hyper-V の管理

Create / Revert VM Snapshot

DEMO

Page 46: PowerShell を使用した Hyper-V の管理

クロスバージョン ライブマイグレーション

• ライブマイグレーション• 仮想マシンをオンラインのままホストを移動

• 仮想マシンのディスクを同時に移動することも可能

• PowerShell であれば Move-VM するだけ

• クロスバージョン ライブマイグレーション• 異なる Hyper-V ホスト OS バージョン間でのライブマイグレーション

• 特別な準備は不要 (ライブマイグレーションと同様の設定で問題ない)

• 現状では Windows Server 2012 R2 への移行のみ

46

Page 47: PowerShell を使用した Hyper-V の管理

Cross-version Live Migrations

DEMO

Page 48: PowerShell を使用した Hyper-V の管理

Hyper-V Replica の制御

• Hyper-V Replica テスト フェイルオーバー• レプリカ ホスト側で保護対象の仮想マシンを一時的に起動

• プライマリホスト側で稼働中の仮想マシンには影響を与えない

• デフォルトでは、テスト中の VM は仮想スイッチにつながっていない状態

– 改めて仮想マシンの設定を変更しスイッチへ接続

– Set-VMNetworkAdapter で事前に設定

• テスト フェイルオーバーの操作 (開始) は、レプリカ ホスト側で実施

• 本番のフェイルオーバーも同様の手順で実施可能

48

Page 49: PowerShell を使用した Hyper-V の管理

Hyper-V ReplicaTest Failover

DEMO

Page 50: PowerShell を使用した Hyper-V の管理

仮想マシンの展開

• テンプレートから仮想マシンを展開• 構成済みの仮想ハードディスクイメージを複製して仮想マシンを作成

• 用意するもの• 構成済みの仮想ハードディスクイメージ

– 展開時のマスターイメージとして使用

– Windowsの場合はsysprepを使用して展開用に準備

– 仮想マシンが停止している状態のイメージを使用

– 単一のイメージファイルへ結合(スナップショット削除/差分ディスク結合)

• 自動応答ファイル

– 展開するOSがWindowsで、展開後の構成を自動化したい場合

50

Page 51: PowerShell を使用した Hyper-V の管理

Sysprep

• システム準備ツール(System Preparation Tool)• インストール済みのWindowsからコンピューター固有の情報を削除し、

複製/展開に使用できるように準備するツール

• インストール済みの(展開時にマスターイメージとして使用する) Windows上で実行

• C:¥Windows¥System32¥Sysprep¥Sysprep.exe

– Sysprep.exe /generalize /oobe /shutdown [/mode:vm]

• http://technet.microsoft.com/ja-jp/library/hh825033.aspx

51

Page 52: PowerShell を使用した Hyper-V の管理

Sysprep

• VMモード• /mode:vm

• ハードウェアのスキャン/構成をスキップ

• 同じ仮想マシンまたはハイパーバイザーに展開する場合のみ有効

• 異なるハードウェアプロファイルのVMに展開すると正常に動作しない

• 仮想マシンにインストールされたWindows上でのみ指定可能

• 仮想マシン展開用のマスターイメージ• DHCPを使用する構成で仮想マシンを展開 ⇒ VMモード

– DHCP構成で展開した後、手動またはスクリプトで固定IPをアサイン

• 固定IPを使用する構成で仮想マシンを展開 ⇒ VMモードは使用しない

52

Page 53: PowerShell を使用した Hyper-V の管理

DeployingVirtual Machines

DEMO

Page 54: PowerShell を使用した Hyper-V の管理

仮想マシンの展開

• スクリプトの内容(動的IP版)• Sysprep 済みの仮想ハードディスクイメージを親ディスクとして、

新規仮想マシン用の差分ディスクを作成

• 仮想マシンを作成

• 仮想マシンのパラメーターを調整

• 仮想ハードディスクのマウント

• 自動応答ファイルを配置

• 仮想ハードディスクのアンマウント

• 電源オン

54

Page 55: PowerShell を使用した Hyper-V の管理

仮想マシンの展開

• スクリプトの内容(固定IP版)• Sysprep 済みの仮想ハードディスクイメージを親ディスクとして、

新規仮想マシン用の差分ディスクを作成

• 空の仮想ハードディスクを使用して仮想マシンを作成

• 仮想マシンのパラメーターを調整

• 電源オン / 電源オフ (MACアドレスのアサイン)

• 仮想ハードディスクの接続変更

• 仮想ハードディスクのマウント

• 自動応答ファイルを配置

• 仮想ハードディスクのアンマウント

• 電源オン

55

Page 56: PowerShell を使用した Hyper-V の管理

まとめ

• PowerShell により運用管理タスクを自動化できる• 運用管理の負荷を軽減

• サービスレベルの向上

– ユーザーの要望に迅速に対応できる、など

• 一からスクリプトを作成するのは大変• 高度な用途、大規模な環境には、ぜひ System Center を

56

Page 57: PowerShell を使用した Hyper-V の管理

参考資料

• Windows Server 2012 勉強会キット• Windows PowerShell 4.0 による Windows Server 2012 R2 の管理 ~

Hyper-V 編

• http://technet.microsoft.com/ja-jp/windowsserver/jj649374.aspx

• Microsoft Virtual Academy• http://www.microsoftvirtualacademy.com

– Windows Server 2012 管理のための Windows PowerShell 3.0 新機能解説

– Getting Started with PowerShell 3.0 Jump Start

– Windows Server 2012 R2: Server Management and Automation

• PowerShell Advent Calendar 2013• http://atnd.org/events/45107

57

Page 58: PowerShell を使用した Hyper-V の管理

58

Q & A

Page 59: PowerShell を使用した Hyper-V の管理

ご清聴ありがとうございました

59

Thank You!