Operations Lab.

Azure Automation DSC を使ってみる

with one comment

この記事は、PowerShell Advent Calendar 2016 の14日目です。

Microsoft Azure Automation DSC とは

Azure Automation DSC は、Azure Automation アカウントを作成することで利用可能な機能の一つです。シンプルに言うと、DSC Pull サーバー相当の機能を Azure のサービスとして利用できます。これにより、自分で DSC サーバーを用意(Windows Server で構築)することなく、管理対象のサーバーを Azure へ接続するだけで、DSC による構成管理を行えます。

そもそも DSC とは?

Desired State Configuration (DSC)は PowerShell をベースとした構成管理のためのテクノロジーです。ChepAnsible などと同じく、対象の構成を管理するためのものです。Configuration as Code を実現するという点においても似ています。

余談:Configuration as Code と Infrastructure as Code

Configuration as Code と Infrastructure as Code は同じような概念ですが、対象としている範囲が若干違います。

  • Infrastructure as Code は、主にインフラのファブリック構成をコードとして定義し、管理するものです。
  • Configuration as Code は、主に各機器(ノード)の設定をコードとして定義し、管理するものです。

両方をまとめて、広義の Infrastructure as Code として取り扱う場合もあります。Microsoft Azure 利用者の場合、Azure 内の(利用者としての)インフラ(どのような VM や仮想ネットワークを作成して、どうつなげるか)は ARM (Azure Resource Manager)が担っていますが、ARM テンプレートに記載される構成が Infrastructure as Code の部分、作成された仮想マシンの内部を設定する DSC が Configuration as Code となるイメージです。

PowerShell DSC と Azure Automation DSC

PowerShell DSC は特にサーバーがなくても(Configuration を対象に PUSH できれば)利用できます。ローカルノードを構成したいだけであれば、PowerShell DSC を PUSH モードで利用することが一番お手軽です。オンプレミスでもクラウド上の仮想マシンでも、Windows でも Linux でも PowerShell DSC を利用できます。(Linux で使用する場合は、それなりに準備が必要です。)

Azure Automation DSC は PowerShell DSC の PULL サーバー(及びレポートサーバー)相当の機能を提供します。このため、DSC で集中管理を行いたい場合に、DSC のためのサーバーをわざわざ自分で用意する必要がなくなります。オンプレミスの危機でもクラウド上の仮想マシンでも、Windows でも Linux でも、Azure Automation DSC の管理対象とすることができます。さらに、Azure の Windows 仮想マシンの場合は、Azure Automation DSC との連携を簡単に設定できるようになっています。(※)

(※)通常、DSC を PULL モードで使用する場合は、ローカルノード(管理対象)側で、PULL サーバの場所などを設定する必要があります。(当たり前ですが、PULL サーバがどこにあるか分からないと、接続できないですので。)Azure Automation DSC を利用する場合、同じサブスクリプション内の Windows 仮想マシンであれば、ポータルから紐づけを行うことができるようになっており、VM の内部で設定を行う必要がありません。

Azure Automation DSC を使用して、Azure の Windows 仮想マシンを管理する

