Azure PolicyでOpsRampエージェントをインストールする その2 – Azure Policy用のゲスト構成パッケージの作成と公開

この記事は前回の続きです。前回の記事を未読の方は前回の記事から読んでいただくことを推奨します!

ゲスト構成用パッケージを作成する

前回までで動作確認できてますのでゲスト構成用パッケージを作成していきます。

まず、ゲスト構成用のモジュールをインストールします。

Install-Module -Name GuestConfiguration

次に、ゲスト構成パッケージを作成します。

New-GuestConfigurationPackage `
  -Name 'OpsRampAgentInstall' `
  -Configuration './InstallOpsRampClient/localhost.mof' `
  -Type AuditAndSet `
  -Force

作成に成功するとZipファイルが生成されます。

念のため、作成した構成パッケージが要件を正しく満たしていることを検証します。

Get-GuestConfigurationPackageComplianceStatus -Path .\OpsRampAgentInstall\OpsRampAgentInstall.zip

complianceStatusがTrueとなっていればOKです。

構成のテストも下記のコマンドで可能です。

Start-GuestConfigurationPackageRemediation -Path .\OpsRampAgentInstall\OpsRampAgentInstall.zip

構成パッケージの公開

構成パッケージを公開します。推奨の保存先はAzue Blob Storageですので、インストーラー自体を保存しているBlob Storageに対して発行します。

-StorageContainerNameというオプションがありますが、省略するとguestconfigurationというコンテナに発行されます。あらかじめguestconfigurationという名前のコンテナを作成しておいてからコマンドレットを実行します。

Publish-GuestConfigurationPackage -Path .\OpsRampAgentInstall\OpsRampAgentInstall.zip -ResourceGroupName OpsRampManagement -StorageAccountName opsrampmanagementst | % ContentUri

これで、パッケージの公開ができました。

Azure Policyの定義を作成して公開する

次にAzure Policyの定義を作成します。

New-GuestConfigurationPolicy `
  -PolicyId 'OpsRampAgentInstallWindows' `
  -ContentUri 'ここには前のコマンドの結果出力されたURLを張り付けます' `
  -DisplayName 'OpsRamp Agent Install for Windows' `
  -Description 'Install OpsRamp Agent to Windows Server' `
  -Path './policies' `
  -Platform 'Windows' `
  -Version 1.0.0 `
  -Mode 'ApplyAndAutoCorrect'
  -Verbose

Policyを公開します。

Publish-GuestConfigurationPolicy -Path '.\policies'

きちんとAzureポータル上でも確認できる状態になりました。

ここまでで、Azure Policyを作成することができました。

今回は理解のために1ステップづつやりましたが、実際にはバージョン管理のことも考えて、下記のようにやってしまうのがよさそうです。下記のようになります。(※読んでわかる人向けです)

$version            = '1.0.0'
$ConfigName         = "OpsRampAgentInstall_$version"
$MofPath            = '.\localhost.mof'
$ResourceGroupName  = 'OpsRampManagement'
$StorageAccountName = 'opsrampmanagementst'
$DisplayName        = 'OpsRamp Agent Install for Windows'
$Description        = 'Install OpsRamp Agent to Windows Server'
$policyId           = "OpsRampAgentInstallWindows_$version"
$platform           = 'Windows'
$mode               = 'ApplyAndAutoCorrect'

InstallOpsRampClient -OutputPath:(Get-Location)
$contenturi = New-GuestConfigurationPackage -Name $ConfigName -Configuration $MofPath -Path ./package/ -Type AuditAndSet -Force |
Publish-GuestConfigurationPackage -ResourceGroupName $ResourceGroupName -StorageAccountName $StorageAccountName -Force | ForEach-Object ContentUri
Start-Sleep 60
New-GuestConfigurationPolicy -PolicyId $policyId -DisplayName $DisplayName -Description $Description -Path './policies' -Platform $platform -Version $version -Mode $mode -ContentUri $contenturi|
Publish-GuestConfigurationPolicy

さて、次回は実際にポリシーを割り当てて既存VMの適用状況を確認していきたいと思います!

コメントを残す