Aracılığıyla paylaş


.NET SDK'sını kullanarak DNS bölgeleri ve kayıt kümeleri oluşturma

DNS SDK’sını ve .NET DNS Yönetimi kitaplığını kullanarak DNS bölgesi, kayıt kümesi ve kayıt oluşturma, silme veya güncelleştirme işlemlerini otomatikleştirebilirsiniz. Tam bir Visual Studio projesine buradan ulaşabilirsiniz.

Hizmet sorumlusu hesabı oluşturma

Genellikle Azure kaynaklarına programlı erişim, kendi kullanıcı kimlik bilgileriniz yerine ayrılmış bir hesapla verilir. Bu ayrılmış hesaplar 'hizmet sorumlusu' hesapları olarak adlandırılır. Azure DNS SDK örnek projesini kullanmak için önce bir hizmet sorumlusu hesabı oluşturmanız ve doğru izinlerle atamanız gerekir.

  1. Hizmet sorumlusu hesabı oluşturun. Azure DNS SDK örnek projesi, parola tabanlı kimlik doğrulamasını varsayar.)

  2. Ardından bir kaynak grubu oluşturun.

  3. Kaynak grubuna hizmet sorumlusu hesabına 'DNS Bölgesi Katkıda Bulunanı' izinleri vermek için Azure RBAC kullanın.

  4. Azure DNS SDK örnek projesini kullanıyorsanız , 'program.cs' dosyasını aşağıdaki gibi düzenleyin:

    • 1. adımda kullanıldığı gibi , clientId (hesap kimliği olarak da bilinir), secret (hizmet sorumlusu hesap parolası) subscriptionId için tenantIddoğru değerleri ekleyin.
    • 2. adımda oluşturulan kaynak grubu adını girin.
    • Tercihinize göre bir DNS bölgesi adı girin.

NuGet paketleri ve ad alanı bildirimleri

Azure DNS .NET SDK'sını kullanmak için Azure DNS Yönetim Kitaplığı NuGet paketini ve diğer gerekli Azure paketlerini yüklemeniz gerekir.

  1. Visual Studio'da bir proje veya yeni proje açın.

  2. Araçlar>NuGet Paket Yöneticisi>Çözüm için NuGet Paketlerini Yönet...'e gidin.

  3. Gözat'ı seçin, Ön sürümü dahil et onay kutusunu etkinleştirin ve arama kutusuna Microsoft.Azure.Management.Dns yazın.

  4. Paketi seçin ve ardından Yükle'yi seçerek Visual Studio projenize ekleyin.

  5. Aşağıdaki paketleri yüklemek için yukarıdaki işlemi yineleyin: Microsoft.Rest.ClientRuntime.Azure.Authentication ve Microsoft.Azure.Management.ResourceManager.

Ad alanı bildirimleri ekleme

Aşağıdaki ad alanı bildirimlerini ekleyin

using Microsoft.Rest.Azure.Authentication;
using Microsoft.Azure.Management.Dns;
using Microsoft.Azure.Management.Dns.Models;

DNS yönetim istemcisini başlatma

, DnsManagementClient DNS bölgelerini ve kayıt kümelerini yönetmek için gereken yöntemleri ve özellikleri içerir. Aşağıdaki kod hizmet sorumlusu hesabında oturum açar ve bir DnsManagementClient nesnesi oluşturur.

// Build the service credentials and DNS management client
var serviceCreds = await ApplicationTokenProvider.LoginSilentAsync(tenantId, clientId, secret);
var dnsClient = new DnsManagementClient(serviceCreds);
dnsClient.SubscriptionId = subscriptionId;

DNS bölgesi oluşturma veya güncelleştirme

DNS bölgesi oluşturmak için öncelikle DNS bölgesi parametrelerini içeren bir "Zone" nesnesi oluşturmanız gerekir. DNS bölgeleri belirli bir bölgeye bağlı olmadığından konum 'genel' olarak ayarlanır. Bu örnekte, bölgeye bir Azure Resource Manager 'etiketi' de eklenir.

Azure DNS'de bölgeyi oluşturmak veya güncelleştirmek için, bölge parametrelerini içeren bölge nesnesi yöntemine DnsManagementClient.Zones.CreateOrUpdateAsyc geçirilir.

Not

DnsManagementClient üç işlem modunu destekler: zaman uyumlu ('CreateOrUpdate'), zaman uyumsuz ('CreateOrUpdateAsync') veya HTTP yanıtına erişimi olan zaman uyumsuz ('CreateOrUpdateWithHttpMessagesAsync'). Uygulama gereksinimlerinize bağlı olarak bu modlardan herhangi birini seçebilirsiniz.

Azure DNS, Etag'ler olarak adlandırılan iyimser eşzamanlılığı destekler. Bu örnekte, 'If-None-Match' üst bilgisi için "*" belirtilmesi, Azure DNS'ye henüz mevcut olmayan bir DNS bölgesi oluşturmasını bildirir. Verilen kaynak grubunda verilen ada sahip bir bölge zaten varsa çağrı başarısız olur.

// Create zone parameters
var dnsZoneParams = new Zone("global"); // All DNS zones must have location = "global"

// Create an Azure Resource Manager 'tag'.  This is optional.  You can add multiple tags
dnsZoneParams.Tags = new Dictionary<string, string>();
dnsZoneParams.Tags.Add("dept", "finance");

// Create the actual zone.
// Note: Uses 'If-None-Match *' ETAG check, so will fail if the zone exists already.
// Note: For non-async usage, call dnsClient.Zones.CreateOrUpdate(resourceGroupName, zoneName, dnsZoneParams, null, "*")
// Note: For getting the http response, call dnsClient.Zones.CreateOrUpdateWithHttpMessagesAsync(resourceGroupName, zoneName, dnsZoneParams, null, "*")
var dnsZone = await dnsClient.Zones.CreateOrUpdateAsync(resourceGroupName, zoneName, dnsZoneParams, null, "*");

