blob: 77f95b76cd9dd8fb592bdde700e6cc67456c9695 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
{# #}
{# How many static public addresses/interfaces per node? #}
{# #}
{% set num_static = (nodes[ansible_hostname].ips | length) - 1 %}
{# #}
{# Gather all static addresses, sublist per interface #}
{# #}
{% set static_addrs = [] %}
{% for i in range(1, num_static + 1) -%}
{{ static_addrs.append([]) }}
{%- endfor %}
{% for hostname, n in nodes | dictsort %}
{% if n.is_ctdb_node %}
{% for i in range(1, num_static + 1) -%}
{{ static_addrs[i - 1].append(n.ips[i]) }}
{%- endfor %}
{% endif %}
{% endfor %}
{# #}
{# For each list of static IPs, find interface, print with each IP #}
{# #}
{% set h = ansible_hostname %}
{% for ips in static_addrs %}
{% for iface in ansible_interfaces %}
{% set ai = 'ansible_%s'|format(iface) %}
{% if hostvars[h][ai]['ipv4'] is defined %}
{% set ip4 = hostvars[h][ai]['ipv4'] %}
{% if ip4['address'] is defined %}
{% set aip = ip4['address'] %}
{% set netmask = ip4['netmask'] %}
{% set prefix = (aip + '/' + netmask) | ipv4('prefix') %}
{% if aip in ips %}
{% for ip in ips %}
{% set ip_int = ip | ipaddr('int') %}
{{ (ip_int + 100) | ipaddr('address') }}/{{ prefix }} {{ iface }}
{% endfor %}
{% endif %}
{% endif %}
{% endif %}
{% if hostvars[h][ai]['ipv6'] is defined %}
{% for ip6 in hostvars[h][ai]['ipv6'] %}
{% if ip6['address'] is defined %}
{% set aip = ip6['address'] %}
{% set prefix = ip6['prefix'] %}
{% if aip in ips %}
{% for ip in ips %}
{% set ip_int = ip | ipaddr('int') %}
{{ (ip_int + 100) | ipaddr('address') }}/{{ prefix }} {{ iface }}
{% endfor %}
{% endif %}
{% endif %}
{% endfor %}
{% endif %}
{% endfor %}
{% endfor %}
|