Ö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-GuestConfigurationPolicy
otomatik 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 DeployIfNotExists
ayarlanı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. Bu parametreyi paketin yerel bir kopyasının yolu olarak belirtmeyin.
- 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: İlke tanımına bir veya daha fazla etiket filtresi ekler.
- Kategori: İlke tanımındaki kategori meta veri alanını ayarlar.
- LocalContentPath: Makine Yapılandırması paket dosyasının yerel kopyasının
.zip
yolu. Azure Storge blob'larına erişim sağlamak için Kullanıcı Tarafından Atanan Yönetilen Kimlik kullanıyorsanız bu parametre gereklidir. - ManagedIdentityResourceId:
resourceId
Makine Yapılandırma paketi dosyasını içeren Azure Depolama blob'una okuma erişimi olan Kullanıcı Tarafından Atanan Yönetilen Kimliğin.zip
değeri. Azure Storge blob'larına erişim sağlamak için Kullanıcı Tarafından Atanan Yönetilen Kimlik kullanıyorsanız bu parametre gereklidir. - ExcludeArcMachines: İlke tanımının Arc makinelerini dışlaması gerektiğini belirtir. Azure Storge blob'larına erişim sağlamak için Kullanıcı Tarafından Atanan Yönetilen Kimlik kullanıyorsanız bu parametre gereklidir.
Önemli
Azure VM'lerinden farklı olarak Arc bağlantılı makineler şu anda Kullanıcı Tarafından Atanan Yönetilen Kimlikleri desteklememektedir. Sonuç olarak, bu makinelerin -ExcludeArcMachines
ilke tanımından dışlanmasını sağlamak için bayrağı gereklidir. Azure VM'nin atanan paketi indirmesi ve ilkeyi uygulaması için Konuk Yapılandırma Aracısı'nın Windows için sürüm 1.29.82.0
veya üzeri, Linux için ise sürüm 1.26.76.0
veya üzeri olması gerekir.
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 yapılandırma paketini zorlayan 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
Kullanıcı Tarafından Atanan Yönetilen Kimlik kullanarak özel yapılandırma paketini zorlayan bir ilke tanımı oluşturun:
$PolicyConfig3 = @{
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'
LocalContentPath = "C:\Local\Path\To\Package" # Required parameter for managed identity
ManagedIdentityResourceId = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}" # Required parameter for managed identity
}
New-GuestConfigurationPolicy @PolicyConfig3 -ExcludeArcMachines
Not
PowerShell cmdlet'ini kullanarak yönetilen kimliğin resorceId değerini Get-AzUserAssignedIdentity
alabilirsiniz.
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.json
vardı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.0
bir 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şturulanNew-GuestConfigurationPackage
paketin 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
- Azure portalı kullanarak özel ilke tanımınızı atayın.
- Makine yapılandırma ilkesi atamaları için uyumluluk ayrıntılarını görüntülemeyi öğrenin.