Aracılığıyla paylaş


Özel makine yapılandırma ilkesi tanımları oluşturma

Başlamadan önce, makine yapılandırmasına yönelik genel bakış sayfasını ve makine yapılandırmasının düzeltme seçenekleri hakkındaki ayrıntıları okumak iyi bir fikirdir.

Önemli

Azure sanal makineleri için makine yapılandırma uzantısı gereklidir. Uzantıyı tüm makinelere uygun ölçekte dağıtmak için aşağıdaki ilke girişimini atayın: Deploy prerequisites to enable machine configuration policies on virtual machines

Yapılandırmaları uygulayan makine yapılandırma paketlerini kullanmak için Azure VM konuk yapılandırma uzantısı sürüm 1.26.24 veya üzeri ya da Arc aracısı 1.10.0 veya üzeri gereklidir.

Veya DeployIfNotExists kullanan AuditIfNotExists özel makine yapılandırma ilkesi tanımları Genel Kullanılabilir (GA) destek durumundadır.

Uyumluluğu denetleen veya Azure veya Arc özellikli makinelerin durumunu yöneten kendi ilkelerinizi oluşturmak için aşağıdaki adımları kullanın.

PowerShell 7 ve gerekli PowerShell modüllerini yükleme

İlk olarak, işletim sisteminiz ve GuestConfiguration modülü için gerekli PowerShell sürümünü yüklemek üzere bir makine yapılandırması yazma ortamı ayarlayın.

Makine yapılandırma paketi yapıtı oluşturma ve yayımlama

Henüz oluşturmadıysanız, Özel makine yapılandırma paketi yapıtları oluşturma bölümünde yer alan adımları izleyerek özel bir makine yapılandırma paketi oluşturun ve yayımlayın. Ardından makine yapılandırma paketi yapıtlarını test etme konusundaki adımları izleyerek paketi geliştirme ortamınızda doğrulayın.

Not

Bu makaledeki örnek kod değişkenine başvurur $contentUri . Paket yapıtlarınızı oluşturmak ve test etmek için önceki öğreticilerle aynı PowerShell oturumunu kullanıyorsanız, bu değişken paketinizin URI'sine zaten sahip olabilir.

$contentUri PowerShell oturumunuzda paketinizin URI'sine ayarlanmış bir değişkeniniz yoksa, bunu ayarlamanız gerekir. Bu örnekte depolama bağlamı oluşturmak için depolama hesabının bağlantı dizesi ve New-AzStorageContext cmdlet'i kullanılır. Ardından yayımlanan paketin depolama blobunu alır ve içerik URI'sini almak için bu nesnenin özelliklerini kullanır.

$connectionString = '<storage-account-connection-string>'
$context = New-AzStorageContext -ConnectionString $connectionString
$getParams = @{
    Context   = $context
    Container = '<container-name>'
    Blob      = '<published-package-file-name>'
}
$blob = Get-AzStorageBlob @getParams
$contentUri = $blob.ICloudBlob.Uri.AbsoluteUri

Makine yapılandırması için ilke gereksinimleri

İlke tanımı meta verileri bölümü, konuk yapılandırma atamalarının sağlanmasını ve bildirilmesi için makine yapılandırma hizmetinin iki özelliğini içermelidir. category özelliği olarak Guest Configuration ayarlanmalıdır ve guestConfiguration adlı bir bölüm makine yapılandırma ataması hakkında bilgi içermelidir. New-GuestConfigurationPolicy Cmdlet bu metni otomatik olarak oluşturur.

Aşağıdaki örnek tarafından New-GuestConfigurationPolicyotomatik olarak oluşturulan meta veri bölümünü gösterir.

"metadata": {
    "category": "Guest Configuration",
    "guestConfiguration": {
        "name": "test",
        "version": "1.0.0",
        "contentType": "Custom",
        "contentUri": "CUSTOM-URI-HERE",
        "contentHash": "CUSTOM-HASH-VALUE-HERE",
        "configurationParameter": {}
    }
}

Tanım efekti olarak DeployIfNotExistsayarlanırsa, o zaman bölümünde makine yapılandırma ataması hakkında dağıtım ayrıntıları bulunmalıdır. New-GuestConfigurationPolicy Cmdlet bu metni otomatik olarak oluşturur.

Azure İlkesi tanımı oluşturma

Bir makine yapılandırması özel ilke paketi oluşturulduktan ve karşıya yüklendikten sonra makine yapılandırma ilkesi tanımını oluşturun. New-GuestConfigurationPolicy Cmdlet bir özel ilke paketi alır ve bir ilke tanımı oluşturur.

policyid parametresi New-GuestConfigurationPolicy benzersiz bir dize gerektirir. Genel olarak benzersiz bir tanımlayıcı (GUID) gereklidir. Yeni tanımlar için cmdlet'ini New-GUID kullanarak yeni bir GUID oluşturun. Tanımda güncelleştirmeler yaparken, doğru tanımın güncelleştirildiğinden emin olmak için PolicyId için aynı benzersiz dizeyi kullanın.

