これは、アドベントカレンダー10日目の記事です。
今日は対象ノードをあるべき状態に収束させる方法としてPUSHモードを使います。
PUSH振り返り
PUSHとPULLそれぞれのシナリオの違いは、DSCサーバーとノードのどちらがトリガーを引くかです。
今回はDSCサーバーがトリガーなのでPUSHですね。
PUSHが何か忘れた人は4日目の記事をどうぞ
ちょっとだけ振り返り
あるべき状態をコードにする Config as Code では、コンフィグレーションがあるべき状態でしたね?
コンフィグレーションはPowerShellでDSCを叩くための糖衣構文を利用したもので、実行によってMOFファイルがコンパイル、生成されました。
実際に対象ノードがCIM経由で自身を構成する時に使うのがMOFファイルで.... 9日目まではここまでを追ってきました。
今日は、続きである↓の流れを見ることになります。
- あるべき状態を記述したMOFファイルをノードに送って実行
- 実行が完了
想定するあるべき状態
次のコードにある、サービスの起動でやります。
現在の状態です。
両方止まっています。
Status Name DisplayName ------ ---- ----------- Stopped W32Time Windows Time Stopped wuauserv Windows Update
実行
- コンフィグレーションからMOFファイルの生成
- 対象ノードをあるべき状態に収束
コンフィグレーションからMOFファイルの生成
実行前にコンフィグレーションを実行してMOFファイルを生成します。
7日目にMOFの生成でやりましたね
さらに、8日目にやった通りロールを指定してノードに合わせた実行を行います。
同様にやります。
実行結果です。
Directory: D:\Service Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 2014/12/12 4:41 1870 127.0.0.1.mof
MOFファイルも生成できました。
対象ノードをあるべき状態に収束
生成したMOFファイルのフォルダを指定して対象ノードに実行します。
実行結果です。 うまく適用できていますね。
Directory: D:\Service Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 2014/12/12 4:46 1870 127.0.0.1.mof VERBOSE: Perform operation 'Invoke CimMethod' with following parameters, ''methodName' = SendConfigurationApply,'className' = MSFT_DSCLocalConfigurationManager,'namespaceName' = root/Microsoft/Windows/DesiredStateConfiguration'. VERBOSE: An LCM method call arrived from computer WINDOWS81X64 with user sid S-1-5-21-386 7976201-3469415403-658829222-1001. VERBOSE: [WINDOWS81X64]: LCM: [ Start Set ] VERBOSE: [WINDOWS81X64]: LCM: [ Start Resource ] [[Service]w32time] VERBOSE: [WINDOWS81X64]: LCM: [ Start Test ] [[Service]w32time] VERBOSE: [WINDOWS81X64]: [[Service]w32time] サービス 'w32time' の開始 の種類は 'Manual' です。'Automatic' と一致しません。 VERBOSE: [WINDOWS81X64]: LCM: [ End Test ] [[Service]w32time] in 0.3330 seconds . VERBOSE: [WINDOWS81X64]: LCM: [ Start Set ] [[Service]w32time] VERBOSE: [WINDOWS81X64]: [[Service]w32time] サービス 'w32time' が開始 されました。 VERBOSE: [WINDOWS81X64]: LCM: [ End Set ] [[Service]w32time] in 0.1430 seconds . VERBOSE: [WINDOWS81X64]: LCM: [ End Resource ] [[Service]w32time] VERBOSE: [WINDOWS81X64]: LCM: [ Start Resource ] [[Service]wuauserv] VERBOSE: [WINDOWS81X64]: LCM: [ Start Test ] [[Service]wuauserv] VERBOSE: [WINDOWS81X64]: [[Service]wuauserv] サービス 'wuauserv' の 開始の種類は 'Manual' です。'Automatic' と一致しません。 VERBOSE: [WINDOWS81X64]: LCM: [ End Test ] [[Service]wuauserv] in 0.0110 second s. VERBOSE: [WINDOWS81X64]: LCM: [ Start Set ] [[Service]wuauserv] VERBOSE: [WINDOWS81X64]: [[Service]wuauserv] サービス 'wuauserv' が 開始されました。 VERBOSE: [WINDOWS81X64]: LCM: [ End Set ] [[Service]wuauserv] in 0.2970 second s. VERBOSE: [WINDOWS81X64]: LCM: [ End Resource ] [[Service]wuauserv] VERBOSE: [WINDOWS81X64]: LCM: [ End Set ] in 1.3500 seconds. VERBOSE: Operation 'Invoke CimMethod' complete. VERBOSE: Time taken for configuration job to complete is 1.461 seconds
この時、つけたスイッチについて説明します。
-Wait
を付けることで-Wait
が完了するのを待ちます。外すとJobとしてバックグラウンドで実行されます-Verbose
をつけることで、リソースがTest -> Setされる動きが見えます。あとはリソース内部で-Verbose
しているメッセージも見えます-Path
に、MOFファイルを生成したフォルダを指定します。MOFファイルのフルパスじゃないので気を付けましょう
実行を確認する時に多く使うでしょうから、Start-DSCConfiguraion -Wait -Verbose -Path MOFフォルダパス
が定番でしょう。あとは、必要に応じてStart-DSCConfiguraion -Wait -Verbose -Path MOFフォルダパス
や、Start-DSCConfiguraion -Wait -Verbose -Path MOFフォルダパス
、あるいはStart-DSCConfiguraion -Wait -Verbose -Path MOFフォルダパス
を使ってリモートホストへの認証を対応するだけです。
実行結果
実行結果を見てみましょう。
Status Name DisplayName ------ ---- ----------- Running W32Time Windows Time Running wuauserv Windows Update
Runningになっていますね。元がStoppedだったので、起動が確認できます。
さらに、あるべき状態として、元がManual
(手動)のスターとアップだったのもManual
(自動)になっていますね。
まとめ
あるべき状態に収束したのがわかると思います。
ただのPSRemotingと似た操作でできる。こういう、すでにある仕組みに載せるのって大事ですね。
11日目はパスワードの暗号化周りですね。はい。やりますよ。