Ansible repository with playbooks to manage azure objects
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.
 
 
 

154 rindas
5.7 KiB

  1. {
  2. "location": "{{ lb.location }}",
  3. "properties": {
  4. "backendAddressPools": [
  5. {% for bp in lb.backend_address_pools %}
  6. {
  7. "name": "{{ bp.name }}",
  8. "properties": {
  9. },
  10. },
  11. {% endfor %}
  12. ],
  13. "frontendIPConfigurations": [
  14. {% for fipc in ip_configurations %}
  15. {
  16. "name": "{{ fipc.name }}",
  17. "properties": {
  18. {% if fipc.gateway_lb_fip is defined %}
  19. "gatewayLoadBalancer": {
  20. "id": "{{ fipc.gateway_lb_fip }}"
  21. },
  22. {% endif %}
  23. {% if fipc.private_ip_version is defined %}
  24. "privateIPAddressVersion": "{{ fipc.private_ip_version }}",
  25. {% endif %}
  26. {% if fipc.private_ip_allocation_method is defined %}
  27. "privateIPAllocationMethod": "{{ fipc.private_ip_allocation_method }}",
  28. {% endif %}
  29. {% if fipc.private_ip_address is defined %}
  30. "privateIPAddress": "{{ fipc.private_ip_address }}",
  31. {% endif %}
  32. {% if fipc.public_ip_address is defined %}
  33. "publicIPAddress": {
  34. "id": "/subscriptions/{{ subscription_id }}/resourceGroups/{{ lb.resource_group }}/providers/Microsoft.Network/publicIPAddresses/{{ fipc.public_ip_address }}",
  35. }
  36. {% endif %}
  37. {% if fipc.subnet is defined %}
  38. "subnet": {
  39. "id": "{{ fipc.subnet }}"
  40. },
  41. {% endif %}
  42. },
  43. {% if fipc.zones is defined %}
  44. "zones": [
  45. {% for zone in fipc.zones | default([]) %}
  46. "{{ zone }}",
  47. {% endfor %}
  48. ]
  49. {% endif %}
  50. },
  51. {% endfor %}
  52. ],
  53. "probes": [
  54. {% for probe in lb.probes | default([]) %}
  55. {
  56. "name": "{{ probe.name }}",
  57. "properties": {
  58. "protocol": "{{ probe.protocol | default('Tcp') }}",
  59. "port": {{ probe.port | default(22) }},
  60. {% if probe.protocol is defined and probe.protocol == 'Http' %}
  61. "requestPath": "{{ probe.path | default('/') }}",
  62. {% endif %}
  63. "intervalInSeconds": {{ probe.interval | default(5) }},
  64. "numberOfProbes": {{ probe.failcount | default(3) }}
  65. }
  66. },
  67. {% endfor %}
  68. ],
  69. "loadBalancingRules": [
  70. {% for rule in lb.load_balancing_rules | default([]) %}
  71. {
  72. "name": "{{ rule.name }}",
  73. "properties": {
  74. {% if rule.probe is defined %}
  75. "probe": {
  76. "id": "/subscriptions/{{ subscription_id }}/resourceGroups/{{ lb.resource_group }}/providers/Microsoft.Network/loadBalancers/{{ lb.name }}/probes/{{ rule.probe }}"
  77. },
  78. {% endif %}
  79. "frontendIPConfiguration": {
  80. "id": "/subscriptions/{{ subscription_id }}/resourceGroups/{{ lb.resource_group }}/providers/Microsoft.Network/loadBalancers/{{ lb.name }}/frontendIPConfigurations/{{ rule.frontend_ip_configuration }}"
  81. },
  82. "backendAddressPool": {
  83. "id": "/subscriptions/{{ subscription_id }}/resourceGroups/{{ lb.resource_group }}/providers/Microsoft.Network/loadBalancers/{{ lb.name }}/backendAddressPools/{{ rule.backend_address_pool }}"
  84. },
  85. "frontendPort": {{ rule.frontend_port | default(0) }},
  86. "backendPort": {{ rule.backend_port | default(0) }},
  87. "enableFloatingIP": {{ rule.enable_floating_ip | default(false) }},
  88. "idleTimeoutInMinutes": {{ rule.idle | default(4) }},
  89. "protocol": "{{ rule.protocol | default('All') }}",
  90. "enableTcpReset": {{ rule.tcpreset | default(false) }},
  91. "disableOutboundSnat": {{ rule.disable_outsnat | default(false) }},
  92. "loadDistribution": "{{ rule.load_distribution | default('Default') }}"
  93. }
  94. },
  95. {% endfor %}
  96. ],
  97. "outboundRules": [
  98. {% for outrule in lb.outbound_rules | default([]) %}
  99. {
  100. "name": "{{ outrule.name }}",
  101. "properties": {
  102. {% if outrule.nbport is defined %}
  103. "allocatedOutboundPorts": {{ outrule.nbport }},
  104. {% endif %}
  105. "backendAddressPool": {
  106. "id": "/subscriptions/{{ subscription_id }}/resourceGroups/{{ lb.resource_group }}/providers/Microsoft.Network/loadBalancers/{{ lb.name }}/backendAddressPools/{{ outrule.backend_address_pool }}"
  107. },
  108. "enableTcpReset": {{ outrule.tcpreset | default(false) }},
  109. "frontendIPConfigurations": [
  110. {% for fipc in outrule.frontend_ip_configurations | default([]) %}
  111. {
  112. "id": "/subscriptions/{{ subscription_id }}/resourceGroups/{{ lb.resource_group }}/providers/Microsoft.Network/loadBalancers/{{ lb.name }}/frontendIPConfigurations/{{ fipc.name }}"
  113. },
  114. {% endfor %}
  115. ],
  116. "idleTimeoutInMinutes": {{ outrule.idle | default(4) }},
  117. "protocol": "{{ outrule.protocol | default('All') }}",
  118. }
  119. },
  120. {% endfor %}
  121. ],
  122. "inboundNatRules": [
  123. {% for inatrule in lb.inbound_nat_rules | default([]) %}
  124. {
  125. "name": "{{ inatrule.name }}",
  126. "properties": {
  127. "frontendIPConfiguration": {
  128. "id": "/subscriptions/{{ subscription_id }}/resourceGroups/{{ lb.resource_group }}/providers/Microsoft.Network/loadBalancers/{{ lb.name }}/frontendIPConfigurations/{{ inatrule.frontend_ip_configuration }}"
  129. },
  130. "frontendPort": {{ inatrule.frontend_port | default(0) }},
  131. "backendPort": {{ inatrule.backend_port | default(0) }},
  132. "enableFloatingIP": {{ inatrule.enable_floating_ip | default(false) }},
  133. "idleTimeoutInMinutes": {{ inatrule.idle | default(4) }},
  134. "protocol": "{{ inatrule.protocol | default('Tcp') }}",
  135. "enableTcpReset": {{ inatrule.tcpreset | default(false) }},
  136. }
  137. },
  138. {% endfor %}
  139. ],
  140. "inboundNatPools": []
  141. },
  142. "sku": {
  143. "name": "{{ lb.sku | default('Standard') }}",
  144. {% if lb.tier is defined %}
  145. "tier": "{{ lb.tier }}
  146. {% endif %}
  147. },
  148. "tags": {
  149. {% for key, value in (lb.tags | default({})).items() %}
  150. "{{ key }}": "{{ value }}",
  151. {% endfor %}
  152. }
  153. }