Vytvoř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. Tady je k dispozici úplný projekt sady Visual Studio.
Vytvoření účtu instančního objektu
Programový přístup k prostředkům Azure se obvykle uděluje pomocí vyhrazeného účtu místo vlastních přihlašovacích údajů 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.
Vytvořte účet instančního objektu. Ukázkový projekt sady Azure DNS SDK předpokládá ověřování na základě hesla.)
Pak vytvořte skupinu prostředků.
Pomocí Azure RBAC udělte účtu instančního objektu oprávnění Přispěvatel zóny DNS skupině prostředků.
Pokud používáte ukázkový projekt sady Azure DNS SDK, upravte soubor program.cs podle následujícího příkladu:
- Vložte správné hodnoty pro
tenantId
hodnotu ,clientId
(označovanou také jako ID účtu),secret
(heslo účtu instančního objektu) asubscriptionId
použijte ji v kroku 1. - Zadejte název skupiny prostředků vytvořený v kroku 2.
- Zadejte název zóny DNS podle vašeho výběru.
- Vložte správné hodnoty pro
Balíčky NuGet a deklarace oboru názvů
Pokud chcete použít sadu Azure DNS .NET SDK, musíte nainstalovat balíček NuGet knihovny Pro správu Azure a další požadované balíčky Azure.
V sadě Visual Studio otevřete projekt nebo nový projekt.
Přejděte na Nástroje > NuGet Správce balíčků > Spravovat balíčky NuGet pro řešení....
Vyberte Procházet, povolte zaškrtávací políčko Zahrnout předběžné verze a do vyhledávacího pole zadejte Microsoft.Azure.Management.Dns .
Vyberte balíček a pak ho výběrem možnosti Nainstalovat přidejte do projektu sady Visual Studio.
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 a vytvoří DnsManagementClient
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í, je umístění nastavené na "global". V tomto příkladu se do zóny přidá také značka Azure Resource Manageru.
Pokud chcete vytvořit nebo aktualizovat zónu v Azure DNS, předá DnsManagementClient.Zones.CreateOrUpdateAsync
se 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 si můžete vybrat některý z těchto režimů.
Azure DNS podporuje optimistickou souběžnost s názvem Etags. V tomto příkladu zadáním "*" pro hlavičku If-None-Match říká Azure DNS, aby vytvořil 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í vzhledem k názvu zóny, nikoli plně kvalifikovaný název DNS.
Chcete-li vytvořit nebo aktualizovat sadu záznamů, vytvoří se objekt parametrů "RecordSet" a předá do DnsManagementClient.RecordSets.CreateOrUpdateAsync
. 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. V tomto příkladu není zadána hodnota If-Match nebo If-None-Match, a proto se sada záznamů vždy vytvoří. 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
načítají DnsManagementClient.RecordSets.Get
jednotlivé zóny a sady záznamů v uvedeném pořadí. Sady záznamů jsou identifikovány jejich typem, názvem a zónou a skupinou prostředků, ve které existují. Zóny jsou identifikovány jejich názvem a skupinou 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ů. Před odesláním změn pak aktualizujte obsah sady záznamů. V tomto příkladu zadáme z načtené sady záznamů v parametru If-Match značku Etag. Volání selže, pokud mezitím souběžná operace upravila 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ů
Pokud chcete zobrazit seznam zón, použijte metody DnsManagementClient.Zones.List... podporující výpis všech zón v dané skupině prostředků nebo všechny zóny v daném předplatném Azure (napříč skupinami prostředků).)
Pokud chcete zobrazit seznam sad 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.
Všimněte si při výpisu zón a sad záznamů, které mohou být výsledky stránkovány. Následující příklad ukazuje, jak iterovat stránky 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.