DNS kayıt kümesi ve kaydı oluşturma

DNS kayıtları bir kayıt kümesi olarak yönetilir. Kayıt kümesi, bir bölge içinde aynı ada ve kayıt türüne sahip bir kayıt kümesidir. Kayıt kümesi adı, tam DNS adıyla değil bölge adına göredir.

Bir kayıt kümesi oluşturmak veya güncelleştirmek için bir "RecordSet" parametre nesnesi oluşturulur ve öğesine DnsManagementClient.RecordSets.CreateOrUpdateAsyncgeçirilir. DNS bölgelerinde olduğu gibi üç işlem modu vardır: zaman uyumlu ('CreateOrUpdate'), zaman uyumsuz ('CreateOrUpdateAsync') veya HTTP yanıtına erişimi olan zaman uyumsuz ('CreateOrUpdateWithHttpMessagesAsync').

DNS bölgelerinde olduğu gibi, kayıt kümelerinde yapılan işlemler iyimser eşzamanlılık desteği içerir. Bu örnekte, 'If-Match' veya 'If-None-Match' belirtilmediğinden, kayıt kümesi her zaman oluşturulur. Bu çağrı, bu DNS bölgesinde aynı ad ve kayıt türüne sahip mevcut tüm kayıt kümelerinin üzerine yazar.

// Create record set parameters
var recordSetParams = new RecordSet();
recordSetParams.TTL = 3600;

// Add records to the record set parameter object.  In this case, we'll add a record of type 'A'
recordSetParams.ARecords = new List<ARecord>();
recordSetParams.ARecords.Add(new ARecord("1.2.3.4"));

// Add metadata to the record set.  Similar to Azure Resource Manager tags, this is optional and you can add multiple metadata name/value pairs
recordSetParams.Metadata = new Dictionary<string, string>();
recordSetParams.Metadata.Add("user", "Mary");

// Create the actual record set in Azure DNS
// Note: no ETAG checks specified, will overwrite existing record set if one exists
var recordSet = await dnsClient.RecordSets.CreateOrUpdateAsync(resourceGroupName, zoneName, recordSetName, RecordType.A, recordSetParams);

Bölgeleri ve kayıt kümelerini alma

DnsManagementClient.Zones.Get ve DnsManagementClient.RecordSets.Get yöntemleri sırasıyla tek tek bölgeleri ve kayıt kümelerini alır. RecordSet'ler türlerine, adlarına ve bulundukları bölge ve kaynak grubuna göre tanımlanır. Bölgeler, adlarına ve bulundukları kaynak grubuna göre tanımlanır.

var recordSet = dnsClient.RecordSets.Get(resourceGroupName, zoneName, recordSetName, RecordType.A);

Mevcut bir kayıt kümesini güncelleştirme

Var olan bir DNS kayıt kümesini güncelleştirmek için önce kayıt kümesini alın. Ardından değişiklikleri göndermeden önce kayıt kümesi içeriğini güncelleştirin. Bu örnekte, 'If-Match' parametresinde alınan kayıt kümesinden 'Etag' belirteceğiz. Eşzamanlı bir işlem bu sırada kayıt kümesini değiştirdiyse çağrı başarısız olur.

var recordSet = dnsClient.RecordSets.Get(resourceGroupName, zoneName, recordSetName, RecordType.A);

// Add a new record to the local object.  Note that records in a record set must be unique/distinct
recordSet.ARecords.Add(new ARecord("5.6.7.8"));

// Update the record set in Azure DNS
// Note: ETAG check specified, update will be rejected if the record set has changed in the meantime
recordSet = await dnsClient.RecordSets.CreateOrUpdateAsync(resourceGroupName, zoneName, recordSetName, RecordType.A, recordSet, recordSet.Etag);

Bölgeleri ve kayıt kümelerini listeleme

  • Bölgeleri listelemek için dnsManagementClient.Zones.List... yöntemlerini kullanın. Bu yöntem, belirli bir kaynak grubundaki tüm bölgeleri veya belirli bir Azure aboneliğindeki tüm bölgeleri (kaynak grupları arasında) listelemeyi destekler.

  • Kayıt kümelerini listelemek için, belirli bir bölgedeki tüm kayıt kümelerini veya yalnızca belirli bir türdeki kayıt kümelerini listelemeyi destekleyen DnsManagementClient.RecordSets.List... yöntemlerini kullanın.

Bölgeleri ve kayıt kümelerini listelerken sonuçların sayfalandırılmış olabileceğini unutmayın. Aşağıdaki örnek, sonuç sayfalarında nasıl yineleme yapılacağını gösterir. (Sayfalandırmayı zorlamak için yapay olarak küçük bir '2' sayfa boyutu kullanılır; uygulamada bu parametre atlanmalı ve varsayılan sayfa boyutu kullanılmalıdır.)

// Note: in this demo, we'll use a very small page size (2 record sets) to demonstrate paging
// In practice, to improve performance you would use a large page size or just use the system default
int recordSets = 0;
var page = await dnsClient.RecordSets.ListAllInResourceGroupAsync(resourceGroupName, zoneName, "2");
recordSets += page.Count();

while (page.NextPageLink != null)
{
    page = await dnsClient.RecordSets.ListAllInResourceGroupNextAsync(page.NextPageLink);
    recordSets += page.Count();
}

Sonraki adımlar

Azure DNS .NET SDK örnek projesini indirin. Azure DNS .NET SDK kullanımının yanı sıra diğer DNS kaydı türleriyle ilgili örnekler içerir.