Udostępnij za pośrednictwem


Tworzenie stref DNS i zestawów rekordów przy użyciu zestawu SDK platformy .NET

Można zautomatyzować operacje tworzenia, usuwania lub aktualizowania stref DNS, zestawów rekordów i rekordów przy użyciu zestawu SDK DNS za pomocą biblioteki zarządzania usługą DNS platformy .NET. Pełny projekt programu Visual Studio jest dostępny tutaj.

Tworzenie konta jednostki usługi

Zazwyczaj dostęp programowy do zasobów platformy Azure jest udzielany przy użyciu dedykowanego konta, a nie własnych poświadczeń użytkownika. Te dedykowane konta są nazywane kontami "jednostki usługi". Aby użyć przykładowego projektu zestawu SDK usługi Azure DNS, należy najpierw utworzyć konto jednostki usługi i przypisać je z odpowiednimi uprawnieniami.

  1. Utwórz konto jednostki usługi. Przykładowy projekt zestawu SDK usługi Azure DNS zakłada uwierzytelnianie oparte na hasłach).

  2. Następnie utwórz grupę zasobów.

  3. Użyj kontroli dostępu opartej na rolach platformy Azure, aby przyznać grupie zasobów uprawnienia "Współautor strefy DNS".

  4. Jeśli używasz przykładowego projektu zestawu SDK usługi Azure DNS, zmodyfikuj plik "program.cs", jak pokazano poniżej:

    • Wstaw poprawne wartości dla elementu tenantIdclientId (nazywanego również identyfikatorem konta), secret (hasło konta jednostki usługi) i subscriptionId używane w kroku 1.
    • Wprowadź nazwę grupy zasobów utworzoną w kroku 2.
    • Wprowadź wybraną nazwę strefy DNS.

Pakiety NuGet i deklaracje przestrzeni nazw

Aby użyć zestawu SDK platformy .NET usługi Azure DNS, należy zainstalować pakiet NuGet biblioteki zarządzania usługą Azure DNS i inne wymagane pakiety platformy Azure.

  1. W programie Visual Studio otwórz projekt lub nowy projekt.

  2. Przejdź do pozycji Narzędzia > NuGet Menedżer pakietów > Zarządzanie pakietami NuGet dla rozwiązania....

  3. Zaznacz pole wyboru Przeglądaj, włącz pole wyboru Uwzględnij wersję wstępną i wpisz Ciąg Microsoft.Azure.Management.Dns w polu wyszukiwania.

  4. Wybierz pakiet, a następnie wybierz pozycję Zainstaluj , aby dodać go do projektu programu Visual Studio.

  5. Powtórz powyższy proces, aby zainstalować również następujące pakiety: Microsoft.Rest.ClientRuntime.Azure.Authentication i Microsoft.Azure.Management.ResourceManager.

Dodawanie deklaracji przestrzeni nazw

Dodaj następujące deklaracje przestrzeni nazw

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

Inicjowanie klienta zarządzania SYSTEMEM DNS

Zawiera DnsManagementClient metody i właściwości niezbędne do zarządzania strefami DNS i zestawami rekordów. Poniższy kod loguje się do konta jednostki usługi i tworzy DnsManagementClient obiekt.

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

Tworzenie lub aktualizowanie strefy DNS

Aby utworzyć strefę DNS, należy najpierw utworzyć obiekt "Zone" zawierający parametry strefy DNS. Ponieważ strefy DNS nie są połączone z określonym regionem, lokalizacja jest ustawiona na "globalną". W tym przykładzie do strefy jest również dodawany "tag" usługi Azure Resource Manager.

Aby utworzyć lub zaktualizować strefę w usłudze Azure DNS, obiekt strefy zawierający parametry strefy jest przekazywany do DnsManagementClient.Zones.CreateOrUpdateAsyc metody .

Uwaga

