PowerShell Desired State Configuration(DSC)とは(前編):PowerShell DSCで始めるWindowsインフラストラクチャ自動化の基本(2/2 ページ)
Windows OSの設定や構成を変更する場合、GUIの管理ツールを使うのが一般的である。だが台数が多かったり、構成変更や以前の構成への復旧などが頻繁だったりするとGUIでは非常に面倒だし、間違いもしやすくなる。こんな場合はPowerShell DSCを使ってインフラ構築作業を自動化するとよい。
それではDSCを使用するための準備をしよう。
DSCは、PowerShell 4.0をコアとする「Windows Management Framework 4.0(WMF 4.0)」に含まれている。従って、DSCサーバーでもノードでもWMF 4.0が入っていればDSCが利用できる。
利用可能環境
WMF 4.0がサポートされている、すなわちPowerShell DSCが利用できるWindows OSは次の通りだ。
OS | DSC/PowerShell 4.0 | 事前準備 | インストーラー |
---|---|---|---|
Windows 7 | WMF 4.0導入で可能 | ・Windows 7 SP1(KB976932) ・.NET Framework 4.5(※) |
・x64用WMF 4.0:Windows6.1-KB2819745-x64-MultiPkg.msu ・x86用WMF 4.0:Windows6.1-KB2819745-x86.msu |
Windows 8 | Windows 8.1へのアップグレードが必須 | N/A | N/A |
Windows 8.1 | 標準 | N/A | N/A |
Windows Server 2008 R2 | WMF 4.0導入で可能 | ・Windows Server 2008 R2 SP1(KB976932) ・.NET Framework 4.5(※) |
・x64用WMF 4.0:Windows6.1-KB2819745-x64-MultiPkg.msu |
Windows Server 2012 | WMF 4.0導入で可能 | ・.NET Framework 4.5(標準でインストール済み) | ・x64用WMF 4.0:Windows8-RT-KB2799888-x64.msu |
Windows Server 2012 R2 | 標準 | N/A | N/A |
WMF 4.0がサポートされている対象Windows OS PowerShell DSCを利用するには、「事前準備」にあるコンポーネントやService Packをあらかじめインストールした後に、「インストーラー」を実行してWMF 4.0をインストールする必要がある。 ※:事前に.NET Framework 4.5をインストールしてからWMF 4.0をインストールすること。「WMF 4.0 - Known Issue: Partial Installation without .NET Framework 4.5[英語](Windows PowerShell Blog)」も参照。 |
OSごとの設定は次のようになる。
- Windows Server 2012 R2とWindows8.1にはWMF 4.0が標準でインストールされている
- Windows Server 2012では、WMF 4.0を追加でインストールする
- Windows 8では、Windows 8.1にアップグレードする必要がある(WMF 4.0単体のインストールはサポートされていない)
- Windows Server 2008 R2やWindows 7では、まずOSのService Pack 1(SP1)、次に.NET Framework 4.5、最後にWMF 4.0という順番でインストールする
残念ながら、Windows Server 2008以前のServer OSやWindows VistaではWMF 4.0はサポートされていない。
WMF 4.0をインストールするに当たっては、マイクロソフトの他のサーバー向け製品との互換性に注意が必要だ。一部製品が導入されている場合は互換性問題が報告されているので、事前にSPを適用するなどの対応が必要である。詳細については、「Windows Management Framework 4.0(WMF 4.0)」の「システム要件」の記述を参照していただきたい。
互換性問題があるマイクロソフト製品名 | 必要な準備 |
---|---|
・System Center 2012 Configuration Manager | SP1を適用する |
・System Center Virtual Machine Manager 2008 R2 | WMF 4.0はインストール不可。SP1をインストールしても、WMF 4.0とは共存不可 |
・Microsoft Exchange Server 2007 | WMF 4.0はインストール不可 |
・Microsoft Exchange Server 2010(※) | SP3および 更新プログラムのロールアップ5 を適用する |
・Microsoft Exchange Server 2013(※) | SP1 を適用する |
・Microsoft SharePoint Server 2010 | 2014年2月の累積的な更新プログラム を適用する |
・Microsoft SharePoint Server 2013 | SP1 を適用する |
・Windows Small Business Server 2011 Standard | WMF 4.0はインストール不可 |
DSCとマイクロソフト製品との互換性 製品によっては、Service packを適用するなどの事前準備をしてからWMF 4.0をインストールする必要がある。 ※:Exchange Server 2010/2013に関しては、「Exchange Server のサポート一覧」の「Windows 管理フレームワーク」も参照のこと。 |
WMF 4.0のインストール後のバージョンと動作の確認
WMF 4.0がインストールできたら、DSCの実行前にPowerShellのバージョンを確認しよう。WMF 4.0がインストールされた環境のPowerShellはバージョンが4.0となる。バージョン確認は、PowerShellコンソール を起動して「PSVersionTable」変数を確認するだけだ。
$PSVersionTable
実行してみた結果が次の画面だ。PSVersionが4.0になっているのが確認できるだろう。
PowerShellのバージョンを確認する
PowerShellのバージョンを確認するには、PowerShellを起動して$PSVersionTable変数の内容を表示させる。
(1)「PSVersion」の「Value」がPowerShellのバージョンを表す。「4.0」になっていることを確認する。
PowerShellを起動する方法だが、Windows Server 2012/2012 R2では初期状態でタスクバーにPowerShellがピン留めされているので、簡単に起動できる。
インストール直後のWindows Server 2012 R2
タスクバーにピン止めされた「PowerShellコンソール」のアイコンをクリックしてPowerShellを起動する。
(1)これをクリックする。
他のバージョンのWindows OSでは、[Windows]+[R]キーで「ファイル名を指定して実行」ダイアログを開き、「powershell」と入力すれば起動できる。
PowerShellの起動
PowerShellは、[スタート]メニューから起動するか、[Windows]+[R]キーで「ファイル名を指定して実行」から起動する。
(1)「powershell」と入力する。
(2)これをクリックするとPowerShellが起動する。
DSCの環境構築
DSCを利用するには、DSCサーバーとノードがお互いにリモート処理できる必要がある。DSCは、「DMTF」標準に沿って「Managed Object Format(MOF)」や「WS-Management(WSMan)」で構成されていて、リモート処理にはWS-ManagementのWindows版実装であるWinRMが用いられる。そのため、サーバーとノードの両方でWinRMを利用できるようにする必要がある。ここではPowerShellを使って、WinRMを有効にしていく。
まずは、PowerShellを「管理者として実行する」で起動する。
PowerShellを管理者権限で起動する
これはWindows Server 2012 R2の例。WinRMを有効にするには、管理者権限で起動したPowerShellを使って設定する。
(1)タスクバーの「PowerShell」のアイコンを右クリックする。
(2)[管理者として実行]を選択する。
実行するコードは次の2行だ。
Enable-PSRemoting -Force
Set-Item wsman:\localhost\Client\TrustedHosts -Value * -Force
それぞれ何をしているのか見てみよう。
1行目は、PowerShellでのWinRM(PowerShellではPSRemotingと呼ばれる)を有効化するコマンドだ。
Enable-PSRemoting -Force
以下のようにエラーが発生せずに実行されることを確認する。
2行目では、接続先のマシンが信頼できることをWinRMにある「TrustedHosts」に設定している。今回は分かりやすいように「*」を使って全ホストを無条件で信頼しているが、IPアドレスやFQDNでホストを限定することも可能だ。
Set-Item wsman:\localhost\Client\TrustedHosts -Value * -Force
Windows Server 2012 R2以外でDSCを構築する場合
PowerShellは対話的にコードを書く以外にもスクリプトファイル(.ps1ファイル)からコードを読み込むことができる。DSCを試す場合も、.ps1ファイルを実行することがある。しかし、Windows Server 2012 R2以外のWindows OSではセキュリティ上の理由から、デフォルトで.ps1ファイルの実行が禁止されている(Restrictedに設定されている)。そこで、.ps1ファイルの実行権限をWindows Server 2012 R2のデフォルトと同じ「RemoteSigned」に設定する方法を紹介する。
RemoteSignedは、「ローカルに保存されているスクリプトは実行可能。インターネットからダウンロードしたスクリプト(非ローカルのスクリプト)は、署名されているもののみが実行可能」な権限だ。詳しくはTIPS「PowerShellスクリプトの実行セキュリティ・ポリシーを変更する」を見てほしい。
次のコードを「管理者として実行したPowerShell」で実行することで実行権限が「RemoteSigned」に変わる。
Set-ExecutionPolicy RemoteSigned
今回はPowerShell DSCの概要について説明した。次回の中編から、具体的にPowerShell DSCのプッシュ型とプル型で実行する例を取り上げる。
Copyright© Digital Advantage Corp. All Rights Reserved.