Awesome
page_type: sample languages:
- ruby products:
- azure description: "This sample explains how to manage your resources and resource groups in Azure using the Azure Ruby SDK." urlFragment: resource-manager-ruby-resources-and-groups
Manage Azure resources and resource groups with Ruby
This sample explains how to manage your resources and resource groups in Azure using the Azure Ruby SDK.
On this page
<a id="run"></a>
Run this sample
-
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/resource-manager-ruby-resources-and-groups.git
-
Install the dependencies using bundle.
cd resource-manager-ruby-resources-and-groups 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
<a id="example"></a>
What is example.rb doing?
The sample walks you through several resource and resource group management operations. 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)
client = Azure::ARM::Resources::ResourceManagementClient.new(credentials)
client.subscription_id = subscription_id
It also sets up a ResourceGroup object (resource_group_params) to be used as a parameter in some of the API calls.
resource_group_params = Azure::ARM::Resources::Models::ResourceGroup.new.tap do |rg|
rg.location = `westus`
end
There are a couple of supporting functions (print_item
and print_properties
) that print a resource group and it's properties.
With that set up, the sample lists all resource groups for your subscription, it performs these operations.
<a id="list-groups"></a>
List resource groups
List the resource groups in your subscription.
client.resource_groups.list.value.each{ |group| print_item(group) }
<a id="create-group"></a>
Create a resource group
client.resource_groups.create_or_update('azure-sample-group', resource_group_params)
<a id="update-group"></a>
Update a resource group
The sample adds a tag to the resource group.
resource_group_params.tags = { hello: 'world' }
client.resource_groups.create_or_update('azure-sample-group', resource_group_params)
<a id="create-resource"></a>
Create a key vault in the resource group
key_vault_params = Azure::ARM::Resources::Models::GenericResource.new.tap do |rg|
rg.location = WEST_US
rg.properties = {
sku: { family: 'A', name: 'standard' },
tenantId: ENV['AZURE_TENANT_ID'],
accessPolicies: [],
enabledForDeployment: true,
enabledForTemplateDeployment: true,
enabledForDiskEncryption: true
}
end
client.resources.create_or_update(GROUP_NAME,
'Microsoft.KeyVault',
'',
'vaults',
'azureSampleVault',
'2015-06-01',
key_vault_params)
<a id="list-resources"></a>
List resources within the group
client.resource_groups.list_resources(GROUP_NAME).value.each{ |resource| print_item(resource) }
<a id="export"></a>
Export the resource group template
You can export the resource group as a template and then use that to deploy your resources to Azure.
export_params = Azure::ARM::Resources::Models::ExportTemplateRequest.new.tap do |rg|
rg.resources = ['*']
end
client.resource_groups.export_template(GROUP_NAME, export_params)
<a id="delete-group"></a>
Delete a resource group
client.resource_groups.delete('azure-sample-group')