望ましい状態にサーバーを構成する

Azure Automation State Configuration を使うと、サーバーの構成を指定し、時間が経過してもサーバーが指定した状態を保つようにすることができます。

  • Azure Automation DSC によって管理する VM をオンボードする
  • Azure Automation に構成をアップロードする
  • 構成をノードの構成としてコンパイルする
  • ノードの構成を管理対象ノードに割り当てる
  • 管理対象ノードの準拠状態を確認する

このチュートリアルでは、IIS を VM に確実にインストールする簡単な DSC 構成を使います。

前提条件

部分構成のサポート

Azure Automation State Configuration では部分構成の使用がサポートされています。 このシナリオでは、DSC は複数の構成を別々に管理するように構成されており、各構成は Azure Automation から取得されます。 ただし、ノードに割り当てることができる構成はAutomation アカウントあたり 1 つだけです。 つまり、1 つのノードに 2 つの構成を使用している場合、2 つの Automation アカウントが必要になります。

プル サービスから部分構成を登録する方法の詳細については、部分構成に関するドキュメントを参照してください。

コードとしての構成を使用し、チームが連携してサーバーを共同で管理する方法の詳細については、「CI/CD パイプラインでの DSC のロールについて」を参照してください。

Azure にログインする

Connect-AzAccount コマンドレットを使用して Azure サブスクリプションにログインし、画面上の指示に従います。

Connect-AzAccount

構成を作成して Azure Automation にアップロードする

テキスト エディターで次のように入力し、TestConfig.ps1 としてローカルに保存します。

configuration TestConfig {
   Node WebServer {
      WindowsFeature IIS {
         Ensure               = 'Present'
         Name                 = 'Web-Server'
         IncludeAllSubFeature = $true
      }
   }
}

Note

Azure Automation の構成名は、100 文字以下に制限する必要があります。

DSC リソースを提供するモジュールを複数インポートする必要があるより高度なシナリオでは、ご自分の構成にモジュールごとに Import-DscResource 行があることを確認してください。

Import-AzAutomationDscConfiguration コマンドレットを呼び出して、構成を Automation アカウントにアップロードします。

 Import-AzAutomationDscConfiguration -SourcePath 'C:\DscConfigs\TestConfig.ps1' -ResourceGroupName 'MyResourceGroup' -AutomationAccountName 'myAutomationAccount' -Published

構成をノードの構成としてコンパイルする

ノードに DSC 構成を割り当てるには、先に DSC 構成をノードの構成としてコンパイルする必要があります。 「DSC 構成」を参照してください。

Start-AzAutomationDscCompilationJob コマンドレットを呼び出して、TestConfig 構成を、Automation アカウントの TestConfig.WebServer というノード構成に コンパイルします。

Start-AzAutomationDscCompilationJob -ConfigurationName 'TestConfig' -ResourceGroupName 'MyResourceGroup' -AutomationAccountName 'myAutomationAccount'

State Configuration によって管理される VM を登録する

Azure Automation State Configuration を使用すると、Azure VM (クラシックと Resource Manager の両方)、オンプレミスの VM、Linux マシン、AWS VM、オンプレミスの物理マシンを管理できます。 このトピックでは、Azure Resource Manager VM を登録する方法のみを説明します。 他の種類のマシンの登録について詳しくは、「Azure Automation State Configuration による管理のためのマシンのオンボード」をご覧ください。

Register-AzAutomationDscNode コマンドレットを呼び出して、VM を管理対象ノードとして Azure Automation State Configuration に登録します。

Register-AzAutomationDscNode -ResourceGroupName 'MyResourceGroup' -AutomationAccountName 'myAutomationAccount' -AzureVMName 'DscVm'

構成モードの設定を指定する

Register-AzAutomationDscNode コマンドレットを使用して、VM を管理対象ノードとして登録し、構成のプロパティを指定します。 たとえば、ConfigurationMode プロパティの値として ApplyOnly を指定することにより、マシンの状態を 1 回だけ適用するように指定できます。 State Configuration は初期チェック後に構成の適用を試みません。

Register-AzAutomationDscNode -ResourceGroupName 'MyResourceGroup' -AutomationAccountName 'myAutomationAccount' -AzureVMName 'DscVm' -ConfigurationMode 'ApplyOnly'

また、ConfigurationModeFrequencyMinsプロパティを使うことで、DSC が構成の状態をチェックする頻度も指定できます。 DSC 構成の設定について詳しくは、「ローカル構成マネージャーの構成」をご覧ください。

# Run a DSC check every 60 minutes
Register-AzAutomationDscNode -ResourceGroupName 'MyResourceGroup' -AutomationAccountName 'myAutomationAccount' -AzureVMName 'DscVm' -ConfigurationModeFrequencyMins 60

ノードの構成を管理対象ノードに割り当てる

コンパイル済みのノード構成を構成対象の VM 割り当てることができる状態になりました。

# Get the ID of the DSC node
$node = Get-AzAutomationDscNode -ResourceGroupName 'MyResourceGroup' -AutomationAccountName 'myAutomationAccount' -Name 'DscVm'

# Assign the node configuration to the DSC node
Set-AzAutomationDscNode -ResourceGroupName 'MyResourceGroup' -AutomationAccountName 'myAutomationAccount' -NodeConfigurationName 'TestConfig.WebServer' -NodeId $node.Id

これにより、TestConfig.WebServer という名前のノード構成が、登録済みの DSC ノード DscVm に割り当てられます。 既定では、DSC ノードはノード構成に準拠していることを 30 分ごとにチェックされます。 準拠チェック間隔を変更する方法については、「ローカル構成マネージャーの構成」をご覧ください。

管理対象ノードの準拠状態を確認する

Get-AzAutomationDscNodeReport コマンドレットを使用して、管理対象ノードの準拠状態に関するレポートを取得できます。

# Get the ID of the DSC node
$node = Get-AzAutomationDscNode -ResourceGroupName 'MyResourceGroup' -AutomationAccountName 'myAutomationAccount' -Name 'DscVm'

# Get an array of status reports for the DSC node
$reports = Get-AzAutomationDscNodeReport -ResourceGroupName 'MyResourceGroup' -AutomationAccountName 'myAutomationAccount' -NodeId $node.Id

# Display the most recent report
$reports[0]

次のステップ