Cmdlet'in New-GuestConfigurationPolicy parametreleri:

  • PolicyId: GUID.
  • ContentUri: Makine yapılandırma içerik paketinin genel HTTP(ler) URI'leri.
  • DisplayName: İlke görünen adı.
  • Açıklama: İlke açıklaması.
  • Parametre: Karma tabloda sağlanan ilke parametreleri.
  • PolicyVersion: İlke sürümü.
  • Yol: İlke tanımlarının oluşturulduğu hedef yol.
  • Platform: Makine yapılandırma ilkesi ve içerik paketi için hedef platform (Windows/Linux).
  • Mod: (büyük/küçük harfe duyarlı: ApplyAndMonitor, ApplyAndAutoCorrect, Audit) ilkenin yapılandırmayı denetlemesi mi yoksa dağıtması mı gerektiğini seçin. Varsayılan değer: Audit.
  • Etiket , ilke tanımına bir veya daha fazla etiket filtresi ekler
  • Kategori , ilke tanımındaki kategori meta veri alanını ayarlar

Mode parametresi hakkında daha fazla bilgi için Makine yapılandırması için düzeltme seçeneklerini yapılandırma sayfasına bakın.

Belirtilen yolda özel bir yapılandırma paketi kullanarak denetleen bir ilke tanımı oluşturun:

$PolicyConfig      = @{
  PolicyId      = '_My GUID_'
  ContentUri    = $contentUri
  DisplayName   = 'My audit policy'
  Description   = 'My audit policy'
  Path          = './policies/auditIfNotExists.json'
  Platform      = 'Windows'
  PolicyVersion = 1.0.0
}

New-GuestConfigurationPolicy @PolicyConfig

Belirtilen yolda özel bir yapılandırma paketi kullanarak yapılandırmayı dağıtan bir ilke tanımı oluşturun:

$PolicyConfig2      = @{
  PolicyId      = '_My GUID_'
  ContentUri    = $contentUri
  DisplayName   = 'My deployment policy'
  Description   = 'My deployment policy'
  Path          = './policies/deployIfNotExists.json'
  Platform      = 'Windows'
  PolicyVersion = 1.0.0
  Mode          = 'ApplyAndAutoCorrect'
}

New-GuestConfigurationPolicy @PolicyConfig2

cmdlet çıkışı, ilke dosyalarının tanım görünen adını ve yolunu içeren bir nesne döndürür. Denetim ilkesi tanımları oluşturan tanım JSON dosyalarının adı auditIfNotExists.json ve yapılandırmaları uygulamak için ilke tanımları oluşturan dosyaların adı deployIfNotExists.jsonvardır.

Etiketleri kullanarak makine yapılandırma ilkelerini filtreleme

GuestConfiguration modülünde cmdlet'ler tarafından oluşturulan ilke tanımları isteğe bağlı olarak etiketler için bir filtre içerebilir. tag parametresi, New-GuestConfigurationPolicy tek tek etiket girdileri içeren karma tablo dizisini destekler. Etiketler, ilke tanımının if bölümüne eklenir ve ilke ataması tarafından değiştirilemez.

Etiketler için filtre uygulanan bir ilke tanımının örnek kod parçacığı aşağıda verilmiştir.

"if": {
  "allOf" : [
    {
      "allOf": [
        {
          "field": "tags.Owner",
          "equals": "BusinessUnit"
        },
        {
          "field": "tags.Role",
          "equals": "Web"
        }
      ]
    },
    {
      // Original machine configuration content
    }
  ]
}

Özel makine yapılandırma ilkesi tanımlarında parametreleri kullanma

Makine yapılandırması, çalışma zamanında DSC Yapılandırmasının özelliklerini geçersiz kılmayı destekler. Bu özellik, paketteki MOF dosyasındaki değerlerin statik olarak kabul edilmesi gerekmeyecek anlamına gelir. Geçersiz kılma değerleri Azure İlkesi aracılığıyla sağlanır ve DSC Yapılandırmalarının nasıl yazıldığını veya derlendiğini değiştirmez.

Makine yapılandırması parametreler için aşağıdaki değer türlerini destekler:

  • String
  • Boolean
  • Çift
  • Satışa Arz

cmdlet'leri New-GuestConfigurationPolicy ve Get-GuestConfigurationPackageComplianceStatus Parameter adlı bir parametre içerir. Bu parametre, her parametreyle ilgili tüm ayrıntıları içeren bir karma tablo tanımı alır ve Azure İlkesi tanımı için kullanılan her dosyanın gerekli bölümlerini oluşturur.

Aşağıdaki örnek, kullanıcının ilke ataması sırasında listeden seçim yaptığı bir hizmeti denetlemek için bir ilke tanımı oluşturur.

