Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
PowerShell DSC と Linux
System Center User Group Japan #15 (2016.09.10)
Kazuki Takai
自己紹介
 高井 一輝 (Takai Kazuki)
 某ISP勤務
 クラウドサービスの開発、設計、設備維持
 Windows Server / System Center / Linux / etc…
 System Center...
Agenda
 PowerShell DSC おさらい
 PowerShell DSC を使用した Linux の構成
 Azure Automation DSC を使用した Linux の構成
 おまけ
 PowerShell on...
はじめる前に
 本資料の内容は個人的な検証結果に基づきます
 所属する会社や組織、マイクロソフト社の公式な見解を記載するものではありま
せん
 表記や内容に誤りがあるなど、お気づきの点があれば、facebook 等でご連絡
いただけると幸...
Review
PowerShell DSC
PowerShell DSC おさらい
5
PowerShell DSC とは
Chef とか Puppet みたいなやつ
6
PowerShell DSC とは
 Desired State Configuration
 構成(Configuration)を特定の状態に保ち続けるための仕組み
 あるべき状態を定義
 定義に基づいて設定を変更
 定期的に設定を...
Infrastructure as Code
 Infrastructure as Code (広義の): インフラのコード化は主に2種類
 Infrastructure as Code (狭義の)
 インフラ(ファブリック)の定義をコー...
PowerShell DSC のメリット
 構成が管理されている
 あるべき状態が定義されている
 定義が表現されている(頭の中ではなくコードとして)
 構成を担保できる
 あるべき状態に保つ(保ち続ける)
 必ず「定義された状態」...
(例)PowerShell DSC でできること
 サーバーの役割と機能の有効化または無効化
 レジストリ設定の管理
 ファイルとディレクトリの管理
 プロセスとサービスの開始、停止、および管理
 グループおよびユーザー アカウントの...
DSC の構成要素(1)
 Configuration (構成)
 「あるべき姿」を定義したもの
 Configuration キーワードによって定義が記述された PowerShell スクリプト
 Configuration をコンパ...
DSC の構成要素(2)
 Local Configuration Manager (LCM; ローカル構成マネージャー)
 DSC エンジン
 MOF と Resource を使用して構成を実施
 DSC Pull サーバー
 Pu...
DSC の構成要素
13
DSC Configuration MOF
ZIPDSC Resource
dll / ps1 / etc…
DSC Pull Server
WMF / PowerShell
Internet Information ...
2種類の更新モード
 Push
 DSC ターゲットノードへ外部(またはローカル)から構成ファイルを送信(Push)し
て構成を実施
 ローカルに Push する場合も、PSRemoting の有効化が必要
 Pull
 DSC ター...
ローカル構成マネージャー
 LCM : Local Configuration Manager
 ノード構成ファイル(MOF)を解釈して構成を変更する DSC のエンジン
 更新モードや構成モード、Pull サーバーのアドレスなどを設定
...
PowerShell DSC
for Linux
PowerShell DSC を使用した
Linux の構成
16
PowerShell DSC for Linux
 PowerShell DSC を使用して Linux の構成を管理・実行できる
 Windows と同様の仕組みで管理できる
 OS 上で動作する構成管理の仕組みであるため、ファブリック...
PowerShell DSC for Linux の要件
 サポート OS
 RHEL および CentOS、Oracle Linux、Debian、Ubuntu、SuSE など
 詳細な対応バージョンは MSDN 参照
 必要なソフト...
DSC for Linux のインストール
 glibc, python, python-ctypes, openssl, lincurl をインストールする
 ディストリビューションが提供するパッケージをインストール
 Ubuntu 1...
Linux 用 DSC リソース
 Linux 用の基本的な DSC リソースは nx モジュールにまとめられている
 一部、含まれないリソースがある