Obiekt DnsManagementClient obsługuje trzy tryby operacji: synchroniczny ('CreateOrUpdate'), asynchroniczny ('CreateOrUpdateAsync') lub asynchroniczny z dostępem do odpowiedzi HTTP ('CreateOrUpdateWithHttpMessagesAsync'). W zależności od potrzeb aplikacji możesz wybrać dowolny z tych trybów.

Usługa Azure DNS obsługuje optymistyczną współbieżność o nazwie Etags. W tym przykładzie określenie ciągu "*" dla nagłówka "If-None-Match" informuje usługę Azure DNS o utworzeniu strefy DNS, jeśli jeszcze nie istnieje. Wywołanie nie powiedzie się, jeśli strefa o podanej nazwie już istnieje w danej grupie zasobów.

// 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, "*");

Tworzenie zestawów rekordów i rekordów DNS

Rekordy DNS są zarządzane jako zestaw rekordów. Zestaw rekordów to zestaw rekordów o tej samej nazwie i typie rekordu w strefie. Nazwa zestawu rekordów jest względna względem nazwy strefy, a nie w pełni kwalifikowanej nazwy DNS.

Aby utworzyć lub zaktualizować zestaw rekordów, obiekt parametrów "RecordSet" jest tworzony i przekazywany do DnsManagementClient.RecordSets.CreateOrUpdateAsyncelementu . Podobnie jak w przypadku stref DNS, istnieją trzy tryby operacji: synchroniczny ('CreateOrUpdate'), asynchroniczny ('CreateOrUpdateAsync') lub asynchroniczny z dostępem do odpowiedzi HTTP ('CreateOrUpdateWithHttpMessagesAsync').

Podobnie jak w przypadku stref DNS, operacje w zestawach rekordów obejmują obsługę optymistycznej współbieżności. W tym przykładzie, ponieważ parametr "If-Match" lub "If-None-Match" nie jest określony, zestaw rekordów jest zawsze tworzony. To wywołanie zastępuje dowolny istniejący zestaw rekordów o tej samej nazwie i typie rekordu w tej strefie 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);

Pobieranie stref i zestawów rekordów

Metody DnsManagementClient.Zones.Get i DnsManagementClient.RecordSets.Get pobierają odpowiednio poszczególne strefy i zestawy rekordów. Zestawy rekordów są identyfikowane przez ich typ, nazwę i strefę i grupę zasobów, w których istnieją. Strefy są identyfikowane przez ich nazwę i grupę zasobów, w której istnieją.

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

Aktualizowanie istniejącego zestawu rekordów

Aby zaktualizować istniejący zestaw rekordów DNS, najpierw pobierz zestaw rekordów. Następnie zaktualizuj zawartość zestawu rekordów przed przesłaniem zmian. W tym przykładzie określamy element "Etag" z pobranego zestawu rekordów w parametrze "If-Match". Wywołanie nie powiedzie się, jeśli operacja współbieżna zmodyfikowała zestaw rekordów w międzyczasie.

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

Wyświetlanie listy stref i zestawów rekordów

  • Aby wyświetlić listę stref, użyj metod DnsManagementClient.Zones.List... , które obsługują wyświetlanie listy wszystkich stref w danej grupie zasobów lub wszystkich stref w danej subskrypcji platformy Azure (między grupami zasobów).

  • Aby wyświetlić listę zestawów rekordów, użyj metod DnsManagementClient.RecordSets.List... , które obsługują wyświetlanie listy wszystkich zestawów rekordów w danej strefie lub tylko te zestawy rekordów określonego typu.

Podczas wyświetlania listy stref i zestawów rekordów wyniki mogą być podzielone na strony. W poniższym przykładzie pokazano, jak iterować przez strony wyników. (Sztucznie mały rozmiar strony 2 jest używany do wymuszania stronicowania; w praktyce ten parametr powinien zostać pominięty i używany domyślny rozmiar strony).

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

Następne kroki

Pobierz przykładowy projekt zestawu .NET SDK usługi Azure DNS. Zawiera przykłady użycia zestawu SDK platformy .NET usługi Azure DNS oraz przykłady dla innych typów rekordów DNS.