إنشاء مناطق DNS وتسجيل مجموعات باستخدام .NET SDK

يمكنك التنفيذ التلقائي للعمليات لإنشاء مناطق DNS أو حذفها أو تحديثها، ومجموعات السجلات، والسجلات باستخدام DNS SDK مع مكتبة .NET DNS Management. يتوفر مشروع Visual Studio كامل هنا.

قم بإنشاء حساب رئيسي للخدمة

عادةً، يتم منح الوصول الآلي إلى موارد Azure من خلال حساب مخصص بدلاً من بيانات اعتماد المستخدم الخاصة بك. تسمى هذه الحسابات المخصصة حسابات "مدير الخدمة". لاستخدام مشروع نموذج Azure DNS SDK، تحتاج أولاً إلى إنشاء حساب رئيسي للخدمة وتعيينه بالأذونات الصحيحة.

  1. إنشاء حساب أساسي للخدمة. يفترض مشروع نموذج Azure DNS SDK المصادقة المستندة إلى كلمة المرور.)

  2. ثم قم بإنشاء resource group.

  3. استخدم Azure RBAC لمنح أذونات "مساهم منطقة DNS" لحساب الخدمة الأساسي لمجموعة الموارد.

  4. إذا كنت تستخدم مشروع نموذج Azure DNS SDK، فقم بتحرير ملف "program.cs" على النحو التالي:

    • أدخل القيم الصحيحة لـ tenantId وclientId (المعروف أيضاً باسم معرف الحساب) وsecret (كلمة مرور الحساب الأساسي للخدمة) وsubscriptionId كما هو مستخدم في الخطوة 1.
    • أدخل اسم مجموعة الموارد التي تم إنشاؤها في الخطوة 2.
    • أدخل اسم منطقة DNS من اختيارك.

حزم NuGet وإعلانات مساحة الاسم

لاستخدام Azure DNS .NET SDK، تحتاج إلى تثبيت حزمة NuGet مكتبة إدارة DNS Azure وحزم Azure الأخرى المطلوبة.

  1. في Visual Studio، افتح مشروعاً أو مشروعاً جديداً.

  2. انتقل إلى Tools > NuGet Package Manager > Manage NuGet Packages for Solution....

  3. حدد Browse، وقم بتمكين مربع الاختيار Include prerelease واكتب Microsoft.Azure.Management.Dns في مربع البحث.

  4. حدد الحزمة ثم حدد Install لإضافتها إلى مشروع Visual Studio الخاص بك.

  5. كرر العملية أعلاه لتثبيت الحزم التالية أيضاً: Microsoft.Rest.ClientRuntime.Azure.Authentication وMicrosoft.Azure.Management.ResourceManager.

أضف إقرارات مساحة الاسم

أضف تعريفات مساحة الاسم التالية

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

قم بتكوين عميل إدارة DNS

يحتوي DnsManagementClient على الأساليب والخصائص اللازمة لإدارة مناطق DNS ومجموعات السجلات. تقوم التعليمة البرمجية التالي بتسجيل الدخول إلى الحساب الأساسي للخدمة وإنشاء كائن DnsManagementClient.

// 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

لإنشاء منطقة DNS، تحتاج أولاً إلى إنشاء كائن "منطقة" يحتوي على معلمات منطقة DNS. نظراً لأن مناطق DNS غير مرتبطة بمنطقة معينة، يتم تعيين الموقع على "عالمي". في هذا المثال، تمت إضافة Azure Resource Manager 'tag' أيضاً إلى المنطقة.

لإنشاء المنطقة أو تحديثها في Azure DNS، يتم تمرير عنصر المنطقة الذي يحتوي على معلمات المنطقة إلى الأسلوب DnsManagementClient.Zones.CreateOrUpdateAsyc.

إشعار

يدعم DnsManagementClient ثلاثة أوضاع للعملية: متزامن ('CreateOrUpdate')، أو غير متزامن ('CreateOrUpdateAsync')، أو غير متزامن مع الوصول إلى استجابة HTTP ('CreateOrUpdateWithHttpMessagesAsync'). يمكنك اختيار أي من هذه الأوضاع، حسب احتياجات التطبيق الخاص بك.

