| @@ -0,0 +1,132 @@ | |||||
| { | |||||
| "location": "{{ agw.location }}", | |||||
| "properties": { | |||||
| "sku": { | |||||
| "capacity": "{{ agw.sku.capacity | default(2) }}", | |||||
| "name": "{{ agw.sku.name | default('Standard_v2') }}", | |||||
| "tier": "{{ agw.sku.tier | default('Standard_v2') }}" | |||||
| }, | |||||
| "gatewayIPConfigurations": [ | |||||
| {% for gwipc in agw.gateway_ip_configurations %} | |||||
| { | |||||
| "name": "{{ gwipc.name }}", | |||||
| "properties": { | |||||
| "subnet": { | |||||
| "id": "{{ gwipc.subnet }}" | |||||
| } | |||||
| } | |||||
| }, | |||||
| {% endfor %} | |||||
| ], | |||||
| "sslCertificates": [], | |||||
| "frontendIPConfigurations": [ | |||||
| {% for fipc in agw.frontend_ip_configurations %} | |||||
| { | |||||
| "name": "{{ fipc.name }}", | |||||
| "properties": { | |||||
| "privateIPAllocationMethod": "{{ fipc.private_ip_allocation_method | default('Dynamic') }}", | |||||
| "publicIPAddress": { | |||||
| "id": "{{ fipc.public_ip_address }}" | |||||
| }, | |||||
| {% if fipc.subnet is defined %} | |||||
| "subnet": { | |||||
| "id": "{{ fipc.subnet }}" | |||||
| } | |||||
| {% endif %} | |||||
| } | |||||
| }, | |||||
| {% endfor %} | |||||
| ], | |||||
| "frontendPorts": [ | |||||
| {% for fport in agw.frontend_ports %} | |||||
| { | |||||
| "name": "{{ fport.name }}", | |||||
| "properties": { | |||||
| "port": {{ fport.port }}, | |||||
| } | |||||
| }, | |||||
| {% endfor %} | |||||
| ], | |||||
| "backendAddressPools": [ | |||||
| {% for bp in agw.backend_address_pools %} | |||||
| { | |||||
| "name": "{{ bp.name }}", | |||||
| "properties": { | |||||
| "backendAddresses": [ | |||||
| {% for ip in bp.backend_addresses %} | |||||
| { | |||||
| "ipAddress": "{{ ip }}" | |||||
| }, | |||||
| {% endfor %} | |||||
| ], | |||||
| }, | |||||
| }, | |||||
| {% endfor %} | |||||
| ], | |||||
| "backendHttpSettingsCollection": [ | |||||
| {% for bset in agw.backend_http_settings_collection %} | |||||
| { | |||||
| "name": "{{ bset.name }}", | |||||
| "properties": { | |||||
| "port": {{ bset.port }}, | |||||
| "protocol": "{{ bset.protocol | default('Http') }}", | |||||
| "cookieBasedAffinity": "{{ bset.cookie_based_affinity | default('Enabled') }}", | |||||
| "pickHostNameFromBackendAddress": {{ bset.pick_host_name_from_backend_address | default(false) }}, | |||||
| "probeEnabled": {{ bset.probe_enabled | default(false) }}, | |||||
| {% if bset.probe_enabled is defined and bset.probe_enabled %} | |||||
| "probe": { | |||||
| "id": "{{ bset.probe }}" | |||||
| }, | |||||
| {% endif %} | |||||
| "affinityCookieName": "{{ bset.affinity_cookie_name | default('ApplicationGatewayAffinity') }}", | |||||
| "requestTimeout": {{ bset.request_timeout | default(20) }}, | |||||
| }, | |||||
| }, | |||||
| {% endfor %} | |||||
| ], | |||||
| "httpListeners": [ | |||||
| {% for listener in agw.http_listeners %} | |||||
| { | |||||
| "name": "{{ listener.name }}", | |||||
| "properties": { | |||||
| "frontendIPConfiguration": { | |||||
| "id": "/subscriptions/{{ subscription_id }}/resourceGroups/{{ agw.resource_group }}/providers/Microsoft.Network/applicationGateways/{{ agw.name }}/frontendIPConfigurations/{{ listener.frontend_ip_configuration }}" | |||||
| }, | |||||
| "frontendPort": { | |||||
| "id": "/subscriptions/{{ subscription_id }}/resourceGroups/{{ agw.resource_group }}/providers/Microsoft.Network/applicationGateways/{{ agw.name }}/frontendPorts/{{ listener.frontend_port }}" | |||||
| }, | |||||
| "protocol": "{{ listener.protocol | default('Http') }}", | |||||
| "requireServerNameIndication": {{ listener.require_sni | default(false) }}, | |||||
| {% if listener.protocol is defined and listener.protocol == 'Https' %} | |||||
| "sslCertificate": {{ listener.sslCertificate }}, | |||||
| "sslProfile": {{ listener.sslProfile }}, | |||||
| {% endif %} | |||||
| }, | |||||
| }, | |||||
| {% endfor %} | |||||
| ], | |||||
| "urlPathMaps": [], | |||||
| "requestRoutingRules": [ | |||||
| {% for rrr in agw.request_routing_rules %} | |||||
| { | |||||
| "name": "{{ rrr.name }}", | |||||
| "properties": { | |||||
| "ruleType": "{{ rrr.rule_type | default('Basic') }}", | |||||
| "httpListener": { | |||||
| "id": "/subscriptions/{{ subscription_id }}/resourceGroups/{{ agw.resource_group }}/providers/Microsoft.Network/applicationGateways/{{ agw.name }}/httpListeners/{{ rrr.http_listener }}" | |||||
| }, | |||||
| "backendAddressPool": { | |||||
| "id": "/subscriptions/{{ subscription_id }}/resourceGroups/{{ agw.resource_group }}/providers/Microsoft.Network/applicationGateways/{{ agw.name }}/backendAddressPools/{{ rrr.backend_address_pool }}" | |||||
| }, | |||||
| "backendHttpSettings": { | |||||
| "id": "/subscriptions/{{ subscription_id }}/resourceGroups/{{ agw.resource_group }}/providers/Microsoft.Network/applicationGateways/{{ agw.name }}/backendHttpSettingsCollection/{{ rrr.backend_http_settings }}" | |||||
| } | |||||
| }, | |||||
| }, | |||||
| {% endfor %} | |||||
| ], | |||||
| "probes": [], | |||||
| "redirectConfigurations": [], | |||||
| "enableHttp2": false | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,22 @@ | |||||
| { | |||||
| "properties": { | |||||
| {% if bp.lbbpaddresses is defined %} | |||||
| "loadBalancerBackendAddresses": [ | |||||
| {% for ip in bp.lbbpaddresses %} | |||||
| { | |||||
| "name": "address{{ loop.index }}", | |||||
| "properties": { | |||||
| "ipAddress": "{{ ip.ip }}", | |||||
| "virtualNetwork": { | |||||
| "id": "{{ ip.vnet }}" | |||||
| } | |||||
| } | |||||
| }, | |||||
| {% endfor %} | |||||
| ], | |||||
| {% endif %} | |||||
| {%if bp.tunnelinterfaces is defined %} | |||||
| "tunnelInterfaces": "{{ bp.tunnelinterfaces }}" | |||||
| {%endif%} | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,36 @@ | |||||
| { | |||||
| "location": "{{ con.location }}", | |||||
| "properties": { | |||||
| "virtualNetworkGateway1": { | |||||
| "id": "/subscriptions/{{ subscription_id }}/resourceGroups/{{ resourcegroup }}/providers/Microsoft.Network/virtualNetworkGateways/{{ con.vngw }}" | |||||
| }, | |||||
| {% if con.lngw is defined %} | |||||
| "localNetworkGateway2": { | |||||
| "id": "/subscriptions/{{ subscription_id }}/resourceGroups/{{ resourcegroup }}/providers/Microsoft.Network/localNetworkGateways/{{ con.lngw }}" | |||||
| }, | |||||
| {% elif con.erc is defined %} | |||||
| "peer": { | |||||
| "id": "/subscriptions/{{ subscription_id }}/resourceGroups/{{ resourcegroup }}/providers/Microsoft.Network/expressRouteCircuits/{{ con.erc }}" | |||||
| }, | |||||
| {% endif %} | |||||
| {% if con.type is defined %} | |||||
| "connectionType": "{{ con.type }}", | |||||
| {% if con.protocol is defined %} | |||||
| "connectionProtocol": "{{ con.protocol }}", | |||||
| {% endif %} | |||||
| "sharedKey": "{{ con.sharedkey }}", | |||||
| "ipsecPolicies": [ | |||||
| {% for policy in con.ipsecpolicies %} | |||||
| {{ policy.body }}, | |||||
| {% endfor %} | |||||
| ], | |||||
| {% endif %} | |||||
| "routingWeight": {{ con.weight }}, | |||||
| "enableBgp": {{ con.bgp }}, | |||||
| "useLocalAzureIpAddress": {{ con.localAzip }}, | |||||
| "usePolicyBasedTrafficSelectors": {{ con.usetspolicy }}, | |||||
| "trafficSelectorPolicies": {{ con.tspolicies }}, | |||||
| "dpdTimeoutSeconds": {{ con.dpdtimeout }}, | |||||
| "connectionMode": "{{ con.mode }}" | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,153 @@ | |||||
| { | |||||
| "location": "{{ lb.location }}", | |||||
| "properties": { | |||||
| "backendAddressPools": [ | |||||
| {% for bp in lb.backend_address_pools %} | |||||
| { | |||||
| "name": "{{ bp.name }}", | |||||
| "properties": { | |||||
| }, | |||||
| }, | |||||
| {% endfor %} | |||||
| ], | |||||
| "frontendIPConfigurations": [ | |||||
| {% for fipc in ip_configurations %} | |||||
| { | |||||
| "name": "{{ fipc.name }}", | |||||
| "properties": { | |||||
| {% if fipc.gateway_lb_fip is defined %} | |||||
| "gatewayLoadBalancer": { | |||||
| "id": "{{ fipc.gateway_lb_fip }}" | |||||
| }, | |||||
| {% endif %} | |||||
| {% if fipc.private_ip_version is defined %} | |||||
| "privateIPAddressVersion": "{{ fipc.private_ip_version }}", | |||||
| {% endif %} | |||||
| {% if fipc.private_ip_allocation_method is defined %} | |||||
| "privateIPAllocationMethod": "{{ fipc.private_ip_allocation_method }}", | |||||
| {% endif %} | |||||
| {% if fipc.private_ip_address is defined %} | |||||
| "privateIPAddress": "{{ fipc.private_ip_address }}", | |||||
| {% endif %} | |||||
| {% if fipc.public_ip_address is defined %} | |||||
| "publicIPAddress": { | |||||
| "id": "/subscriptions/{{ subscription_id }}/resourceGroups/{{ lb.resource_group }}/providers/Microsoft.Network/publicIPAddresses/{{ fipc.public_ip_address }}", | |||||
| } | |||||
| {% endif %} | |||||
| {% if fipc.subnet is defined %} | |||||
| "subnet": { | |||||
| "id": "{{ fipc.subnet }}" | |||||
| }, | |||||
| {% endif %} | |||||
| }, | |||||
| {% if fipc.zones is defined %} | |||||
| "zones": [ | |||||
| {% for zone in fipc.zones | default([]) %} | |||||
| "{{ zone }}", | |||||
| {% endfor %} | |||||
| ] | |||||
| {% endif %} | |||||
| }, | |||||
| {% endfor %} | |||||
| ], | |||||
| "probes": [ | |||||
| {% for probe in lb.probes | default([]) %} | |||||
| { | |||||
| "name": "{{ probe.name }}", | |||||
| "properties": { | |||||
| "protocol": "{{ probe.protocol | default('Tcp') }}", | |||||
| "port": {{ probe.port | default(22) }}, | |||||
| {% if probe.protocol is defined and probe.protocol == 'Http' %} | |||||
| "requestPath": "{{ probe.path | default('/') }}", | |||||
| {% endif %} | |||||
| "intervalInSeconds": {{ probe.interval | default(5) }}, | |||||
| "numberOfProbes": {{ probe.failcount | default(3) }} | |||||
| } | |||||
| }, | |||||
| {% endfor %} | |||||
| ], | |||||
| "loadBalancingRules": [ | |||||
| {% for rule in lb.load_balancing_rules | default([]) %} | |||||
| { | |||||
| "name": "{{ rule.name }}", | |||||
| "properties": { | |||||
| {% if rule.probe is defined %} | |||||
| "probe": { | |||||
| "id": "/subscriptions/{{ subscription_id }}/resourceGroups/{{ lb.resource_group }}/providers/Microsoft.Network/loadBalancers/{{ lb.name }}/probes/{{ rule.probe }}" | |||||
| }, | |||||
| {% endif %} | |||||
| "frontendIPConfiguration": { | |||||
| "id": "/subscriptions/{{ subscription_id }}/resourceGroups/{{ lb.resource_group }}/providers/Microsoft.Network/loadBalancers/{{ lb.name }}/frontendIPConfigurations/{{ rule.frontend_ip_configuration }}" | |||||
| }, | |||||
| "backendAddressPool": { | |||||
| "id": "/subscriptions/{{ subscription_id }}/resourceGroups/{{ lb.resource_group }}/providers/Microsoft.Network/loadBalancers/{{ lb.name }}/backendAddressPools/{{ rule.backend_address_pool }}" | |||||
| }, | |||||
| "frontendPort": {{ rule.frontend_port | default(0) }}, | |||||
| "backendPort": {{ rule.backend_port | default(0) }}, | |||||
| "enableFloatingIP": {{ rule.enable_floating_ip | default(false) }}, | |||||
| "idleTimeoutInMinutes": {{ rule.idle | default(4) }}, | |||||
| "protocol": "{{ rule.protocol | default('All') }}", | |||||
| "enableTcpReset": {{ rule.tcpreset | default(false) }}, | |||||
| "disableOutboundSnat": {{ rule.disable_outsnat | default(false) }}, | |||||
| "loadDistribution": "{{ rule.load_distribution | default('Default') }}" | |||||
| } | |||||
| }, | |||||
| {% endfor %} | |||||
| ], | |||||
| "outboundRules": [ | |||||
| {% for outrule in lb.outbound_rules | default([]) %} | |||||
| { | |||||
| "name": "{{ outrule.name }}", | |||||
| "properties": { | |||||
| {% if outrule.nbport is defined %} | |||||
| "allocatedOutboundPorts": {{ outrule.nbport }}, | |||||
| {% endif %} | |||||
| "backendAddressPool": { | |||||
| "id": "/subscriptions/{{ subscription_id }}/resourceGroups/{{ lb.resource_group }}/providers/Microsoft.Network/loadBalancers/{{ lb.name }}/backendAddressPools/{{ outrule.backend_address_pool }}" | |||||
| }, | |||||
| "enableTcpReset": {{ outrule.tcpreset | default(false) }}, | |||||
| "frontendIPConfigurations": [ | |||||
| {% for fipc in outrule.frontend_ip_configurations | default([]) %} | |||||
| { | |||||
| "id": "/subscriptions/{{ subscription_id }}/resourceGroups/{{ lb.resource_group }}/providers/Microsoft.Network/loadBalancers/{{ lb.name }}/frontendIPConfigurations/{{ fipc.name }}" | |||||
| }, | |||||
| {% endfor %} | |||||
| ], | |||||
| "idleTimeoutInMinutes": {{ outrule.idle | default(4) }}, | |||||
| "protocol": "{{ outrule.protocol | default('All') }}", | |||||
| } | |||||
| }, | |||||
| {% endfor %} | |||||
| ], | |||||
| "inboundNatRules": [ | |||||
| {% for inatrule in lb.inbound_nat_rules | default([]) %} | |||||
| { | |||||
| "name": "{{ inatrule.name }}", | |||||
| "properties": { | |||||
| "frontendIPConfiguration": { | |||||
| "id": "/subscriptions/{{ subscription_id }}/resourceGroups/{{ lb.resource_group }}/providers/Microsoft.Network/loadBalancers/{{ lb.name }}/frontendIPConfigurations/{{ inatrule.frontend_ip_configuration }}" | |||||
| }, | |||||
| "frontendPort": {{ inatrule.frontend_port | default(0) }}, | |||||
| "backendPort": {{ inatrule.backend_port | default(0) }}, | |||||
| "enableFloatingIP": {{ inatrule.enable_floating_ip | default(false) }}, | |||||
| "idleTimeoutInMinutes": {{ inatrule.idle | default(4) }}, | |||||
| "protocol": "{{ inatrule.protocol | default('Tcp') }}", | |||||
| "enableTcpReset": {{ inatrule.tcpreset | default(false) }}, | |||||
| } | |||||
| }, | |||||
| {% endfor %} | |||||
| ], | |||||
| "inboundNatPools": [] | |||||
| }, | |||||
| "sku": { | |||||
| "name": "{{ lb.sku | default('Standard') }}", | |||||
| {% if lb.tier is defined %} | |||||
| "tier": "{{ lb.tier }} | |||||
| {% endif %} | |||||
| }, | |||||
| "tags": { | |||||
| {% for key, value in (lb.tags | default({})).items() %} | |||||
| "{{ key }}": "{{ value }}", | |||||
| {% endfor %} | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,16 @@ | |||||
| { | |||||
| "location": "{{ lngw.location }}", | |||||
| "properties": { | |||||
| "localNetworkAddressSpace": { | |||||
| "addressPrefixes": {{ lngw.prefixes }} | |||||
| }, | |||||
| "gatewayIpAddress": "{{ lngw.gwip }}", | |||||
| {% if lngw.asn is defined and lngw.asn != '' %} | |||||
| "bgpSettings": { | |||||
| "asn": {{ lngw.asn }}, | |||||
| "bgpPeeringAddress": "{{ lngw.bgppeer }}", | |||||
| "peerWeight": {{ lngw.weight }} | |||||
| } | |||||
| {% endif %} | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,38 @@ | |||||
| { | |||||
| "location": "{{ ip.location }}", | |||||
| "properties": { | |||||
| "publicIPAllocationMethod": "{{ ip.allocation_method | default('Static') }}", | |||||
| "idleTimeoutInMinutes": {{ ip.idletimeout | default(5) }}, | |||||
| "publicIPAddressVersion": "{{ ip.version | default('IPv4') }}", | |||||
| {% if ip.ddos is defined %} | |||||
| "ddosSettings": { | |||||
| {% if ip.ddos.CustomPolicyid is defined %} | |||||
| "ddosCustomPolicy": { | |||||
| "id": "{{ ip.ddosCustomPolicyid }}" | |||||
| }, | |||||
| {% endif %} | |||||
| "protectedIP": "{{ ip.ddos.enableprotection | default(false) }}", | |||||
| {% if ip.ddos.enableprotection is defined and ip.ddos.enableprotection %} | |||||
| "protectionCoverage": "{{ ip.ddos.protectionCoverage | default('Standard') }}", | |||||
| {% endif %} | |||||
| }, | |||||
| {% endif %} | |||||
| "deleteOption": "{{ ip.deleteOption | default('Detach') }}", | |||||
| {% if ip.dns is defined %} | |||||
| "dnsSettings": { | |||||
| "domainNameLabel": "{{ ip.dns.label | default('') }}", | |||||
| "fqdn": "{{ ip.dns.fqdn | default('') }}", | |||||
| "reverseFqdn": "{{ ip.dns.reverse | default('') }}" | |||||
| } | |||||
| {% endif %} | |||||
| }, | |||||
| "sku": { | |||||
| "name": "{{ ip.sku | default('Standard') }}", | |||||
| "tier": "{{ ip.tier | default('Regional') }}" | |||||
| }, | |||||
| "zones": [ | |||||
| {% for zone in ip.zones | default([]) %} | |||||
| "{{ zone }}", | |||||
| {% endfor %} | |||||
| ] | |||||
| } | |||||
| @@ -0,0 +1,38 @@ | |||||
| { | |||||
| "location": "{{ rt.location }}", | |||||
| "properties": { | |||||
| "disableBgpRoutePropagation": "{{ rt.disableBgpRoutePropagation | default(true) }}", | |||||
| "routes": [ | |||||
| {% for udr in routes | default([]) %} | |||||
| { | |||||
| "name": "{{ udr.name }}", | |||||
| "properties": { | |||||
| "addressPrefix": "{{ udr.address_prefix }}", | |||||
| {% if udr.hasBgpOverride is defined %} | |||||
| "hasBgpOverride": {{ udr.hasBgpOverride }}, | |||||
| {% endif %} | |||||
| {% if 'ppliance' in udr.next_hop_type %} | |||||
| "nextHopType": "VirtualAppliance", | |||||
| {% elif 'nternet' in udr.next_hop_type %} | |||||
| "nextHopType": "Internet", | |||||
| {% elif 'etwork' in udr.next_hop_type %} | |||||
| "nextHopType": "VirtualNetworkGateway", | |||||
| {% elif 'ocal' in udr.next_hop_type %} | |||||
| "nextHopType": "VnetLocal", | |||||
| {% else %} | |||||
| "nextHopType": "None", | |||||
| {% endif %} | |||||
| {% if udr.next_hop_type is undefined or 'ppliance' in udr.next_hop_type %} | |||||
| "nextHopIpAddress": "{{ udr.next_hop_ip_address }}" | |||||
| {% endif %} | |||||
| } | |||||
| }, | |||||
| {% endfor %} | |||||
| ] | |||||
| }, | |||||
| "tags": { | |||||
| {% for key, value in (rt.tags | default({})).items() %} | |||||
| "{{ key }}": "{{ value }}", | |||||
| {% endfor %} | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,48 @@ | |||||
| { | |||||
| "location": "{{ vngw.location }}", | |||||
| "properties": { | |||||
| "enableBgpRouteTranslationForNat": {{ vngw.bgproute4nat }}, | |||||
| "enableDnsForwarding": {{ vngw.dnsfwd }}, | |||||
| "enablePrivateIpAddress": {{ vngw.privateip }}, | |||||
| {% if vngw.lngwid is defined and vngw.lngwid != '' %} | |||||
| "gatewayDefaultSite": { | |||||
| "id": "{{ vngw.lngwid }}" | |||||
| }, | |||||
| {% endif %} | |||||
| "ipConfigurations": [ | |||||
| {% for ipc in vngw.ipcs %} | |||||
| { | |||||
| "name": "{{ ipc.name }}", | |||||
| "properties": { | |||||
| "privateIPAllocationMethod": "{{ ipc.allocmethod }}", | |||||
| {% if ipc.allocmethod == "Static" %} | |||||
| "privateIPAddress": "{{ ipc.privateip }}", | |||||
| {% endif %} | |||||
| "publicIPAddress": { | |||||
| "id": "{{ ipc.pipid }}" | |||||
| }, | |||||
| "subnet": { | |||||
| "id": "{{ ipc.subnetid }}" | |||||
| } | |||||
| } | |||||
| }, | |||||
| {% endfor %} | |||||
| ], | |||||
| "activeActive": {{ vngw.activeactive }}, | |||||
| "sku": { | |||||
| "name": "{{ vngw.sku }}", | |||||
| "tier": "{{ vngw.sku }}" | |||||
| }, | |||||
| "gatewayType": "{{ vngw.gwtype }}", | |||||
| "vpnType": "{{ vngw.vpntype }}", | |||||
| "enableBgp": {{ vngw.enablebgp }}, | |||||
| {% if vngw.enablebgp == "true" %} | |||||
| "bgpSettings": { | |||||
| "asn": {{ vngw.asn }}, | |||||
| "bgpPeeringAddress": "{{ vngw.peers }}", | |||||
| "peerWeight": {{ vngw.weight }} | |||||
| }, | |||||
| {% endif %} | |||||
| "vpnGatewayGeneration": "{{ vngw.generation }}" | |||||
| } | |||||
| } | |||||