DNS-zónák és rekordkészletek létrehozása a .NET SDK használatával

A DNS SDK-val és a .NET DNS-felügyeleti könyvtárával automatizálhatja a DNS-zónák, -rekordhalmazok és -rekordok létrehozását, törlését vagy frissítését. A Visual Studio teljes projektje itt érhető el .

Alkalmazáspéldány-fiók létrehozása

Az Azure-erőforrásokhoz való programozott hozzáférést általában a saját felhasználói hitelesítő adatai helyett dedikált fiókkal biztosítjuk. Ezeket a dedikált fiókokat "szolgáltatásnév" fiókoknak nevezzük. Az Azure DNS SDK mintaprojekt használatához először létre kell hoznia egy egyszerű szolgáltatásfiókot, és hozzá kell rendelnie a megfelelő engedélyekkel.

  1. Hozzon létre egy egyszerű szolgáltatásfiókot. Az Azure DNS SDK-mintaprojekt jelszóalapú hitelesítést feltételez.)

  2. Ezután hozzon létre egy erőforráscsoportot.

  3. Az Azure RBAC használatával adjon engedélyeket a "DNS-zóna közreműködője" szolgáltatásnév-fióknak az erőforráscsoport számára.

  4. Ha az Azure DNS SDK-mintaprojektet használja, szerkessze a program.cs fájlt az alábbiak szerint:

    • Szúrja be a , clientId (más néven fiókazonosító) (egyszerű szolgáltatásfiók jelszava) secret és subscriptionId az 1. lépésben használt megfelelő értékekettenantId.
    • Adja meg a 2. lépésben létrehozott erőforráscsoport nevét.
    • Adjon meg egy tetszőleges DNS-zónanevet.

NuGet-csomagok és névtér-deklarációk

Az Azure DNS .NET SDK használatához telepítenie kell az Azure DNS Management Library NuGet-csomagot és más szükséges Azure-csomagokat.

  1. A Visual Studióban nyisson meg egy projektet vagy egy új projektet.

  2. Lépjen az Eszközök>NuGet Package Manager>Manage NuGet Packages for Solution(NuGet-csomagok kezelése megoldáshoz) elemre.

  3. Válassza a Tallózás lehetőséget, engedélyezze az Előzetes befoglalás jelölőnégyzetet, és írja be a Microsoft.Azure.Management.Dns kifejezést a keresőmezőbe.

  4. Válassza ki a csomagot, majd a Telepítés lehetőséget választva adja hozzá a Visual Studio-projekthez.

  5. Ismételje meg a fenti folyamatot a következő csomagok telepítéséhez is: Microsoft.Rest.ClientRuntime.Azure.Authentication és Microsoft.Azure.Management.ResourceManager.

Névtér-deklarációk hozzáadása

Adja hozzá a következő névtér deklarációkat

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

A DNS-felügyeleti ügyfél inicializálása

A DnsManagementClient tartalmazza a DNS-zónák és rekordhalmazok kezeléséhez szükséges módszereket és tulajdonságokat. Az alábbi kód bejelentkezik a szolgáltatásnév-fiókba, és létrehoz egy DnsManagementClient objektumot.

// 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-zóna létrehozása vagy frissítése

DNS-zóna létrehozásához először létre kell hoznia egy "Zone" objektumot, amely tartalmazza a DNS-zóna paramétereit. Mivel a DNS-zónák nem kapcsolódnak egy adott régióhoz, a hely "globális" értékre van állítva. Ebben a példában egy Azure Resource Manager "tag" is hozzá lesz adva a zónához.

A zóna Azure DNS-ben való létrehozásához vagy frissítéséhez a rendszer átadja a zónaparamétereket tartalmazó zónaobjektumot a DnsManagementClient.Zones.CreateOrUpdateAsyc metódusnak.

Megjegyzés

