Application Gateway¶ ↑
This document explains how to get started using Azure Network Service with Fog
to manage Application Gateway. With this gem you can create/update/list/delete Application Gateway.
Usage¶ ↑
First of all, you need to require the Fog
library by executing:
require 'fog/azurerm'
Create Connection¶ ↑
Next, create a connection to the Application Gateway Service:
azure_application_gateway_service = Fog::ApplicationGateway::AzureRM.new( tenant_id: '<Tenantid>', # Tenant id of Azure Active Directory Application client_id: '<Clientid>', # Client id of Azure Active Directory Application client_secret: '<ClientSecret>', # Client Secret of Azure Active Directory Application subscription_id: '<Subscriptionid>', # Subscription id of an Azure Account :environment => '<AzureCloud/AzureChinaCloud/AzureUSGovernment/AzureGermanCloud>' # Azure cloud environment. Default is AzureCloud. )
Check Application Gateway Existence¶ ↑
azure_application_gateway_service.gateways.check_application_gateway_exists(<Resource Group name>, <Gateway Name>)
Create Application Gateway¶ ↑
Create a new Application Gateway.
gateway = azure_application_gateway_service.gateways.create( name: '<Gateway Name>', location: 'eastus', resource_group: '<Resource Group name>', sku_name: 'Standard_Medium', sku_tier: 'Standard', sku_capacity: '2', gateway_ip_configurations: [ { name: 'gatewayIpConfigName', subnet_id: '/subscriptions/<Subscription_id>/resourcegroups/<Resource Group name>/providers/Microsoft.Network/virtualNetworks/<Virtual Network Name>/subnets/<Subnet Name>' } ], frontend_ip_configurations: [ { name: 'frontendIpConfig', private_ip_allocation_method: Fog::ARM::Network::Models::IPAllocationMethod::Dynamic, public_ip_address_id: '/subscriptions/<Subscription_id>/resourcegroups/<Resource Group name>/providers/Microsoft.Network/publicIPAddresses/<Public IP Address Name>', private_ip_address: '10.0.1.5' } ], frontend_ports: [ { name: 'frontendPort', port: 443 } ], backend_address_pools: [ { name: 'backendAddressPool', ip_addresses: [ { ipAddress: '10.0.1.6' } ] } ], backend_http_settings_list: [ { name: 'gateway_settings', port: 80, protocol: 'Http', cookie_based_affinity: 'Enabled', request_timeout: '30' } ], http_listeners: [ { name: 'gateway_listener', frontend_ip_config_id: '/subscriptions/<Subscription_id>/resourceGroups/<Resource Group name>/providers/Microsoft.Network/applicationGateways/<Gateway Name>/frontendIPConfigurations/frontendIpConfig', frontend_port_id: '/subscriptions/<Subscription_id>/resourceGroups/<Resource Group name>/providers/Microsoft.Network/applicationGateways/<Gateway Name>/frontendPorts/frontendPort', protocol: 'Http', host_name: '', require_server_name_indication: 'false' } ], request_routing_rules: [ { name: 'gateway_request_route_rule', type: 'Basic', http_listener_id: '/subscriptions/<Subscription_id>/resourceGroups/<Resource Group name>/providers/Microsoft.Network/applicationGateways/<Gateway Name>/httpListeners/gateway_listener', backend_address_pool_id: '/subscriptions/<Subscription_id>/resourceGroups/<Resource Group name>/providers/Microsoft.Network/applicationGateways/<Gateway Name>/backendAddressPools/backendAddressPool', backend_http_settings_id: '/subscriptions/<Subscription_id>/resourceGroups/<Resource Group name>/providers/Microsoft.Network/applicationGateways/<Gateway Name>/backendHttpSettingsCollection/gateway_settings', url_path_map: '' } ] )
There can be two ways of giving frontend_ip_configurations
while creating application gateway
-
When giving public ip, then we need to provide
public_ip_address_id
as follows
frontend_ip_configurations: [ { name: 'frontendIpConfig', private_ip_allocation_method: Fog::ARM::Network::Models::IPAllocationMethod::Dynamic, public_ip_address_id: '/subscriptions/<Subscription_id>/resourcegroups/<Resource Group name>/providers/Microsoft.Network/publicIPAddresses/<Public IP Address Name>', private_ip_address: '10.0.1.5' } ]
-
When giving subnet id, then we need to provide
subnet_id
as follows
frontend_ip_configurations: [ { name: 'frontendIpConfig', private_ip_allocation_method: Fog::ARM::Network::Models::IPAllocationMethod::Dynamic, subnet_id: '<Subnet ID', private_ip_address: '10.0.1.5' } ]
List Application Gateways¶ ↑
List all application gateways in a resource group
gateways = azure_application_gateway_service.gateways(resource_group: '<Resource Group Name>') gateways.each do |gateway| puts "#{gateway.name}" end
Retrieve a single Application Gateway¶ ↑
Get a single record of Application Gateway
gateway = azure_application_gateway_service .gateways .get('<Resource Group name>', '<Application Gateway Name>') puts "#{gateway.name}"
Update sku attributes (Name and Capacity)¶ ↑
ag.update_sku('Standard_Small', '1')
Update gateway ip configuration (Subnet id)¶ ↑
ag.update_gateway_ip_configuration("/subscriptions/<Subscription_id>/<Resource Group name>/<Gateway Name>/providers/Microsoft.Network/virtualNetworks/<Virtual Network Name>/subnets/<Subnet Name>")
Add/Remove SSL Certificates¶ ↑
ag.add_ssl_certificate( { name: '<SSL Certificate name>', data: 'Base-64 encoded pfx certificate', password: 'azure', public_cert_data: 'Base-64 encoded Public cert data corresponding to pfx specified in data.' } ) ag.remove_ssl_certificate( { name: '<SSL Certificate name>', data: 'Base-64 encoded pfx certificate', password: 'azure', public_cert_data: 'Base-64 encoded Public cert data corresponding to pfx specified in data.' } )
Add/Remove Frontend ports¶ ↑
ag.add_frontend_port({name: '<Frontend port name>', port: 80}) ag.remove_frontend_port({name: '<Frontend port name>', port: 80})
Add/Remove Probes¶ ↑
ag.add_probe( { name: '<Probe name>', protocol: 'http', host: 'localhost', path: '/fog-test', interval: 60, timeout: 300, unhealthy_threshold: 5 } ) ag.remove__probe( { name: '<Probe name>', protocol: 'http', host: 'localhost', path: '/fog-test', interval: 60, timeout: 300, unhealthy_threshold: 5 } )
Destroy a single Application Gateway¶ ↑
Get a application gateway object from the get method and then destroy that application gateway.
gateway.destroy
Support and Feedback¶ ↑
Your feedback is highly appreciated! If you have specific issues with the fog ARM, you should file an issue via Github.