Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Azure Policyでハイブリッドな構成管理

Azure Policyでハイブリッドな構成管理

Azure Arcで任意のVM, KubernetesをAzureに接続したうえで、Azure Policyを使って構成管理を行うことができます。問題があればそれを修正することもできちゃいます。

仮想マシンに関しては裏で使用しているのはPowerShell DSCです。PowerShell DSCで作成したロジックをAzureで広範囲に適用可能です。Azure Portalからの管理で楽々です。

Masahiko Ebisuda

March 16, 2022
Tweet

More Decks by Masahiko Ebisuda

Other Decks in Technology

Transcript

  1. 日本ビジネスシステムズ株式会社 胡田 昌彦(えびすだ まさひこ) Youtube http://bit.ly/2NTCKmj 自己紹介 日本ビジネスシステムズ株式会社 ✓ 企業の情報システム部で働く方

    ✓ 一般ユーザーだけど、コンピューターに 興味があって、もっと詳しくなりたい方 ✓ Windows, M365, Azure等のMicrosoft 関連技術中心 チャンネル登録よろしくお願いします!
  2. インフラ 従来型IT (オンプレミス/ オフプレミス) Enterprise Private Cloud (EPC) Local Cloud

    Hosted Private Cloud (HPC) Public Cloud Private Cloud HCI (Hyper-Converged) HCI as a service HPC (Dedicated IaaS/PaaS) IaaS/PaaS VMware Hyper-V 共有ストレージ 物理 Windows 物理 Linux Windows VM Linux VM 物理サーバー VMware Azure Stack HCI 物理サーバー 物理サーバー Windows VM Linux VM Kubernetes Windows VM Linux VM Azure Kubernetes Service Azure Arc Azureに接続して統合管理 AWS GCP その他 EC2 EKS GCE GKE VM VM VM Kubernetes Azure Policy Azure Hybrid全体整理!~Azure Hybrid Dayに登場した要素+αの関係性を整理!~ - YouTube https://www.youtube.com/watch?v=G-m8A9IjZFc
  3. ポイント ◼ 「Azure Policy」の対象は「Azureのリソー ス」が対象 ◼ Azure Arcで接続すればAzureのリソースにで きる ◼

    「ゲスト構成拡張機能」でVM内部の変更 ◼ 権限管理は「マネージドID」 ◼ 裏で使っているのはPowerShell DSC ◼ PowerShellはWindows, Linux両対応になっ ている
  4. Infrastructure as Code インフラ基盤をコードで記載 ◼ ARM Template, Bicep, Terraform, Ansible

    Configuration as Code VMの構成をコードで記載 ◼ Chef, Puppet, Ansible, PowerShell DSC Azure Policy ◼ ポリシー定義(Azureに関するもの)
  5. Infrastructure as Code インフラ基盤をコードで記載 ◼ ARM Template, Bicep, Terraform, Ansible

    Configuration as Code VMの構成をコードで記載 ◼ Chef, Puppet, Ansible, PowerShell DSC Azure Policy ◼ 簡単な操作で「ポリシー」を定義(コード必要なし) ◼ 必要に応じて修正 Azure Policy ◼ ポリシー定義(Azureに関するもの)
  6. https://gist.github.com/ebibibi/564d7439a3cb300610f35af359acb5a1 #Install-Module -Name PSDscResources -Scope AllUsers -Verbose -Force Configuration InstallOpsRampClient

    { param() Import-DscResource -ModuleName PSDscResources -ModuleVersion 2.12.0.0 Node "localhost" { MsiPackage OpsRampAgent { Ensure = "Present" Path = "https://opsrampmanagementst.blob.core.windows.net/agentinstaller/OpsRampAgent.msi" #Name = "OpsRamp Agent" ProductId = "0495E7C9-50C7-4464-AC2D-5D2FC6800E58" Arguments = 'WRAPPED_ARGUMENTS="/silent /apiserver=jpdemopod2.api.opsramp.com /key=xxxxxxxxxxxxxxxxx /secret=xxxxxxxxxxxxxxxxx /clientid=4cdff377-7a51-46e2-8d9a- 7abaed7d3b13"' } } } #Start-DscConfiguration -Path 'C:¥tmp¥InstallOpsRampClient' -Wait -Verbose $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
  7. ステップ 1. PowerShell DSCのモジュールインストール 2. PowerShellでConfigurationを定義 3. Configurationドキュメント作成 4. ローカルでテスト

    5. ゲスト構成のモジュールをインストール 6. ゲスト構成パッケージ作成 7. 構成パッケージ公開 8. Azure Policy定義の作成と公開 PowerShell DSC Azure Policy
  8. PowerShell DSCのモジュールインス トール Install-Module -Name PSDscResources -Scope AllUsers - Verbose

    -Force # Docsの記事ではスコープ指定は無いですが、私はAllUsersに入 れた方がよいのではと思っています
  9. PowerShellでConfigurationを定義 Configuration InstallOpsRampClient { param() Import-DscResource -ModuleName PSDscResources -ModuleVersion 2.12.0.0

    Node "localhost" { MsiPackage OpsRampAgent { Ensure = "Present" Path = "https://xxxxxxxxxxxxxxxxx.blob.core.windows.net/agentinstaller/OpsRampAgent.msi" ProductId = "0495E7C9-50C7-4464-AC2D-5D2FC6800E58" Arguments = 'WRAPPED_ARGUMENTS="/silent /apiserver=xxxxxxx.api.opsramp.com /key=xxxxxxxxxxxxxxxxxx /secret=xxxxxxxxxxxxxxxxxxxxxxxxx /clientid=xxxxxxxxxxxxxx"' } } }
  10. ゲスト構成パッケージ作成 New-GuestConfigurationPackage ` -Name 'OpsRampAgentInstall' ` -Configuration './InstallOpsRampClient/localhost.mof' ` -Type

    AuditAndSet ` -Force パッケージテスト Get-GuestConfigurationPackageComplianceStatus - Path .¥OpsRampAgentInstall¥OpsRampAgentInstall.zip 適用テスト Start-GuestConfigurationPackageRemediation - Path .¥OpsRampAgentInstall¥OpsRampAgentInstall.zip
  11. 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 Publish-GuestConfigurationPolicy -Path '.¥policies'