3.3K Views
March 18, 23
スライド概要
Windows Server & Cloud User Group Japan 第34回勉強会の資料です。
Azure Automanage マシン構成を使用して、Azure Arc 対応サーバーに DSC 構成を適用する方法について紹介します。
インフラエンジニア
Azure Arc Automanage Machine Configuration による構成の管理と適用 SCUGJ (wSCUGJ) 勉強会 #34 2023-03-18 Kazuki Takai Windows Server & Cloud User Group Japan
お話しすること • PowerShell DSC のおさらい • Azure Automation State Configuration と Azure Automanage マシン構成の違い • Azure Automanage マシン構成で利用可能な リソースとパッケージの作成方法 • Azure Arc 対応サーバーに対するマシン構成 の適用
自己紹介 • たかい (Kazuki Takai) • 会社員 (某ISP勤務) • サービス基盤開発、技術開発 • ライセンス関連 • wSCUGJ (Windows Server & System Center User Group Japan) • 興味分野:統合管理、ID、自動化、セキュリティ、監視・運用 • 趣味:カメラ(風景写真)、ビデオゲーム、旅行(温泉) • Microsoft MVP for Cloud and Datacenter Management
Notice • 本セッションで説明する内容には、 リリース前の機能が含まれます • サービスのリリース、リリース後 のエンハンスにより仕様や動作が 変更となる場合があります
おさらい Recap: PowerShell Desired State Configuration
DSC とは • PowerShell で利用できる • サーバーの設定ができる • Chef や Ansible みたいなやつ ※細かいところはそれなりに違います
DSC とは • Desired State Configuration • 構成管理プラットフォーム • 構成(Configuration)を特定の状態に保ち続ける ための仕組み • あるべき状態を定義 • 定義に基づいて設定を変更 • 定期的に設定をチェックし正しい状態を維持
Infrastructure as Code • インフラの構成をコード化して管理 • コード化することで、管理・自動化が容易 • 構成変更 = コードの変更 • ソフトウェア開発のナレッジやツールを適用可能
Infrastructure as Code • Infrastructure as Code (狭義の) • インフラ(ファブリック)の定義をコード化して管理・自動構成 • Azure Resource Manager, Chef Provision, etc… • Configuration as Code • ファブリック上で動作する環境(OS、ミドルウェア、アプリ ケーションなど)の構成、設定をコード化して、管理・自動構成 • DSC, Ansible, etc…
DSC のメリット • 構成が管理されている • あるべき状態が定義されている • 定義が表現されている • 構成を担保できる • あるべき状態に保つ(保ち続ける) • 必ず「定義された状態」になる(オペミスしない) • 構成状態をレポートできる
DSC の構成要素 ※旧来の(オンプレミスのみで実現する)DSC
DSC の構成要素 • Configuration • 「あるべき姿」を定義したもの(PS Script -> MOF) • Resource • 構成(操作)対象を実際に操作するために必要なもの • Local Configuration Manager (LCM) • MOF と Resource を使用して構成(変更)を実施 • Pull サーバー (コントローラー、管理マネージャー) • LCM からの要求を受け、MOF およびリソースを応答 • LCM からのレポートを受信(レポートサーバー)
ローカル構成マネージャー • LCM : Local Configuration Manager • ノード構成ファイル(MOF)を解釈して構成を変更 • 構成モード • ApplyOnly : 構成を一度のみ適用し、後の変更は追跡しない • Audit : 定義された状態になっているか確認、追跡する • ApplyAndMonitor : 構成を適用後、変更を追跡する • ApplyAndAutoCorrect : 構成を適用後変更を追跡し、ずれが生 じた場合は自動修正する
Push と Pull • Push モデル • ターゲットへ構成ファイルを送信して構成を実施 • Push されたタイミングで 1 回のみ実行 • Pull モデル • ターゲットノードが Pull サーバーから構成ファイルを 取得して構成を実施 • DSC Pull サーバー側へ状態レポートを送信
Ansible と DSC の違い Ansible DSC 構成の記述 Playbook Configuration 記述方式 宣言的 宣言的 記述言語 YAML PowerShell リモート構成 可能 可能 接続プロトコル SSH HTTPS (Pull), PSRP (Push) 接続方向 Controller -> Target (Push) Target -> Controller (Pull) Controller -> Target (Push) Agent 不要 DSC 用の LCM が必要 構成の監視 - Pull モード時はオン 変更トリガー 通常は手動 自動及び手動
Pull Services (Pull Server) • Pull サービス • Pull モデルにおける管理サーバー的な役割を果たすもの • Configuration と Resource を配布 • 現在利用可能な Pull サービス • Azure Automanage Machine Configuration (マシン構成) • Azure Automation State Configuration • Windows PowerShell DSC Service on Windows Server • これが所謂 DSC Pull Server • Community maintained open source solutions
Main Topic 最近の DSC (Desired State Configuration with PS7) Azure Automanage マシン構成 Azure Arc VM への適用
PowerShell 7.2 以降における DSC • PowerShell 7.2 以降 DSC は PS 本体から分離 • PowerShell 本体のサイズを減らすため • それ以前も、DSC Resource は PowerShell 本体とは 異なるリリースサイクルだった • PowerShell 7.2 以降で DSC を利用する場合 • 明示的に PSDesiredStateConfiguration モジュール のインストールが必要 Install-Module -Name PSDesiredStateConfiguration -Repository PSGallery
DSC のバージョン • Windows PowerShell 5.1 向け • Desired State Configuration v1.1 • PowerShell 7 (PowerShell Core)向け • Desired State Configuration v2.0 • Desired State Configuration v3.0 Preview
Desired State Configuration v1.1 • Windows PowerShell 5.1 にバンドルされている DSC • オーサリング、動作には WMF 5.1 が必要 • Windows 用の LCM は Windows PowerShell 5.1 にバンドル • Windows PowerShell 5.1 がインストールされていれば基本的 に利用可能 • Linux へ構成を適用する場合は OMI と xResource を使用 • Push と Pull の両方が可能 • Windows Server の機能として Pull Service を構成可能
Desired State Configuration v2.0 • PowerShell 本体から分離された DSC • PSDesiredStateConfiguration モジュールとして利用可能 • Azure Automanage マシン構成(Azure Policy)で利用可能 • 基本的には v3.0 を使用 • 基本的に Pull モデルで利用 • Start-DscConfiguration コマンドレット等は削除 • インストール可能な Pull Services の提供は無い • Azure Automation や Azure Policy 等を使用 • DSC 自体には LCM の機能が含まれていない • 別のエージェントや VM 拡張機能等を LCM として利用
Desired State Configuration v3.0 • Desired State Configuration v2.0 の後継 • 現時点では Preview • Azure Automanage マシン構成(Azure Policy)で利用可能 • Linux も構成対象として利用可能 • MOF ベースの DSC リソースは廃止 • PowerShell クラスベースの DSC リソースのみ利用可能
どの DSC version を使用するか • Azure Automanage マシン構成で管理したい • 管理対象は Linux ⇒ DSC v3.0(Preview) • 管理対象が Windows ⇒ DSC v2.0 以降 ※可能なら DSC v3.0 • Azure Automation で管理したい • 使いたい DSC Resource が PS Core 対応済 ⇒ DSC v2.0 • 使いたい DSC Resource が Win PS 依存 ⇒ DSC v1.1 • WS DSC Pull Server で管理したい ⇒ DSC v1.1 • Windows ローカルで Push したい ⇒ DSC v1.1
仮想マシンに対する DSC 構成の適用 • Azure 仮想マシンに対して、Azure のサービスや 機能を使用して DSC 構成を管理・適用する方法 は大きく2種類 • Azure Automation State Configuration • Azure Automanage マシン構成
Azure Automation State Configuration • Azure Automation の機能 • Azure Automation DSC (AADSC)とも表記される • Azure Automation が Pull Services として動作 • (必要であれば)追加の DSC リソースを登録 • 構成ファイル(スクリプト)を登録 • Azure Automation 側で構成をコンパイル • ターゲットノードを Azure Automation に登録 • 構成をノードに関連付けて構成、モニタリング
Azure Automation State Configuration
Azure Automation State Configuration • 構成方法の詳細は第19回 SCUGJ 勉強会の資料を 参照(2018年2月) • https://www.slideshare.net/kazukitakai/dsc88799528
Azure Automanage マシン構成 • Azure Policy Guest Configuration から名称変更 https://techcommunity.microsoft.com/t5/azure-governance-and-management/coming-soon-guest-configuration-renames-to-machine-configuration/ba-p/3474116
Azure Automanage マシン構成 • Azure Automanage Machine Configuration • Azure 仮想マシンと Azure Arc 対応サーバーに対する 構成管理・構成適用が可能 • Azure Policy 経由での適用が可能 • ターゲットノード単位での適用も可能 • 状態(準拠しているかどうか)の確認が可能 • ターゲットに対して複数の構成を同時に割り当て可能
マシン構成を適用する流れ 1. マシン構成の有効化(ターゲットの準備) 2. DSC リソースの用意 3. 構成(Configuration)の作成とコンパイル 4. ゲスト構成パッケージの作成 5. ゲスト構成パッケージのテスト 6. ゲスト構成パッケージの配置 7. マシン構成の適用
ゲスト構成パッケージ • Zip 圧縮されたファイル • 内容 • コンパイル済みの MOF • 構成(Configuration)をコンパイルしたもの • 構成用のメタデータ • 必要となる DSC リソース モジュール ※作成方法は後述
マシン構成の有効化(前提条件) • Microsoft.GuestConfiguration リソースプロバイダーが有効 • Azure VM の場合 • マシン構成拡張機能が有効 • Azure Automanage Machine Configuration extension for Windows • Azure Automanage Machine Configuration extension for Linux • マネージド ID が有効 • Arc 対応サーバーの場合特になし • Azure Arc-enabled servers agent (Machine Connected Agent)のみ
マシン構成拡張機能(Azure VM)
(参考)DSC 拡張機能(Azure VM) • 以下は Azure Automanage マシン構成用の拡張 機能ではないので注意 • DSC 拡張機能を使うと Push で1回のみ、DSC 構成を 適用可能
サポートされるターゲット OS Publisher Name Versions Amazon Linux 2 Canonical Ubuntu Server 14.04 - 20.x Credativ Debian 8 - 10.x Microsoft Windows Server 2012 - 2022 Microsoft Windows Client Windows 10 Oracle Oracle-Linux 7.x-8.x OpenLogic CentOS 7.3 -8.x Red Hat Red Hat Enterprise Linux* 7.4 - 8.x SUSE SLES 12 SP3-SP5, 15.x
ネットワーク要件 • Azure サービスエンドポイントへの Outbound 443/tcp の通信が許可されていること • 具体的な通信先は以下を参照 • https://learn.microsoft.com/jajp/azure/governance/machine-configuration/overview
マシン構成の作成・テスト環境の準備 • 作成環境 • Windows (推奨)(Linux だとハマるかも) • PowerShell 7.3 をインストール • Install-Module -Name GuestConfiguration • Install-Module -Name PSDesiredStateConfiguration -AllowPrerelease • テスト環境 • Windows or Ubuntu18 (最終的に構成適用する OS 種別に合せる) • PowerShell 7.3 をインストール • Install-Module -Name GuestConfiguration
DSC リソースの準備 • マシン構成ではクラスベースの DSC リソースのみ利用可能 • (現時点では)既存リソースの多くが対応できていない • 必要があれば DSC リソース(モジュール)を記述 • リソースクラスを持つ • Get, Set, Test メソッドを持つ • Reason クラスを持つ
クラスベースの DSC リソース • Modules フォルダー内にモジュール名のフォルダーを作成 • リソースクラスを記述したコードと定義を配置 • 作成したリソースは、構成内で Import-DscResource を使 用して読み込み
構成(Configuration)の記述
• Configuration キーワードを用いて構成を作成
• 記述方法は今までの DSC と同様
Configuration SCUGJWindowsBaseConfiguration {
Import-DscResource -ModuleName Scugj34SampleDscResource -Name SCUGJFile
Node SCUGJ34WindowsBaseConfig {
SCUGJFile WelcomeFile {
path = "C:¥SCUGJ34-Demo.txt"
ensure = "Present"
content = "Welcome to SCUGJ34 !!`nCustom DSC Resource: SCUGJFile"
}
}
}
ゲスト構成パッケージの作成 • コマンドを使用してパッケージを作成 • New-GuestConfigurationPackage • Name : 構成パッケージの名前 • Configuration : MOF ファイルを指定 • Type : 監査のみか、設定の適用も行うか • Path : 出力先(省略するとカレントディレクトリ) • パッケージサイズの制限 : 100MB 以下
ゲスト構成パッケージのテスト • Get-GuestConfigurationPackageComplianceStatus • テストマシン上の現在の状態と構成パッケージで定義された状 態を比較し、準拠しているかどうかを返す • Start-GuestConfigurationPackageRemediation • テストマシン上に構成を適用する • 実行には管理者権限が必要 • Windows の場合は管理者権限を持つ PowerShell セッション • Linux の場合は PowerShell を sudo で実施
ゲスト構成パッケージの公開 • HTTPS で構成パッケージが取得可能な場所に、 テスト済みの構成パッケージを配置 • Azure Blob Storage へ配置することを推奨
構成の適用 • Portal または ARM テンプレートから適用
構成の取得と検証 • マシン構成エージェントによる構成の取得 • 5分ごと • 取得した構成通りの設定となっているかの検証 • 15分ごと • 複数の構成を割り当てている場合、シリアルに処理 • 構成エージェントが利用可能な CPU リソース • 5% 以下に制限
• デモで使用したコマンドのチートシートやサンプルは 以下で公開します • https://github.com/ktakai/Demo/tree/master/20230318-SCUGJ34 Demo
まとめ • Azure Automanage マシン構成を使用して Azure Arc 対応サーバーも構成の適用・管理が可能 • Preview なのでリソースが整備されていないが、 動作の確認は可能 • 使ってみて、何かあればフィードバックを
参考資料 • PowerShell Desired State Configurationの概要 • Azure Automanage マシン構成のドキュメント • Azure Automanage のマシン構成機能の概要 • マシン構成の作成環境の設定方法 • カスタム マシン構成パッケージの成果物の作成方法 • マシン構成パッケージの成果物をテストする方法 • カスタム マシン構成パッケージの成果物の公開方法 • Writing DSC Resources for Azure Policy Guest Configuration - For Linux! by Gael Colas