Sdílet prostřednictvím


Vytváření zón DNS a sad záznamů pomocí sady .NET SDK

K automatizaci operací, jako je vytváření, odstraňování nebo aktualizace zón DNS, sad záznamů i samotných záznamů můžete použít sadu DNS SDK s knihovnou .NET pro správu DNS. Úplný projekt sady Visual Studio je k dispozici tady.

Vytvoření účtu instančního objektu

Programový přístup k prostředkům Azure se obvykle uděluje s vyhrazeným účtem, a ne s vlastními přihlašovacími údaji uživatele. Tyto vyhrazené účty se nazývají účty instančního objektu. Pokud chcete použít ukázkový projekt sady Azure DNS SDK, musíte nejprve vytvořit účet instančního objektu a přiřadit ho se správnými oprávněními.

  1. Vytvořte účet instančního objektu. Ukázkový projekt sady Azure DNS SDK předpokládá ověřování pomocí hesla.)

  2. Pak vytvořte skupinu prostředků.

  3. Pomocí Azure RBAC udělte účtu instančního objektu oprávnění Přispěvatel zóny DNS ke skupině prostředků.

  4. Pokud používáte ukázkový projekt sady Azure DNS SDK, upravte soubor program.cs takto:

    • Vložte správné hodnoty pro tenantId, clientId (označované také jako ID účtu), secret (heslo účtu instančního objektu) a subscriptionId použité v kroku 1.
    • Zadejte název skupiny prostředků vytvořené v kroku 2.
    • Zadejte název zóny DNS podle svého výběru.

Balíčky NuGet a deklarace oboru názvů

Pokud chcete používat sadu Azure DNS .NET SDK, musíte nainstalovat balíček NuGet knihovny pro správu Azure DNS a další požadované balíčky Azure.

  1. V sadě Visual Studio otevřete projekt nebo nový projekt.

  2. Přejděte na Nástroje> Správce >balíčků NuGetSpravovat balíčky NuGet pro řešení....

  3. Vyberte Procházet, zaškrtněte políčko Zahrnout předběžné verze a do vyhledávacího pole zadejte Microsoft.Azure.Management.Dns .

  4. Vyberte balíček a pak ho výběrem možnosti Nainstalovat přidejte do projektu sady Visual Studio.

  5. Opakujte výše uvedený postup a nainstalujte také následující balíčky: Microsoft.Rest.ClientRuntime.Azure.Authentication a Microsoft.Azure.Management.ResourceManager.

Přidání deklarací oboru názvů

Přidejte následující deklarace oboru názvů.

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

Inicializace klienta pro správu DNS

Obsahuje DnsManagementClient metody a vlastnosti potřebné ke správě zón DNS a sad záznamů. Následující kód se přihlásí k účtu instančního objektu DnsManagementClient a vytvoří objekt .

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

Vytvoření nebo aktualizace zóny DNS

Pokud chcete vytvořit zónu DNS, musíte nejprve vytvořit objekt Zone obsahující parametry zóny DNS. Vzhledem k tomu, že zóny DNS nejsou propojené s konkrétní oblastí, umístění je nastavené na globální. V tomto příkladu se do zóny přidá také značka Resource Manager Azure.

Pokud chcete vytvořit nebo aktualizovat zónu v Azure DNS, předá se DnsManagementClient.Zones.CreateOrUpdateAsyc metodě objekt zóny obsahující parametry zóny.

Poznámka

DnsManagementClient podporuje tři režimy operace: synchronní (CreateOrUpdate), asynchronní (CreateOrUpdateAsync) nebo asynchronní s přístupem k odpovědi HTTP (CreateOrUpdateWithHttpMessagesAsync). V závislosti na potřebách vaší aplikace můžete zvolit kterýkoli z těchto režimů.

Azure DNS podporuje optimistickou souběžnost označovanou jako značky Etag. V tomto příkladu zadání *pro hlavičku If-None-Match říká azure DNS, že má vytvořit zónu DNS, pokud ještě neexistuje. Volání selže, pokud v dané skupině prostředků již existuje zóna s daným názvem.

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

Vytváření sad záznamů a záznamů DNS

Záznamy DNS se spravují jako sada záznamů. Sada záznamů je sada záznamů se stejným názvem a typem záznamu v rámci zóny. Název sady záznamů je relativní k názvu zóny, nikoli k plně kvalifikovanému názvu DNS.

Pokud chcete vytvořit nebo aktualizovat sadu záznamů, vytvoří se objekt parametrů RecordSet a předá se do DnsManagementClient.RecordSets.CreateOrUpdateAsyncobjektu . Stejně jako u zón DNS existují tři režimy operace: synchronní (CreateOrUpdate), asynchronní (CreateOrUpdateAsync) nebo asynchronní s přístupem k odpovědi HTTP (CreateOrUpdateWithHttpMessagesAsync).

Stejně jako u zón DNS zahrnují operace se sadami záznamů podporu optimistické souběžnosti. Protože v tomto příkladu není zadána hodnota If-Match nebo If-None-Match, vytvoří se sada záznamů vždy. Toto volání přepíše všechny existující sady záznamů se stejným názvem a typem záznamu v této zóně 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);

Získání zón a sad záznamů

Metody DnsManagementClient.Zones.Get a DnsManagementClient.RecordSets.Get načítají jednotlivé zóny a sady záznamů v uvedeném pořadí. Sady záznamů se identifikují podle typu, názvu a zóny a skupiny prostředků, ve které existují. Zóny se identifikují podle názvu a skupiny prostředků, ve které existují.

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

Aktualizace existující sady záznamů

Pokud chcete aktualizovat existující sadu záznamů DNS, nejprve načtěte sadu záznamů. Pak před odesláním změn aktualizujte obsah sady záznamů. V tomto příkladu určíme etag z načtené sady záznamů v parametru If-Match. Volání selže, pokud mezitím souběžná operace změnila sadu záznamů.

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

Výpis zón a sad záznamů

  • K výpisu zón použijte metody DnsManagementClient.Zones.List... , které podporují výpis všech zón v dané skupině prostředků nebo všech zón v daném předplatném Azure (napříč skupinami prostředků).

  • Pokud chcete vypsat sady záznamů, použijte metody DnsManagementClient.RecordSets.List... , které podporují buď výpis všech sad záznamů v dané zóně, nebo pouze ty sady záznamů určitého typu.

Při výpisu zón a sad záznamů mějte na paměti, že výsledky můžou být stránkované. Následující příklad ukazuje, jak iterovat stránkami výsledků. (K vynucení stránkování se používá uměle malá velikost stránky 2; v praxi by se tento parametr měl vynechat a použít výchozí velikost stránky.)

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

Další kroky

Stáhněte si ukázkový projekt sady Azure DNS .NET SDK. Obsahuje příklady použití sady Azure DNS .NET SDK a také příklady pro další typy záznamů DNS.