ここからは Step-by Step で。

  1. Azure 管理ポータルから「新規」→「Monitoring + management」→「オートメーション」を選択します。
    aadsc-161214-001
  2. 「Automation アカウント」を作成します。「名前」は管理用の名前ですので、何でも OK です。その他の項目は、VM を作成する場合と同じです。アクションアカウントは、作成しておいたほうが後々面倒なことになりません。
    aadsc-161214-002
  3. Automation アカウントを新規に作成すると、以下のリソースが作成されます。
    aadsc-161214-003
  4. 管理対象となる VM をデプロイしておきます。既に存在する VM へ設定を行う場合は、改めてデプロイする必要はありません。VM デプロイ時に特殊な設定は不要で、デプロイされている VM を後から紐づけることができます。尚、ARM(Azure Resource Manager)管理の Virtual Machine (クラシック仮想マシンではないもの)で、OS が Windows Server となるものを選択すると、設定時の手間が少ないです。(以下はその手順を記載しています。)
    aadsc-161214-005aadsc-161214-006aadsc-161214-007aadsc-161214-008aadsc-161214-009aadsc-161214-010
  5. 以下の PowerShell スクリプト(DSC Configuration)を作成し、適当な名前で保存します。
    Configuration SampleConfig {
        
        Node "WebServer" {
    
            WindowsFeature IIS {
                Name = "Web-Server"
                Ensure = "Present"
            }
    
            WindowsFeature IISTools {
                Name = "Web-Mgmt-Tools"
                Ensure = "Present"
            }
    
            WindowsFeature xTelnet {
                Name = "Telnet-Client"
                Ensure = "Absent"
            }
            
        }
    
        Node "DNSServer" {
    
            WindowsFeature DNS {
                Name = "DNS"
                Ensure = "Present"
            }
    
            WindowsFeature DNSTools {
                Name = "RSAT-DNS-Server"
                Ensure = "Present"
            }
    
            WindowsFeature xTelnet {
                Name = "Telnet-Client"
                Ensure = "Absent"
            }
    
        }
    
    }
    
  6. Azure ポータルで、作成した Azure Automation アカウントを選択します。Automation アカウントの管理画面は以下の構成となっています。

    aadsc-161214-004

    Azure Automation DSC で主に使用するのは「リソース」内の「DSC 構成」と「DSC ノード」です。標準の DSC モジュール以外を使用する場合は。「資産」も使用します。(今回は使用しません。)

  7. 「DSC 構成」から「構成を追加」を選択し、先ほど作成した DSC Configuration ファイルをアップロードします。「名前」欄は、DSC Configuration で記載した Configuration 名が自動で入力されます。

    aadsc-161214-011
  8. 「DSC 構成」に先ほど登録した構成(SampleConfig)が追加されていることを確認します。

    aadsc-161214-012
  9. 追加した構成の名前(SampleConfig)を選択し、「コンパイル」をクリックします。DSC Configuration のコンパイルが実行されます。コンパイル ジョブはキューイングされた後、順次実行されますので、ジョブが完了するまで待ちます。

    aadsc-161214-013

    aadsc-161214-014

    aadsc-161214-015

  10. コンパイル ジョブが完了すると、コンパイルした DSC Configuration 内で定義された DSC 構成が利用できる状態になります。「プル サーバーで使用可能」の「ノード構成」に定義したノード構成が表示されていることを確認します。

    aadsc-161214-016
  11. 「DSC ノード」から「Azure VM の追加」を選択し、「Virtual Machine – オンボードする仮想マシンの選択」をクリックします。

    aadsc-161214-017
  12. 構成対象とする VM を選択します。尚、ここで選択できるのは ARM 管理の Virtual Machine で、OS が Windows のもののみです。クラシック仮想マシンの Windows については、仮想マシンの拡張機能の設定から操作を行います。Linux の場合は、OS にログインして構成スクリプトを実行する必要があります。

    aadsc-161214-018
  13. 「登録 – 登録データの構成」を選択し、先ほど選択した VM に対して紐づける DSC 構成を選択します。コンパイル済みの DSC ノード構成が表示されるため、プルダウンから選択します。その他のオプションは、オンプレミスの PowerShell DSC でプル サーバーを使用する際定義するものと同じです。(詳細は省略します。)

    aadsc-161214-019
  14. 「作成」をクリックして VM とノード構成の紐づけを作成します。正常に作成が完了すると、プル サーバーから DSC ノード構成が配布される(各管理対象ノードが構成を取得しに行く)状態となります。

    aadsc-161214-020
  15. しばらく待つと、各管理対象ノードが Azure Automation DSC プル サーバーから構成を取得し、取得した構成をもとに自身を再構成します。

    aadsc-161214-021

    一度構成を適用した後は、定期的にチェックが実行され結果がレポートサーバー(Azure Automation DSC プル サーバー)上に保存されます。各レポートの行を選択すると、詳細を表示できます。

まとめ

Azure Automation DSC は DSC サーバーを自前で用意する必要がないので楽。Azure 上の仮想マシンを管理対象とする場合にはとても楽。

機会があれば、Linux の DSC、及び Linux を Azure Automation DSC で管理する方法もまとめたいと思います。

Written by kazu

2016/12/14 @ 00:00

コメント / トラックバック1件

Subscribe to comments with RSS.

  1. […] 前回(14 日目の記事)では Azure Automation DSC で Windows Server を管理する方法についてまとめましたが、今回は Linux 編です。 […]


コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。