20
nxArchive
nxEnvironment
nxFile
nxFileLine...
Linux 用 DSC Configuration の作成
 Windows 上で作成(編集およびコンパイル)する場合(おすすめ)
 WMF / PowerShell 4.0 以降が必要
 Linux 用 DSC リソースをインストール
...
Demo
PowerShell DSC for Linux
22
Azure
Automation DSC
Azure Automation DSC を
使用した Linux の構成
23
Azure Automation DSC とは
 Azure Automation サービスの機能の一つ
 PowerShell DSC の Pull サーバー(のようなもの)としてふるまう
 DSC Pull サーバーを手元に用意しなく...
Azure Automation DSC の構成
25
DSC Configuration MOF
ZIPDSC Resource
dll / ps1 / etc…
Azure Automation
DSC Target Node
Azure Automation DSC を使うためには
 必要なもの
 Azure のサブスクリプション
 DSC Configuration スクリプト
 (必要なら)追加の DSC Resource
 Linux を構成する場合...
Azure Automation DSC + Linux
 構成 Step
1. Azure Automation アカウント作成
2. DSC Configuration を Azure Automation 構成へアップロード
3. 標準...
Azure Automation アカウント作成
 新規 → 管理 → オートメーション
 名前、リソースグループ、
ロケーションを指定
28
Azure Automation メインパネル
29
DSC Resource
の追加
ノード追加
ノードに構成を紐づけ
Configuration の登録
コンパイル
コンパイル済
構成の一覧
Point! : ターゲットが Linux の場合
 PowerShell DSC for Linux version 1.1 以降をターゲットにインストール
 Register.py を使用して、ターゲットノードを Azure Autom...
Demo
Azure Automation DSC
31
PowerShell on
Linux
PowerShell for every system!
32
PowerShell on Linux
 PowerShell が Linux 上で動く
 Linux だけでなく、macOS でも Windows でも
 PowerShell for every system!
 GitHub 上で...
厳密には…
 PowerShell Core が動く(Core Edition)
 Desktop Edition
 Full .NET Framework 依存
 Windows クライアントおよび Windows Server のみ...
現状
 まだ alpha 版 (v6.0.0-alpha.9)
 開発中のため、実装されていない機能が多数ある
 PSRP(PowerShell Remoting Protocol)によるネイティブ接続は未実装
 SSH 接続経由で P...
Demo
PowerShell on Linux
36
まとめ
 PowerShell DSC for Linux を使用することで、Windows と同様の手法で Linux
の構成管理が可能
 Azure Automation DSC を使用することで、DSC Pull サーバを手元に用意し...
参考資料
 Windows PowerShell Desired State Configuration の概要
 https://msdn.microsoft.com/ja-jp/powershell/dsc/overview
 Ope...
Upcoming SlideShare
Loading in …5
×

PowerShell DSC と Linux

1,691 views

Published on

2016.09.10 System Center User Group Japan 第15回勉強会のセッション資料です。サンプルコードは GitHub で公開します。

PowerShell DSC の概要(おさらい)と PowerShell DSC for Linux の利用方法、さらに Azure Automation DSC を使用した Aure VM の構成についてお話しました。PowerShell Core for Linux についても簡単にまとめています。

Published in: Technology
  • Be the first to comment

