DSC 再入門
System Center User Group Japan 第19回 勉強会 (2018.02.24)
Kazuki Takai
自己紹介
 高井 一輝 (Takai Kazuki)
 某ISP勤務
 クラウドサービスの開発、設計、設備維持
 Windows Server / System Center / Linux / etc…
 Microsoft MVP - Cloud and Datacenter Management
 System Center User Group Japan (SCUGJ)
 Twitter : @zhuky7 / Facebook : kazuki.takai
 Blog : http://operationslab.wordpress.com/
内容とセッションのゴール
 DSC を使ってみようと思えるくらいに理解する
 AADSCを使ってみようと思えるくらいに理解する
Agenda
 Desired State Confiduration おさらい
 Pull Server を使用した管理
 Azure VM DSC Extension と Azure Automation DSC
 DSC の今後
はじめる前に
 本資料の内容は個人的な検証結果に基づきます
 所属する会社や組織、マイクロソフト社の公式な見解を記載するものではありま
せん
 表記や内容に誤りがあるなど、お気づきの点があれば、facebook 等でご連絡
いただけると幸いです
 今後のリリースで機能や動作が変更、削除される可能性があります
Review DSC Desired State Confiduration
おさらい
DSC とは?
 PowerShell で使える
 サーバーの設定ができる
 Chef とか Puppet みたいなやつ
DSC とは
 Desired State Configuration
 構成(Configuration)を特定の状態に保ち続けるための仕組み
 あるべき状態を定義
 定義に基づいて設定を変更
 定期的に設定をチェックし正しい状態を維持
 Configuration as Code を実現するもの
 コード化することで、管理・自動化が容易
 ソフトウェア開発のナレッジを適用可能
 PowerShell / WMF 4.0 以降で利用可能
Infrastructure as Code
 Infrastructure as Code (広義の): インフラのコード化は主に2種類
 Infrastructure as Code (狭義の)
 インフラ(ファブリック)の定義をコード化して、管理・自動構成する
 Azure Resource Manager, Chef Provision, etc…
 Configuration as Code
 ファブリック上で動作する環境(OS/OSE、ミドルウェア、アプリケーションなど)
の構成、設定をコード化して、管理・自動構成する
 PowerShell DSC, Azure Automation DSC, Chef, Puppet, etc…
DSC のメリット
 構成が管理されている
 あるべき状態が定義されている
 定義が表現されている(頭の中ではなくコードとして)
 構成を担保できる
 あるべき状態に保つ(保ち続ける)
 必ず「定義された状態」になる(オペミスしない)
 構成状態をレポートできる
DSC でできること
 サーバーの役割と機能の有効化または無効化
 レジストリ設定の管理
 ファイルとディレクトリの管理
 プロセスとサービスの開始、停止、および管理
 グループおよびユーザー アカウントの管理
 新しいソフトウェアの展開
 環境変数の管理
 Windows PowerShell スクリプトの実行
 望ましい状態からずれた構成の修正
 特定のノードでの実際の構成状態の検出
DSC Resource を追加、作成することで
構成範囲を拡大可能
DSC の構成要素
DSC Configuration MOF
ZIPDSC Resource
dll / ps1 / etc…
DSC Pull Server
WMF / PowerShell
Internet Information Services
DSC Service
+ Report Data
DSC Target Node
DSC の構成要素
 Configuration :「あるべき姿」を定義したもの
 Configuration キーワードによって定義が記述された PowerShell スクリプト
 Configuration をコンパイルした MOF ファイルをノードへ適用
 Resource :構成(操作)対象を実際に操作するために必要なもの
 Configuration に書かれた定義を、実際の操作(手続き)へ橋渡しする
 Local Configuration Manager (LCM; ローカル構成マネージャー)
 MOF と Resource を使用して実際に構成(設定変更)を実施
 DSC Pull サーバー
 ターゲットノードの LCM からの要求を受け付け、MOF およびリソースを応答
 LCM からのレポートを受信(レポートサーバー)
ローカル構成マネージャー
 LCM : Local Configuration Manager
 ノード構成ファイル(MOF)を解釈して構成を変更する DSC のエンジン
 更新モデルや構成モード、Pull サーバーのアドレスなどを設定
 構成モード
 ApplyOnly : 新しい構成は一度のみ適用し、構成の変更を追跡しない
 ApplyAndMonitor : 構成を適用後、変更を追跡する(自動修正はしない)(既定)
 ApplyAndAutoCorrect : 構成を適用後変更を追跡し、ずれが生じた場合は自動修正する