# This DSC resource definition...
Service 'UserSelectedNameExample' {
    Name   = 'ParameterValue'
    Ensure = 'Present'
    State  = 'Running'
}

# ...can be converted to a hash table:
$PolicyParameterInfo     = @(
  @{
    # Policy parameter name (mandatory)
    Name                 = 'ServiceName'
    # Policy parameter display name (mandatory)
    DisplayName          = 'windows service name.'
    # Policy parameter description (optional)
    Description          = 'Name of the windows service to be audited.'
    # DSC configuration resource type (mandatory)
    ResourceType         = 'Service'
    # DSC configuration resource id (mandatory)
    ResourceId           = 'UserSelectedNameExample'
    # DSC configuration resource property name (mandatory)
    ResourcePropertyName = 'Name'
    # Policy parameter default value (optional)
    DefaultValue         = 'winrm'
    # Policy parameter allowed values (optional)
    AllowedValues        = @('BDESVC','TermService','wuauserv','winrm')
  })

# ...and then passed into the `New-GuestConfigurationPolicy` cmdlet
$PolicyParam = @{
  PolicyId      = 'My GUID'
  ContentUri    = $contentUri
  DisplayName   = 'Audit Windows Service.'
  Description   = "Audit if a Windows Service isn't enabled on Windows machine."
  Path          = '.\policies\auditIfNotExists.json'
  Parameter     = $PolicyParameterInfo
  PolicyVersion = 1.0.0
}

New-GuestConfigurationPolicy @PolicyParam

Azure İlkesi tanımını yayımlama

Son olarak, cmdlet'ini New-AzPolicyDefinition kullanarak ilke tanımlarını yayımlayabilirsiniz. Aşağıdaki komutlar makine yapılandırma ilkenizi ilke merkezinde yayımlar.

Komutunu çalıştırmak New-AzPolicyDefinition için Azure'da ilke tanımları oluşturma erişiminiz olmalıdır. Belirli yetkilendirme gereksinimleri Azure İlkesi Genel Bakış sayfasında belgelenmiştir. Önerilen yerleşik rol şeklindedir Resource Policy Contributor.

New-AzPolicyDefinition -Name 'mypolicydefinition' -Policy '.\policies\auditIfNotExists.json'

Ya da ilke bir dağıtım değilse ilke (DINE) şu komutu kullanın:

New-AzPolicyDefinition -Name 'mypolicydefinition' -Policy '.\policies\deployIfNotExists.json'

Azure'da oluşturulan ilke tanımıyla, son adım tanımı atamaktır. Portal, Azure CLI ve Azure PowerShell ile tanımı atamayı öğrenin.

İlke yaşam döngüsü

İlke tanımına bir güncelleştirme yayınlamak isterseniz, hem konuk yapılandırma paketi hem de Azure İlkesi tanımı ayrıntıları için değişikliği yapın.

Not

version Makine yapılandırma atamasının özelliği yalnızca Microsoft tarafından barındırılan paketleri etkiler. Özel içerik sürümü oluşturmanın en iyi yöntemi, sürümü dosya adına eklemektir.

İlk olarak, komutunu çalıştırırken New-GuestConfigurationPackage, paketi önceki sürümlerden benzersiz hale getiren bir ad belirtin. Adına gibi PackageName_1.0.0bir sürüm numarası ekleyebilirsiniz. Bu örnekteki sayı yalnızca paketi benzersiz hale getirmek için kullanılır, paketin diğer paketlerden daha yeni veya daha eski olarak kabul edilmesi gerektiğini belirtmek için kullanılmaz.

İkinci olarak, aşağıdaki açıklamaların New-GuestConfigurationPolicy her birini izleyerek cmdlet ile kullanılan parametreleri güncelleştirin.

  • Sürüm: cmdlet'ini çalıştırdığınızda New-GuestConfigurationPolicy , şu anda yayımlanandan daha büyük bir sürüm numarası belirtmeniz gerekir.
  • contentUri: cmdlet'ini çalıştırdığınızda New-GuestConfigurationPolicy , paketin konumuna bir URI belirtmeniz gerekir. Dosya adına bir paket sürümü dahil olmak, her sürümde bu özelliğin değerinin değişmesini sağlar.
  • contentHash: New-GuestConfigurationPolicy Cmdlet bu özelliği otomatik olarak güncelleştirir. tarafından oluşturulan New-GuestConfigurationPackagepaketin karma değeridir. Özelliği, yayımladığınız dosya için .zip doğru olmalıdır. Yalnızca contentUri özelliği güncelleştirildiyse, Uzantı içerik paketini reddeder.

Güncelleştirilmiş bir paketi yayınlamanın en kolay yolu, bu makalede açıklanan işlemi yinelemek ve güncelleştirilmiş bir sürüm numarası belirtmektir. Bu işlem tüm özelliklerin doğru güncelleştirildiğini garanti eder.

Sonraki adımlar