PowerShell DSC と Linux

  1. 1. PowerShell DSC と Linux System Center User Group Japan #15 (2016.09.10) Kazuki Takai
  2. 2. 自己紹介  高井 一輝 (Takai Kazuki)  某ISP勤務  クラウドサービスの開発、設計、設備維持  Windows Server / System Center / Linux / etc…  System Center User Group Japan (SCUGJ)  Twitter : @zhuky7 / Facebook : kazuki.takai  Blog : http://operationslab.wordpress.com/ 2
  3. 3. Agenda  PowerShell DSC おさらい  PowerShell DSC を使用した Linux の構成  Azure Automation DSC を使用した Linux の構成  おまけ  PowerShell on Linux 3
  4. 4. はじめる前に  本資料の内容は個人的な検証結果に基づきます  所属する会社や組織、マイクロソフト社の公式な見解を記載するものではありま せん  表記や内容に誤りがあるなど、お気づきの点があれば、facebook 等でご連絡 いただけると幸いです  この資料では Preview 版の製品、テクノロジーについて記載しています  今後のリリースで機能や動作が変更、削除される可能性があります 4
  5. 5. Review PowerShell DSC PowerShell DSC おさらい 5
  6. 6. PowerShell DSC とは Chef とか Puppet みたいなやつ 6
  7. 7. PowerShell DSC とは  Desired State Configuration  構成(Configuration)を特定の状態に保ち続けるための仕組み  あるべき状態を定義  定義に基づいて設定を変更  定期的に設定をチェックし正しい状態を維持  Configuration as Code を実現するもの  コード化することで、管理・自動化が容易  ソフトウェア開発のナレッジを適用可能  PowerShell / WMF 4.0 以降で利用可能 7
  8. 8. 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… 8
  9. 9. PowerShell DSC のメリット  構成が管理されている  あるべき状態が定義されている  定義が表現されている(頭の中ではなくコードとして)  構成を担保できる  あるべき状態に保つ(保ち続ける)  必ず「定義された状態」になる(オペミスしない)  構成状態をレポートできる 9
  10. 10. (例)PowerShell DSC でできること  サーバーの役割と機能の有効化または無効化  レジストリ設定の管理  ファイルとディレクトリの管理  プロセスとサービスの開始、停止、および管理  グループおよびユーザー アカウントの管理  新しいソフトウェアの展開  環境変数の管理  Windows PowerShell スクリプトの実行  望ましい状態からずれた構成の修正  特定のノードでの実際の構成状態の検出 10 DSC Resource を追加、作成することで 構成範囲を拡大可能
  11. 11. DSC の構成要素(1)  Configuration (構成)  「あるべき姿」を定義したもの  Configuration キーワードによって定義が記述された PowerShell スクリプト  Configuration をコンパイルした MOF ファイルをノードへ適用  Resource (リソース)  構成(操作)対象を実際に操作するために必要なもの  Configuration に書かれた定義を、実際の操作(手続き)へ橋渡しする  PowerShell スクリプトでも実装可能 11
  12. 12. DSC の構成要素(2)  Local Configuration Manager (LCM; ローカル構成マネージャー)  DSC エンジン  MOF と Resource を使用して構成を実施  DSC Pull サーバー  Pull モデル(更新モード)の場合に使用  DSC の Configuration や Resource をホストするサーバー  各 DSC ノード(ターゲットノード)の LCM からの要求を受け付け、MOF およびリ ソースを応答  LCM からのレポートを受信(サポートサーバー) 12
  13. 13. DSC の構成要素 13 DSC Configuration MOF ZIPDSC Resource dll / ps1 / etc… DSC Pull Server WMF / PowerShell Internet Information Services DSC Service + Report Data DSC Target Node
  14. 14. 2種類の更新モード  Push  DSC ターゲットノードへ外部(またはローカル)から構成ファイルを送信(Push)し て構成を実施  ローカルに Push する場合も、PSRemoting の有効化が必要  Pull  DSC ターゲットノードの LCM が Pull サーバを定期的にポーリングし、構成ファイル を取得(Pull)して構成を実施  DSC Pull サーバー側へ状態レポートを送信(オプション) 14
  15. 15. ローカル構成マネージャー  LCM : Local Configuration Manager  ノード構成ファイル(MOF)を解釈して構成を変更する DSC のエンジン  更新モードや構成モード、Pull サーバーのアドレスなどを設定  構成モード  ApplyOnly : 新しい構成は一度のみ適用し、構成の変更を追跡しない  ApplyAndMonitor : 構成を適用後、変更を追跡する(自動修正はしない)(既定)  ApplyAndAutoCorrect : 構成を適用後変更を追跡し、ずれが生じた場合は自動修正する 15
  16. 16. PowerShell DSC for Linux PowerShell DSC を使用した Linux の構成 16
  17. 17. PowerShell DSC for Linux  PowerShell DSC を使用して Linux の構成を管理・実行できる  Windows と同様の仕組みで管理できる  OS 上で動作する構成管理の仕組みであるため、ファブリックにあまり依存せず動く  Azure でも、AWS でも、オンプレミスの物理でも、VM でも  PowerShell DSC for Linux のパッケージには、大きく以下の二つが含まれる  Linux 用 DSC Agent (LCM)  Linux 用 DSC Resource (nx* DSC リソース) 17
  18. 18. PowerShell DSC for Linux の要件  サポート OS  RHEL および CentOS、Oracle Linux、Debian、Ubuntu、SuSE など  詳細な対応バージョンは MSDN 参照  必要なソフトウェア  glibc, python, python-ctypes, openssl, lincurl  omiserver  (PowerShell DSC for Linux / Linux 用 DSC) 18
  19. 19. DSC for Linux のインストール  glibc, python, python-ctypes, openssl, lincurl をインストールする  ディストリビューションが提供するパッケージをインストール  Ubuntu 16.04 LTS の場合は、デフォルトでほぼインストールされている (Python が新しすぎるかも…)  OMI Server のパッケージを GitHub からダウンロードしてインストール  https://github.com/Microsoft/omi  PowerShell DSC for Linux のパッケージを GitHub からダウンロードしてインストール  https://github.com/Microsoft/PowerShell-DSC-for-Linux  Microsoft ダウンロードセンターからダウンロードできるものは古いので使用しない (2016.09.10 現在) 19
  20. 20. Linux 用 DSC リソース  Linux 用の基本的な DSC リソースは nx モジュールにまとめられている  一部、含まれないリソースがある 20 nxArchive nxEnvironment nxFile nxFileLine nxGroup nxPackage nxScript nxService nxSshAuthorizedKeys nxUser nxComputer nxIPAddress nxDNSServerAddress nxFirewall
  21. 21. Linux 用 DSC Configuration の作成  Windows 上で作成(編集およびコンパイル)する場合(おすすめ)  WMF / PowerShell 4.0 以降が必要  Linux 用 DSC リソースをインストール  PowerShellGet を使用して PowerShell Gallery から nx モジュールをインストール  個別にダウンロードして、モジュールパスに配置  Linux 上で作成する場合(現時点ではおすすめしません)  PowerShell Core v6.0.0-alpha.9 以降をインストール  PowerShell DSC for Linux version 1.1.1 以降をインストール 21
  22. 22. Demo PowerShell DSC for Linux 22
  23. 23. Azure Automation DSC Azure Automation DSC を 使用した Linux の構成 23
  24. 24. Azure Automation DSC とは  Azure Automation サービスの機能の一つ  PowerShell DSC の Pull サーバー(のようなもの)としてふるまう  DSC Pull サーバーを手元に用意しなくてもよい  Azure VM との連携が容易  OS 上で LCM を設定しなくても、ポータルからの操作のみで Pull サーバーとの連携が 可能(今のところ Windows のみ) 24
  25. 25. Azure Automation DSC の構成 25 DSC Configuration MOF ZIPDSC Resource dll / ps1 / etc… Azure Automation DSC Target Node
  26. 26. Azure Automation DSC を使うためには  必要なもの  Azure のサブスクリプション  DSC Configuration スクリプト  (必要なら)追加の DSC Resource  Linux を構成する場合…  ターゲットノードに PowerShell DSC for Linux version 1.1 以降が必要 (2016.0910 時点での最新版) 26
  27. 27. Azure Automation DSC + Linux  構成 Step 1. Azure Automation アカウント作成 2. DSC Configuration を Azure Automation 構成へアップロード 3. 標準リソース以外を使用する場合は、Azure Automation へリソースを追加 4. アップロードした Configuration をコンパイル 5. ターゲットノード側で DSC を利用できるよう構成 6. ターゲットノードを DSC ノードとして Azure Automation DSC 上でオンボード 7. ターゲットノードと DSC ノード構成を紐づけ 27
  28. 28. Azure Automation アカウント作成  新規 → 管理 → オートメーション  名前、リソースグループ、 ロケーションを指定 28
  29. 29. Azure Automation メインパネル 29 DSC Resource の追加 ノード追加 ノードに構成を紐づけ Configuration の登録 コンパイル コンパイル済 構成の一覧
  30. 30. Point! : ターゲットが Linux の場合  PowerShell DSC for Linux version 1.1 以降をターゲットにインストール  Register.py を使用して、ターゲットノードを Azure Automation DSC へ登録  /opt/microsoft/dsc/Scripts/Register.py <key> <url>  <key> : Automation account registration key  <url> : Automation account registration url  <key> と <url> は Azure ポータルから入手可能  Register.py を使用せず、構成用の metaconfiguration MOF を使用する方法もある  nx リソースをギャラリーから追加 30
  31. 31. Demo Azure Automation DSC 31
  32. 32. PowerShell on Linux PowerShell for every system! 32
  33. 33. PowerShell on Linux  PowerShell が Linux 上で動く  Linux だけでなく、macOS でも Windows でも  PowerShell for every system!  GitHub 上で公開  https://github.com/PowerShell/PowerShell  インストール方法なども、上記 URL に記載されている  お試し程度であれば、有志が公開しているコンテナーイメージを使用する方法もある 33
  34. 34. 厳密には…  PowerShell Core が動く(Core Edition)  Desktop Edition  Full .NET Framework 依存  Windows クライアントおよび Windows Server のみ(Nano Server は除く)  Core Edition  .NET Core 依存  Desktop Edition のサブセット的な位置付け  Windows(Nano 含む)、Linux、macOS で動作  Edition の判別は $PSVersionTable.PSEdition 34
  35. 35. 現状  まだ alpha 版 (v6.0.0-alpha.9)  開発中のため、実装されていない機能が多数ある  PSRP(PowerShell Remoting Protocol)によるネイティブ接続は未実装  SSH 接続経由で PowerShell を Subsystem としてキックすることは可能(要設定)  そもそも、OS 依存なコマンドは実装されていない  .NET Core ベースで動作するよう再実装されている部分があり、今までの (Desktop Edition の)コマンドレットと挙動が異なる箇所がある  Nano Server (に実装されている PowerShell 5.1 Core Edition)も、従来の (Desktop Edition の)PowerShell と(出力が)異なる場合があるため要注意 35
  36. 36. Demo PowerShell on Linux 36
  37. 37. まとめ  PowerShell DSC for Linux を使用することで、Windows と同様の手法で Linux の構成管理が可能  Azure Automation DSC を使用することで、DSC Pull サーバを手元に用意しな くてもクラウド上で一元的な管理が可能  構成管理ツールは DSC だけではないので、利用環境に適したツールを使うべき 37
  38. 38. 参考資料  Windows PowerShell Desired State Configuration の概要  https://msdn.microsoft.com/ja-jp/powershell/dsc/overview  Open Management Infrastructure  https://github.com/Microsoft/omi  PowerShell Desired State Configuration for Linux  https://github.com/Microsoft/PowerShell-DSC-for-Linux  PowerShell DSC for Linux version 1.1 is Now Available! And New Linux Resources!  https://blogs.msdn.microsoft.com/powershell/2015/09/29/powershell-dsc-for-linux-version-1- 1-is-now-available-and-new-linux-resources/  Azure Automation DSC の概要  https://azure.microsoft.com/ja-jp/documentation/articles/automation-dsc-overview/ 38

×