PowerShell DSC

概要

PowerShell Desired State Configuration
サーバー、クライアント、ホストマシン、仮想マシン、オンプレミス、クラウドに関わらず、
Windowインフラに対して望む状態(DesiredState)に構成する(Configuration)ツール。
WindowsServer2012R2以降
・Windowsのローカルユーザー、グループの作成
・プロセス、サービスの操作、
・環境変数、レジストリ、ファイルの操作
・パッケージのインストール
等の従来、手で行っていた作業をコード化&自動化できる。

Resource

MS-DOSにおけるコマンド
PowerShellにおけるコマンドレット
にあたる、
PowerShell DSCにおける命令、または命令群をコード化したスクリプトファイル。
PowerShell DSCのバージョンアップにより数が増える。

※PowerShell DSCの代表的標準Resource
Archive Resource
指定したパスに圧縮(.zip)ファイルの解凍を行う
Environment Resource
環境変数を管理する
File Resource
ファイルやディレクトリを管理する
Group Resource
ローカルグループを管理する
Log Resource
コンフィグレーションメッセージのログ
Package Resource
WindowsインストーラーやSetup.exeなどのパッケージをインストールしたり、管理したりする
Process Resource
Windowsプロセスを管理する
Registry Resource
レジストリキーや値を管理する
Role Resource
Windowsの機能と役割を管理する
Script Resource
Windows PowerShellスクリプトブロックを実行する
Service Resource
サービスを管理する
User Resource
ローカルユーザーを管理する

Configuration

PowerShellで記述したインフラ定義のスクリプトファイル。

DSCの特徴(三要素)

Infrastructure as Code

コード化されている事
DSCではPowerShellでコードによって記述されたインフラの定義スクリプト(Configuration)を実行する。
定義がコード化されている事により動作の再現性と自動化が保障される。
またインフラ定義をgit等のバージョン管理システムで管理する事で、
状態の変遷管理やロールバックが可能になる。

宣言的構文(Declarative Syntax)

DSCではConfigurationを宣言的構文で記述する。

冪等性(べき等性)

べき等性 = 1度行っても複数回行っても、同じ結果になる事。

コンフィギュレーション、リソースの適用パターン

プッシュ型

DSCサーバーからノード(適用対象クライアント)に対して命令を実行する。

プル型

ノード(適用対象クライアント)からDSCサーバーに対して問い合わせを行い、命令を実行させる。

Chefとの違い

同じ機能を持つChef(Windows対応可能)がサーバー、ノード両方にRuby等のインストールが必要なのに対し、DSCではPowerShellが入っていれば良い(通常入っている)。