require 'fog/azurerm' require 'yaml' ######################################################################################################################## ###################### Services object required by all actions ###################### ###################### Keep it Uncommented! ###################### ######################################################################################################################## azure_credentials = YAML.load_file('credentials/azure.yml') rs = Fog::Resources::AzureRM.new( tenant_id: azure_credentials['tenant_id'], client_id: azure_credentials['client_id'], client_secret: azure_credentials['client_secret'], subscription_id: azure_credentials['subscription_id'] ) network = Fog::Network::AzureRM.new( tenant_id: azure_credentials['tenant_id'], client_id: azure_credentials['client_id'], client_secret: azure_credentials['client_secret'], subscription_id: azure_credentials['subscription_id'] ) ######################################################################################################################## ###################### Prerequisites ###################### ######################################################################################################################## rs.resource_groups.create( name: 'TestRG-LB', location: 'westus' ) network.virtual_networks.create( name: 'testVnet', location: 'westus', resource_group: 'TestRG-LB', dns_servers: %w(10.1.0.0 10.2.0.0), address_prefixes: %w(10.1.0.0/16 10.2.0.0/16) ) network.subnets.create( name: 'mysubnet', resource_group: 'TestRG-LB', virtual_network_name: 'testVnet', address_prefix: '10.1.0.0/24' ) pip = network.public_ips.create( name: 'mypubip', resource_group: 'TestRG-LB', location: 'westus', public_ip_allocation_method: 'Dynamic' ) ######################################################################################################################## ###################### Create Load Balancer ###################### ######################################################################################################################## network.load_balancers.create( name: 'lb', resource_group: 'TestRG-LB', location: 'westus', frontend_ip_configurations: [ { name: 'fic', private_ipallocation_method: 'Dynamic', public_ipaddress_id: pip.id } ], backend_address_pool_names: [ 'pool1' ], load_balancing_rules: [ { name: 'lb_rule_1', frontend_ip_configuration_id: "/subscriptions/#{azure_credentials['subscription_id']}/resourceGroups/TestRG-LB/providers/Microsoft.Network/loadBalancers/lb/frontendIPConfigurations/fic", backend_address_pool_id: "/subscriptions/#{azure_credentials['subscription_id']}/resourceGroups/TestRG-LB/providers/Microsoft.Network/loadBalancers/lb/backendAddressPools/pool1", protocol: 'Tcp', frontend_port: '80', backend_port: '8080', enable_floating_ip: false, idle_timeout_in_minutes: 4, load_distribution: 'Default' } ], inbound_nat_rules: [ { name: 'RDP-Traffic', frontend_ip_configuration_id: "/subscriptions/#{azure_credentials['subscription_id']}/resourceGroups/TestRG-LB/providers/Microsoft.Network/loadBalancers/lb/frontendIPConfigurations/fic", protocol: 'Tcp', frontend_port: 3389, backend_port: 3389 } ] ) ######################################################################################################################## ###################### Get and Destroy Load Balancer ###################### ######################################################################################################################## lb = network.load_balancers(resource_group: 'TestRG-LB').get('lb') lb.destroy ######################################################################################################################## ###################### CleanUp ###################### ######################################################################################################################## pubip = network.public_ips.get('TestRG-LB', 'mypubip') pubip.destroy vnet = network.virtual_networks.get('TestRG-LB', 'testVnet') vnet.destroy rg = rs.resource_groups.get('TestRG-LB') rg.destroy