Manage Azure DNS with Ruby
This sample demonstrates how to manage your Azure DNS using a ruby client.
On this page
1. If you don't already have it, install Ruby and the Ruby DevKit.
If you don't have bundler, install it.
gem install bundler
Clone the repository.
git clone https://github.com/Azure-Samples/dns-ruby-zones-and-recordsets.git
Install the dependencies using bundle.
cd dns-ruby-zones-and-recordsets bundle install
Create an Azure service principal either through Azure CLI, PowerShell or the portal.
Set the following environment variables using the information from the service principle that you created.
export AZURE_TENANT_ID={your tenant id} export AZURE_CLIENT_ID={your client id} export AZURE_CLIENT_SECRET={your client secret} export AZURE_SUBSCRIPTION_ID={your subscription id}
[AZURE.NOTE] On Windows, use
set
instead ofexport
.Run the sample.
bundle exec ruby example.rb
What does example.rb do?
The sample creates a DNS Management client and creates a DNS zone. It starts by setting up a ResourceManagementClient object using your subscription and credentials.
subscription_id = ENV['AZURE_SUBSCRIPTION_ID'] || '11111111-1111-1111-1111-111111111111' # your Azure Subscription Id
provider = MsRestAzure::ApplicationTokenProvider.new(
ENV['AZURE_TENANT_ID'],
ENV['AZURE_CLIENT_ID'],
ENV['AZURE_CLIENT_SECRET'])
credentials = MsRest::TokenCredentials.new(provider)
resource_client = Azure::ARM::Resources::ResourceManagementClient.new(credentials)
resource_client.subscription_id = web_client.subscription_id = subscription_id
The sample then sets up a resource group.
resource_group_params = Azure::ARM::Resources::Models::ResourceGroup.new.tap do |rg|
rg.location = WEST_US
end
resource_group_params.class.class
resource_client.resource_groups.create_or_update(GROUP_NAME, resource_group_params)
Create a DNS record
record = Azure::ARM::Dns::Models::RecordSet.new.tap do |r|
arecord1 = Azure::ARM::Dns::Models::ARecord.new.tap do |a|
a.ipv4address = "1.2.3.4"
end
arecord2 = Azure::ARM::Dns::Models::ARecord.new.tap do |a|
a.ipv4address = "1.2.3.5"
end
r.arecords = [arecord1 , arecord2]
end
record_params = Azure::ARM::Dns::Models::RecordSetUpdateParameters.new.tap do |r|
r.record_set = record
end
dns_client.record_sets.create_or_update(GROUP_NAME, ZONE_NAME, "www", Azure::ARM::Dns::Models::RecordType::A, record_params)
Delete a zone
dns_client.zones.delete(GROUP_NAME, ZONE_NAME)
More information
Please refer to Azure SDK for Ruby for more information.