Push と Pull
 Push モデル
 DSC ターゲットノードへ構成ファイルを送信(Push)して構成を実施
 Push されたタイミングで 1 回のみ実行
 ローカルに Push する場合も、PSRemoting の有効化が必要
 Pull モデル
 DSC ターゲットノードが Pull サーバーから構成ファイルを取得(Pull)して構成を実施
 DSC ターゲットノード上の LCM が、定期的に Pull サーバーをポーリング
 DSC Pull サーバー側へ状態レポートを送信(オプション)
Demo
LCM
Push Configuration
Using Pull Server Pull Server を使用した管理
DSC Pull Service
 Pull Service
 Pull モデルにおける管理サーバー的な役割を果たすもの
 Configuration と Resource を配布
 現在利用可能な Pull Service
 Azure Automation Desired State Configuration (AA DSC)
 Windows PowerShell Desired State Configuration Service on Windows Server
 これが所謂 DSC Pull Server
 Community maintained open source solutions
 tug など
 SMB Share
推奨
DSC Service on Windows Server
 これ
 ----------------------------------------->
 xPSDesiredStateConfiguration を
使用して、DSC で構成すると楽
Demo
Configure Pull Server
DSC Extension &
AADSC
Azure VM DSC Extension と
Azure Automation DSC
DSC Extension とは
 Azure VM PowerShell Desired State Configuration Extension
 Azure VM の拡張機能
 仮想マシンの外から、DSC Configuration を実行させることが可能
 DSC Extension のみを使用する場合は、基本的に Push 型
 AADSC と組み合わせて使用する場合は、Pull 型での利用となる
Demo
Azure VM DSC Extension
DSC Extension 構成手順
 Portal
 .ps1 ファイルを zip アーカイブ
 VM の拡張機能から、DSC Extension を追加
 PowerShell
 Publish-AzureRmVMDscConfiguration
 .ps1 をアーカイブして、ストレージアカウントへ保存
 Set-AzureRmVmDscExtension
 Set するときの Version パラメーターは、DSC Extension のバージョンを指定
DSC Extension の注意点
 Configuration Modules or Script
 .ps1 ファイルは受け付けてもらえない
 .ps1 ファイル単体のみで構成可能な場合も、zip アーカイブが必要
ドキュメント上は問題なさそうですが…
Azure Automation DSC とは
 Azure Automation サービスの機能の一つ
 PowerShell DSC の Pull サーバー(のようなもの)としてふるまう
 DSC Pull サーバーを手元に用意しなくてもよい
 Azure VM との連携が容易
 OS 上で LCM を設定しなくても、ポータルからの操作のみで連携が可能
Azure Automation DSC の構成
DSC Configuration MOF
ZIPDSC Resource
dll / ps1 / etc…
Azure Automation
DSC Target Node
Demo
Azure Automation DSC
Azure Automation DSC 構成手順
 オートメーションアカウントを作成
 DSC 構成をアップロード
 DSC 構成をコンパイル
 対象ノードを Azure Automation DSC へオンボード(Azure VM 以外)
 対象ノードに DSC 構成を紐づけ
Azure Automation DSC の注意点
 DSC 構成の追加
 構成ファイル名(.ps1 ファイル名)は、.ps1 内の Configuration クラス名と同一であ
る必要がある
 構成ファイル名は、ハイフンを含めず、数字で始まらないようにする必要がある
 「名前」も Configuration クラス名と同一である必要がある
ドキュメントには書いてないですが、エラーになります
Future of DSC DSC の今後
DSC の今後
 LCM が大きく変化する予定
 (Windows 版は)WMF にバンドルされていたものが、WMF から切り離された個別
のコンポーネントに
 LCM そのものは、C++ ベースで再実装
 クロスプラとフォーム(Windows、Linux、MacOS?)
 .NET、.NET Core、Windows PowerShell、PowerShell Core などには非依存に
 オープンソース化
 Provider としては、PowerShell、C++、Python をサポート
まとめ
 DSC を使うことで、構成をコードで管理できる
 Pull Service を使用することで、一元的な管理が可能
 Azure Automation DSC はとても便利
参考資料
 PowerShell Team Blog
 https://blogs.msdn.microsoft.com/powershell/
 Windows PowerShell Desired State Configuration Overview
 https://docs.microsoft.com/en-us/powershell/dsc/overview
 tug
 https://github.com/PowerShellOrg/tug

