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からの管理で楽々です。

C12cfb99fccdcde706f5d17c6a80d9e2?s=128

Masahiko Ebisuda

March 16, 2022
Tweet

Other Decks in Technology

Transcript

  1. Azure Policyでハイブリッドな構成管理 @ebi Masahiko Ebisuda

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

    ✓ 一般ユーザーだけど、コンピューターに 興味があって、もっと詳しくなりたい方 ✓ Windows, M365, Azure等のMicrosoft 関連技術中心 チャンネル登録よろしくお願いします!
  3. デモ オンプレミスのVMをAzureにつなげる Arc-Enebled Server

  4. Azure Hybrid全体整理!~Azure Hybrid Dayに登場した要素+αの関係性を整理!~ - YouTube https://www.youtube.com/watch?v=G-m8A9IjZFc

  5. Azure Hybrid全体整理!~Azure Hybrid Dayに登場した要素+αの関係性を整理!~ - YouTube https://www.youtube.com/watch?v=G-m8A9IjZFc

  6. インフラ 従来型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
  7. Azure Policy ◼様々な「ルール」を定義して「きちんと ルールに沿っているか?」を監視できる ◼「ルール」に沿っていないものは自動的に 修正もできる ◼なんでも対象にできる ◼Azureのリソース ◼Azure Arc-enabled

    Servers ◼Azure Arc-enabled Kubernetes
  8. None
  9. ポイント ◼ 「Azure Policy」の対象は「Azureのリソー ス」が対象 ◼ Azure Arcで接続すればAzureのリソースにで きる ◼

    「ゲスト構成拡張機能」でVM内部の変更 ◼ 権限管理は「マネージドID」 ◼ 裏で使っているのはPowerShell DSC ◼ PowerShellはWindows, Linux両対応になっ ている
  10. ポイント ◼ Microsoftが用意してくれているポリシーを使 えば簡単にポリシー適用が可能 ◼ 用意されていないポリシーもPowerShell DSC を使って作成可能 ◼ Azure上で適用しておけば、あとから作成され

    たリソースにも自動適用 ◼ Azureポータルから簡単に管理可能
  11. 具体的な使用シーン ◼ Before ◼ 作成した環境に対して手順書に従って手作業で チェックシートを見ながら設定作業(監視エージェ ント導入、セキュリティ対策設定等) ◼ 誰かが作業ミスし、それが発覚すると、チェック シートとにらめっこしながら全ての設定を再確認

    (無限ループ) ◼ After ◼ 手作業無し ◼ Azure Policyの画面で問題ないことを常時確認可能
  12. やるべき事 ◼Azure Policyを定義しておく ◼Azure外で新規に作成されたVM, Kubernetesは自動でAzure Arcで接続 されるように仕組みを作っておく ◼必要に応じてAzure Policyを更新する

  13. Infrastructure as Code インフラ基盤をコードで記載 ◼ ARM Template, Bicep, Terraform, Ansible

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

    Configuration as Code VMの構成をコードで記載 ◼ Chef, Puppet, Ansible, PowerShell DSC Azure Policy ◼ 簡単な操作で「ポリシー」を定義(コード必要なし) ◼ 必要に応じて修正 Azure Policy ◼ ポリシー定義(Azureに関するもの)
  15. どんなことができるかポータルで確認

  16. None
  17. Azure PolicyによるVM構成方法

  18. ステップ 1.前提条件となるイニシアティブを割り当てる 「仮想マシンでゲスト構成ポリシーを有効にするための前提条件 をデプロイする」 2.(修復するための権限を付与するためにマネージドIDを作成し、権 限を割り当てる) 1.ポリシーを割り当てる 2.(修復するための権限を付与するためにマネージドIDを作成し、権 限を割り当てる)

  19. デモ 前提条件の割り当て ポリシーの割り当て

  20. カスタムのゲスト構成ポリシー作成方法 例:OpsRampエージェントインストール

  21. 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
  22. ステップ 1. PowerShell DSCのモジュールインストール 2. PowerShellでConfigurationを定義 3. Configurationドキュメント作成 4. ローカルでテスト

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

    -Force # Docsの記事ではスコープ指定は無いですが、私はAllUsersに入 れた方がよいのではと思っています
  24. 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"' } } }
  25. Configurationドキュメント作成 InstallOpsRampClient -OutputPath:"./InstallOpsRampClient"

  26. ローカルでテスト Start-DscConfiguration -Path 'C:¥tmp¥InstallOpsRampClient' - Force -Wait -Verbose

  27. ゲスト構成のモジュールをインストール Install-Module -Name GuestConfiguration

  28. ゲスト構成パッケージ作成 New-GuestConfigurationPackage ` -Name 'OpsRampAgentInstall' ` -Configuration './InstallOpsRampClient/localhost.mof' ` -Type

    AuditAndSet ` -Force パッケージテスト Get-GuestConfigurationPackageComplianceStatus - Path .¥OpsRampAgentInstall¥OpsRampAgentInstall.zip 適用テスト Start-GuestConfigurationPackageRemediation - Path .¥OpsRampAgentInstall¥OpsRampAgentInstall.zip
  29. 構成パッケージ公開 Publish-GuestConfigurationPackage - Path .¥OpsRampAgentInstall¥OpsRampAgentInstall.zip - ResourceGroupName OpsRampManagement - StorageAccountName

    opsrampmanagementst | % ContentUri
  30. 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'
  31. はまったこと • なぜか、PSDscResoucesモジュールが見つからない • →手動でコピー • 「C:¥Program Files¥PowerShell¥Modules¥PSDscResources」 • 「C:¥Program

    Files¥WindowsPowerShell¥Modules¥PSDscResources」
  32. 確認 オンプレミスのVMをAzureにつなげる Arc-Enebled Server OpsRampエージェントは入ったかな?

  33. 以上です、ありがとうございました!