A DnsManagementClient három működési módot támogat: szinkron ('CreateOrUpdate'), aszinkron ('CreateOrUpdateAsync'), vagy aszinkron módon a HTTP-válaszhoz való hozzáféréssel ('CreateOrUpdateWithHttpMessagesAsync'). Az alkalmazás igényeitől függően bármelyik módot kiválaszthatja.

Az Azure DNS támogatja az optimista egyidejűséget, az Etags nevet. Ebben a példában az "If-None-Match" fejléchez tartozó "*" megadása arra utasítja az Azure DNS-t, hogy hozzon létre egy DNS-zónát, ha még nem létezik. A hívás meghiúsul, ha a megadott nevű zóna már létezik az adott erőforráscsoportban.

// 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-rekordhalmazok és -rekordok létrehozása

A DNS-rekordok rekordhalmazként vannak kezelve. A rekordhalmazok olyan rekordok, amelynek neve és rekordtípusa azonos egy zónán belül. A rekordhalmaz neve a zóna nevéhez viszonyítva van, nem pedig a teljes DNS-névhez.

Rekordhalmaz létrehozásához vagy frissítéséhez létrejön egy "RecordSet" paraméterobjektum, amelyet a rendszer átad a következőnek DnsManagementClient.RecordSets.CreateOrUpdateAsync: . A DNS-zónákhoz hasonlóan három működési mód létezik: szinkron ('CreateOrUpdate'), aszinkron ('CreateOrUpdateAsync'), vagy aszinkron módon a HTTP-válaszhoz való hozzáféréssel ('CreateOrUpdateWithHttpMessagesAsync').

A DNS-zónákhoz hasonlóan a rekordhalmazokon végzett műveletek is támogatják az optimista egyidejűséget. Ebben a példában, mivel az "If-Match" vagy a "If-None-Match" nincs megadva, a rekordhalmaz mindig létrejön. Ez a hívás felülír minden olyan rekordhalmazt, amelynek neve és rekordtípusa azonos ebben a DNS-zónában.

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

Zónák és rekordhalmazok lekérése

A DnsManagementClient.Zones.Get és DnsManagementClient.RecordSets.Get metódusok az egyes zónákat és rekordhalmazokat kérik le. A RecordSet-eket a típusuk, a nevük, valamint a zónájuk és az erőforráscsoportjuk azonosítja. A zónákat a nevük és az erőforráscsoportjuk azonosítja.

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

Meglévő rekordhalmaz frissítése

Meglévő DNS-rekordkészlet frissítéséhez először kérje le a rekordkészletet. Ezután frissítse a rekordhalmaz tartalmát a módosítások elküldése előtt. Ebben a példában az "If-Match" paraméterben megadott lekért rekord "Etag" értékét adhatja meg. A hívás meghiúsul, ha egy egyidejű művelet időközben módosította a rekordhalmazt.

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

Zónák és rekordhalmazok listázása

  • A zónák listázásához használja a DnsManagementClient.Zones.List... metódusokat, amelyek támogatják egy adott erőforráscsoport összes zónájának vagy egy adott Azure-előfizetés összes zónájának felsorolását (erőforráscsoportok között).)

  • Rekordhalmazok listázásához használja a DnsManagementClient.RecordSets.List... metódusokat, amelyek támogatják az adott zónában lévő összes rekordhalmaz felsorolását, vagy csak az adott típusú rekordhalmazokat.

Figyelje meg, hogy a zónák és rekordhalmazok felsorolása esetén az eredmények lapszámozhatók. Az alábbi példa bemutatja, hogyan lehet iterálni az eredmények oldalain. (A lapozás kényszerítéséhez mesterségesen "2" oldalméretet használnak; a gyakorlatban ezt a paramétert ki kell hagyni, és az alapértelmezett oldalméretet kell használni.)

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

Következő lépések

Töltse le az Azure DNS .NET SDK-mintaprojektet. Példákat tartalmaz arra, hogyan használható az Azure DNS .NET SDK, valamint más DNS-rekordtípusok példáit.