DSC 再入門

  • 1.
    DSC 再入門 System CenterUser Group Japan 第19回 勉強会 (2018.02.24) Kazuki Takai
  • 2.
    自己紹介  高井 一輝(Takai Kazuki)  某ISP勤務  クラウドサービスの開発、設計、設備維持  Windows Server / System Center / Linux / etc…  Microsoft MVP - Cloud and Datacenter Management  System Center User Group Japan (SCUGJ)  Twitter : @zhuky7 / Facebook : kazuki.takai  Blog : http://operationslab.wordpress.com/
  • 3.
  • 4.
    Agenda  Desired StateConfiduration おさらい  Pull Server を使用した管理  Azure VM DSC Extension と Azure Automation DSC  DSC の今後
  • 5.
    はじめる前に  本資料の内容は個人的な検証結果に基づきます  所属する会社や組織、マイクロソフト社の公式な見解を記載するものではありま せん 表記や内容に誤りがあるなど、お気づきの点があれば、facebook 等でご連絡 いただけると幸いです  今後のリリースで機能や動作が変更、削除される可能性があります
  • 6.
    Review DSC DesiredState Confiduration おさらい
  • 7.
    DSC とは?  PowerShellで使える  サーバーの設定ができる  Chef とか Puppet みたいなやつ
  • 8.
    DSC とは  DesiredState Configuration  構成(Configuration)を特定の状態に保ち続けるための仕組み  あるべき状態を定義  定義に基づいて設定を変更  定期的に設定をチェックし正しい状態を維持  Configuration as Code を実現するもの  コード化することで、管理・自動化が容易  ソフトウェア開発のナレッジを適用可能  PowerShell / WMF 4.0 以降で利用可能
  • 9.
    Infrastructure as Code Infrastructure as Code (広義の): インフラのコード化は主に2種類  Infrastructure as Code (狭義の)  インフラ(ファブリック)の定義をコード化して、管理・自動構成する  Azure Resource Manager, Chef Provision, etc…  Configuration as Code  ファブリック上で動作する環境(OS/OSE、ミドルウェア、アプリケーションなど) の構成、設定をコード化して、管理・自動構成する  PowerShell DSC, Azure Automation DSC, Chef, Puppet, etc…
  • 10.
    DSC のメリット  構成が管理されている あるべき状態が定義されている  定義が表現されている(頭の中ではなくコードとして)  構成を担保できる  あるべき状態に保つ(保ち続ける)  必ず「定義された状態」になる(オペミスしない)  構成状態をレポートできる
  • 11.
    DSC でできること  サーバーの役割と機能の有効化または無効化 レジストリ設定の管理  ファイルとディレクトリの管理  プロセスとサービスの開始、停止、および管理  グループおよびユーザー アカウントの管理  新しいソフトウェアの展開  環境変数の管理  Windows PowerShell スクリプトの実行  望ましい状態からずれた構成の修正  特定のノードでの実際の構成状態の検出 DSC Resource を追加、作成することで 構成範囲を拡大可能
  • 12.
    DSC の構成要素 DSC ConfigurationMOF ZIPDSC Resource dll / ps1 / etc… DSC Pull Server WMF / PowerShell Internet Information Services DSC Service + Report Data DSC Target Node
  • 13.
    DSC の構成要素  Configuration:「あるべき姿」を定義したもの  Configuration キーワードによって定義が記述された PowerShell スクリプト  Configuration をコンパイルした MOF ファイルをノードへ適用  Resource :構成(操作)対象を実際に操作するために必要なもの  Configuration に書かれた定義を、実際の操作(手続き)へ橋渡しする  Local Configuration Manager (LCM; ローカル構成マネージャー)  MOF と Resource を使用して実際に構成(設定変更)を実施  DSC Pull サーバー  ターゲットノードの LCM からの要求を受け付け、MOF およびリソースを応答  LCM からのレポートを受信(レポートサーバー)
  • 14.
    ローカル構成マネージャー  LCM :Local Configuration Manager  ノード構成ファイル(MOF)を解釈して構成を変更する DSC のエンジン  更新モデルや構成モード、Pull サーバーのアドレスなどを設定  構成モード  ApplyOnly : 新しい構成は一度のみ適用し、構成の変更を追跡しない  ApplyAndMonitor : 構成を適用後、変更を追跡する(自動修正はしない)(既定)  ApplyAndAutoCorrect : 構成を適用後変更を追跡し、ずれが生じた場合は自動修正する
  • 15.
    Push と Pull Push モデル  DSC ターゲットノードへ構成ファイルを送信(Push)して構成を実施  Push されたタイミングで 1 回のみ実行  ローカルに Push する場合も、PSRemoting の有効化が必要  Pull モデル  DSC ターゲットノードが Pull サーバーから構成ファイルを取得(Pull)して構成を実施  DSC ターゲットノード上の LCM が、定期的に Pull サーバーをポーリング  DSC Pull サーバー側へ状態レポートを送信(オプション)
  • 16.
  • 17.
    Using Pull ServerPull Server を使用した管理
  • 18.
    DSC Pull Service Pull Service  Pull モデルにおける管理サーバー的な役割を果たすもの  Configuration と Resource を配布  現在利用可能な Pull Service  Azure Automation Desired State Configuration (AA DSC)  Windows PowerShell Desired State Configuration Service on Windows Server  これが所謂 DSC Pull Server  Community maintained open source solutions  tug など  SMB Share 推奨
  • 19.
    DSC Service onWindows Server  これ  ----------------------------------------->  xPSDesiredStateConfiguration を 使用して、DSC で構成すると楽
  • 20.
  • 21.
    DSC Extension & AADSC AzureVM DSC Extension と Azure Automation DSC
  • 22.
    DSC Extension とは Azure VM PowerShell Desired State Configuration Extension  Azure VM の拡張機能  仮想マシンの外から、DSC Configuration を実行させることが可能  DSC Extension のみを使用する場合は、基本的に Push 型  AADSC と組み合わせて使用する場合は、Pull 型での利用となる
  • 23.
  • 24.
    DSC Extension 構成手順 Portal  .ps1 ファイルを zip アーカイブ  VM の拡張機能から、DSC Extension を追加  PowerShell  Publish-AzureRmVMDscConfiguration  .ps1 をアーカイブして、ストレージアカウントへ保存  Set-AzureRmVmDscExtension  Set するときの Version パラメーターは、DSC Extension のバージョンを指定
  • 25.
    DSC Extension の注意点 Configuration Modules or Script  .ps1 ファイルは受け付けてもらえない  .ps1 ファイル単体のみで構成可能な場合も、zip アーカイブが必要 ドキュメント上は問題なさそうですが…
  • 26.
    Azure Automation DSCとは  Azure Automation サービスの機能の一つ  PowerShell DSC の Pull サーバー(のようなもの)としてふるまう  DSC Pull サーバーを手元に用意しなくてもよい  Azure VM との連携が容易  OS 上で LCM を設定しなくても、ポータルからの操作のみで連携が可能
  • 27.
    Azure Automation DSCの構成 DSC Configuration MOF ZIPDSC Resource dll / ps1 / etc… Azure Automation DSC Target Node
  • 28.
  • 29.
    Azure Automation DSC構成手順  オートメーションアカウントを作成  DSC 構成をアップロード  DSC 構成をコンパイル  対象ノードを Azure Automation DSC へオンボード(Azure VM 以外)  対象ノードに DSC 構成を紐づけ
  • 30.
    Azure Automation DSCの注意点  DSC 構成の追加  構成ファイル名(.ps1 ファイル名)は、.ps1 内の Configuration クラス名と同一であ る必要がある  構成ファイル名は、ハイフンを含めず、数字で始まらないようにする必要がある  「名前」も Configuration クラス名と同一である必要がある ドキュメントには書いてないですが、エラーになります
  • 31.
    Future of DSCDSC の今後
  • 32.
    DSC の今後  LCMが大きく変化する予定  (Windows 版は)WMF にバンドルされていたものが、WMF から切り離された個別 のコンポーネントに  LCM そのものは、C++ ベースで再実装  クロスプラとフォーム(Windows、Linux、MacOS?)  .NET、.NET Core、Windows PowerShell、PowerShell Core などには非依存に  オープンソース化  Provider としては、PowerShell、C++、Python をサポート
  • 33.
    まとめ  DSC を使うことで、構成をコードで管理できる Pull Service を使用することで、一元的な管理が可能  Azure Automation DSC はとても便利
  • 34.
    参考資料  PowerShell TeamBlog  https://blogs.msdn.microsoft.com/powershell/  Windows PowerShell Desired State Configuration Overview  https://docs.microsoft.com/en-us/powershell/dsc/overview  tug  https://github.com/PowerShellOrg/tug