يدعم Azure DNS التزامن المتفائل، والذي يسمى Etags. في هذا المثال، يؤدي تحديد "*" لرأس "If-None-Match" إلى إخبار Azure DNS بإنشاء منطقة DNS إذا لم تكن موجودة بالفعل. يفشل الاستدعاء في حالة وجود منطقة بالاسم المحدد بالفعل في مجموعة الموارد المحددة.

// 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 والسجلات

تدار سجلات DNS كمجموعة قياسية. مجموعة السجلات هي مجموعة من السجلات لها نفس الاسم ونوع السجل داخل منطقة ما. اسم مجموعة السجلات مرتبط باسم المنطقة، وليس اسم DNS المؤهل بالكامل.

لإنشاء مجموعة سجلات أو تحديثها، يتم إنشاء عنصر معلمات "مجموعة السجلات" وتمريره إلى DnsManagementClient.RecordSets.CreateOrUpdateAsync. كما هو الحال مع مناطق DNS، هناك ثلاثة أوضاع للعملية: متزامن ('CreateOrUpdate')، أو غير متزامن ('CreateOrUpdateAsync')، أو غير متزامن مع الوصول إلى استجابة HTTP ('CreateOrUpdateWithHttpMessagesAsync').

كما هو الحال مع مناطق DNS، تتضمن العمليات المسجلة على مجموعات التسجيل دعماً للتزامن المتفائل. في هذا المثال، نظراً لأنه لم يتم تحديد "If-Match" أو "If-None-Match"، يتم دائماً إنشاء مجموعة السجلات. تقوم هذه المكالمة بالكتابة فوق أي سجل موجود تم تعيينه بنفس الاسم ونوع السجل في منطقة DNS هذه.

// 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);

احصل على مناطق وتسجيل مجموعات

تسترد الأساليب DnsManagementClient.Zones.Get وDnsManagementClient.RecordSets.Get المناطق الفردية ومجموعات السجلات، على التوالي. يتم تحديد مجموعات السجلات حسب النوع والاسم والمنطقة ومجموعة الموارد التي توجد بها. يتم تحديد المناطق من خلال اسمها ومجموعة الموارد التي توجد بها.

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

تحديث مجموعة السجلات الحالية

لتحديث مجموعة سجلات DNS الحالية، قم أولاً باسترداد مجموعة السجلات. ثم قم بتحديث محتويات مجموعة السجلات قبل إرسال التغييرات. في هذا المثال، نحدد "Etag" من السجل المسترجع المعين في معلمة "If-Match". تفشل المكالمة إذا قامت عملية متزامنة بتعديل مجموعة السجل في هذه الأثناء.

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);

قائمة المناطق ومجموعات التسجيل

  • لسرد المناطق، استخدم أساليب DnsManagementClient.Zones.List ...، التي تدعم إدراج جميع المناطق في مجموعة موارد معينة أو جميع المناطق في اشتراك Azure محدد (عبر مجموعات الموارد).

  • لسرد مجموعات السجلات، استخدم طرق DnsManagementClient.RecordSets.List ...، التي تدعم إما إدراج جميع مجموعات السجلات في منطقة معينة أو مجموعات السجلات من نوع معين فقط.

لاحظ عند سرد المناطق ومجموعات التسجيل أن النتائج قد تكون مرقمة. يوضح المثال التالي كيفية التكرار خلال صفحات النتائج. (يتم استخدام حجم صفحة صغير بشكل مصطنع من '2' لفرض الترحيل؛ وعملياً يجب حذف هذه المعلمة واستخدام حجم الصفحة الافتراضي.)

// 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();
}

الخطوات التالية

قم بتنزيل مشروع نموذج Azure DNS .NET SDK. يتضمن أمثلة عن كيفية استخدام Azure DNS .NET SDK وأمثلة لأنواع سجلات DNS الأخرى.