New ansible support (again)
This commit is contained in:
parent
3ff4ed5a77
commit
518c3bc7b8
12 changed files with 33 additions and 33 deletions
|
|
@ -77,7 +77,7 @@ interface {{ iface.name }}
|
||||||
interface Vlan1
|
interface Vlan1
|
||||||
{% for address in mgmt_iface.ip_addresses %}
|
{% for address in mgmt_iface.ip_addresses %}
|
||||||
{% if address.family.value == 4 %}
|
{% if address.family.value == 4 %}
|
||||||
ip address {{ address.address | ipaddr('address') }} {{ address.address | ipaddr('netmask') }}
|
ip address {{ address.address | ansible.utils.ipaddr('address') }} {{ address.address | ansible.utils.ipaddr('netmask') }}
|
||||||
{% else %}
|
{% else %}
|
||||||
ipv6 address {{ address.address | upper }}
|
ipv6 address {{ address.address | upper }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
@ -119,14 +119,14 @@ no ip dhcp snooping
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% for address in mgmt_iface.ip_addresses %}
|
{% for address in mgmt_iface.ip_addresses %}
|
||||||
{% set subnet = address.address | ipaddr('subnet') %}
|
{% set subnet = address.address | ansible.utils.ipaddr('subnet') %}
|
||||||
{% set prefix = prefixes | selectattr('prefix', '==', subnet) | first %}
|
{% set prefix = prefixes | selectattr('prefix', '==', subnet) | first %}
|
||||||
{% if prefix.custom_fields.gateway %}
|
{% if prefix.custom_fields.gateway %}
|
||||||
{% set gateway = prefix.custom_fields.gateway %}
|
{% set gateway = prefix.custom_fields.gateway %}
|
||||||
{% if gateway.family.value == 4 %}
|
{% if gateway.family.value == 4 %}
|
||||||
ip route 0.0.0.0 0.0.0.0 {{ gateway.address | ipaddr('address') }} primary
|
ip route 0.0.0.0 0.0.0.0 {{ gateway.address | ansible.utils.ipaddr('address') }} primary
|
||||||
{% else %}
|
{% else %}
|
||||||
ipv6 route default vlan1 {{ gateway.address | ipaddr('address') | upper }} primary
|
ipv6 route default vlan1 {{ gateway.address | ansible.utils.ipaddr('address') | upper }} primary
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
|
||||||
|
|
@ -32,12 +32,12 @@ snmp-server access public security-model usm priv read public
|
||||||
{% for iface in interfaces | sort(attribute="type.value") | sort(attribute="mgmt_only") %}
|
{% for iface in interfaces | sort(attribute="type.value") | sort(attribute="mgmt_only") %}
|
||||||
{% if iface.mgmt_only %}
|
{% if iface.mgmt_only %}
|
||||||
{% for address in iface.ip_addresses %}
|
{% for address in iface.ip_addresses %}
|
||||||
{% set subnet = address.address | ipaddr('subnet') %}
|
{% set subnet = address.address | ansible.utils.ipaddr('subnet') %}
|
||||||
{% set prefix = prefixes | selectattr('prefix', '==', subnet) | first %}
|
{% set prefix = prefixes | selectattr('prefix', '==', subnet) | first %}
|
||||||
{% if address.family.value == 4 %}
|
{% if address.family.value == 4 %}
|
||||||
management ip address {{ address.address }}
|
management ip address {{ address.address }}
|
||||||
{% if prefix.custom_fields.gateway %}
|
{% if prefix.custom_fields.gateway %}
|
||||||
management route add gateway {{ prefix.custom_fields.gateway.address | ipaddr('address') }}
|
management route add gateway {{ prefix.custom_fields.gateway.address | ansible.utils.ipaddr('address') }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% else %}
|
{% else %}
|
||||||
management ipv6 address {{ address.address }}
|
management ipv6 address {{ address.address }}
|
||||||
|
|
|
||||||
|
|
@ -21,17 +21,17 @@ interface {{ iface.name }}
|
||||||
|
|
||||||
{% elif iface.mgmt_only %}
|
{% elif iface.mgmt_only %}
|
||||||
{% for address in iface.ip_addresses %}
|
{% for address in iface.ip_addresses %}
|
||||||
{% set subnet = address.address | ipaddr('subnet') %}
|
{% set subnet = address.address | ansible.utils.ipaddr('subnet') %}
|
||||||
{% set prefix = prefixes | selectattr('prefix', '==', subnet) | first %}
|
{% set prefix = prefixes | selectattr('prefix', '==', subnet) | first %}
|
||||||
{% if address.family.value == 4 %}
|
{% if address.family.value == 4 %}
|
||||||
ip address {{ address.address | ipaddr('address') }} {{ address.address | ipaddr('netmask') }}
|
ip address {{ address.address | ansible.utils.ipaddr('address') }} {{ address.address | ansible.utils.ipaddr('netmask') }}
|
||||||
{% if prefix.custom_fields.gateway %}
|
{% if prefix.custom_fields.gateway %}
|
||||||
gateway {{ prefix.custom_fields.gateway.address | ipaddr('address') }}
|
gateway {{ prefix.custom_fields.gateway.address | ansible.utils.ipaddr('address') }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% else %}
|
{% else %}
|
||||||
ipv6 address {{ address.address | upper }}
|
ipv6 address {{ address.address | upper }}
|
||||||
{% if prefix.custom_fields.gateway %}
|
{% if prefix.custom_fields.gateway %}
|
||||||
ipv6 gateway {{ prefix.custom_fields.gateway.address | ipaddr('address') | upper }}
|
ipv6 gateway {{ prefix.custom_fields.gateway.address | ansible.utils.ipaddr('address') | upper }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
- name: Configure DHCP relays
|
- name: Configure DHCP relays
|
||||||
template:
|
template:
|
||||||
dest: '/etc/default/isc-dhcp-relay-{{ prefixes | selectattr("prefix", "==", item.0 | ipaddr("network/prefix")) | map(attribute="vrf.name") | first }}'
|
dest: '/etc/default/isc-dhcp-relay-{{ prefixes | selectattr("prefix", "==", item.0 | ansible.utils.ipaddr("network/prefix")) | map(attribute="vrf.name") | first }}'
|
||||||
src: isc-dhcp-relay.j2
|
src: isc-dhcp-relay.j2
|
||||||
loop: '{{ dhcp_servers }}'
|
loop: '{{ dhcp_servers }}'
|
||||||
loop_control:
|
loop_control:
|
||||||
|
|
|
||||||
|
|
@ -4,8 +4,8 @@
|
||||||
| map(attribute='ip_addresses') | first
|
| map(attribute='ip_addresses') | first
|
||||||
| selectattr('role') | selectattr('role.value', '==', 'loopback')
|
| selectattr('role') | selectattr('role.value', '==', 'loopback')
|
||||||
| map(attribute='address') %}
|
| map(attribute='address') %}
|
||||||
{% set ip = lo_address | ipv4 | first %}
|
{% set ip = lo_address | ansible.utils.ipv4 | first %}
|
||||||
{% set ip6 = lo_address | ipv6 | first -%}
|
{% set ip6 = lo_address | ansible.utils.ipv6 | first -%}
|
||||||
|
|
||||||
auto inside
|
auto inside
|
||||||
iface inside
|
iface inside
|
||||||
|
|
@ -38,4 +38,4 @@ iface peerlink.2
|
||||||
auto peerlink.4
|
auto peerlink.4
|
||||||
iface peerlink.4
|
iface peerlink.4
|
||||||
vrf outside
|
vrf outside
|
||||||
address {{ "169.254.1.0/24" | ipaddr(exit + 1) }}
|
address {{ "169.254.1.0/24" | ansible.utils.ipaddr(exit + 1) }}
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ vrf outside
|
||||||
{# Add default routes for IPv4 and IPv6. Both are over link-local addresses. #}
|
{# Add default routes for IPv4 and IPv6. Both are over link-local addresses. #}
|
||||||
{% set uplink = interfaces | selectattr('name', '==', iface_uplink) | first %}
|
{% set uplink = interfaces | selectattr('name', '==', iface_uplink) | first %}
|
||||||
{% for address in uplink.ip_addresses %}
|
{% for address in uplink.ip_addresses %}
|
||||||
{% set gateway = address.address | ipmath(1) %}
|
{% set gateway = address.address | ansible.utils.ipmath(1) %}
|
||||||
{% if address.family.value == 4 %}
|
{% if address.family.value == 4 %}
|
||||||
ip route 0.0.0.0/0 {{ gateway }} {{ iface_uplink }}
|
ip route 0.0.0.0/0 {{ gateway }} {{ iface_uplink }}
|
||||||
{% else %}
|
{% else %}
|
||||||
|
|
@ -26,7 +26,7 @@ vrf outside
|
||||||
# It is not documented anywhere and appears to be a Cumulus extension.
|
# It is not documented anywhere and appears to be a Cumulus extension.
|
||||||
zebra nexthop proto only
|
zebra nexthop proto only
|
||||||
|
|
||||||
router-id {{ lo_address | ipv4 | first | ipaddr('address') }}
|
router-id {{ lo_address | ansible.utils.ipv4 | first | ansible.utils.ipaddr('address') }}
|
||||||
|
|
||||||
# Default VRF.
|
# Default VRF.
|
||||||
router bgp {{ asn.asn }}
|
router bgp {{ asn.asn }}
|
||||||
|
|
@ -241,13 +241,13 @@ ipv6 prefix-list {{ prefix.vrf.name }} permit {{ prefix.prefix }}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
{% if wg_net is defined %}
|
{% if wg_net is defined %}
|
||||||
ip prefix-list vpn permit {{ wg_net | ipaddr('subnet') }}
|
ip prefix-list vpn permit {{ wg_net | ansible.utils.ipaddr('subnet') }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if wg_net6 is defined %}
|
{% if wg_net6 is defined %}
|
||||||
ipv6 prefix-list vpn permit {{ wg_net6 | ipaddr('subnet') }}
|
ipv6 prefix-list vpn permit {{ wg_net6 | ansible.utils.ipaddr('subnet') }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
ip prefix-list nat permit {{ wg_ip | ipaddr('host') }}
|
ip prefix-list nat permit {{ wg_ip | ansible.utils.ipaddr('host') }}
|
||||||
{% for network in nat %}
|
{% for network in nat %}
|
||||||
ip prefix-list nat permit {{ network }}
|
ip prefix-list nat permit {{ network }}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
{% set my_server = item.0 %}
|
{% set my_server = item.0 %}
|
||||||
{% set my_vlans = item.1 | map(attribute='vlan.vid') | sort %}
|
{% set my_vlans = item.1 | map(attribute='vlan.vid') | sort %}
|
||||||
{% set my_prefix = prefixes | selectattr("prefix", "==", my_server | ipaddr("network/prefix")) | first -%}
|
{% set my_prefix = prefixes | selectattr("prefix", "==", my_server | ansible.utils.ipaddr("network/prefix")) | first -%}
|
||||||
|
|
||||||
SERVERS="{{ my_server | ipaddr('address') }}"
|
SERVERS="{{ my_server | ansible.utils.ipaddr('address') }}"
|
||||||
INTF_CMD="{{ my_vlans | map('regex_replace', '^', '-id bridge.') | join(' ') }} -U bridge.{{ my_prefix.vlan.vid }}"
|
INTF_CMD="{{ my_vlans | map('regex_replace', '^', '-id bridge.') | join(' ') }} -U bridge.{{ my_prefix.vlan.vid }}"
|
||||||
OPTIONS=""
|
OPTIONS=""
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
{% set dhcrelays = prefixes | selectattr('prefix', 'in', dhcp_servers | map('first') | ipaddr("network/prefix"))
|
{% set dhcrelays = prefixes | selectattr('prefix', 'in', dhcp_servers | map('first') | ansible.utils.ipaddr("network/prefix"))
|
||||||
| map(attribute="vrf.name") | map('regex_replace', '^', 'dhcrelay@') %}
|
| map(attribute="vrf.name") | map('regex_replace', '^', 'dhcrelay@') %}
|
||||||
{% set exits = [inventory_hostname, peer]|sort -%}
|
{% set exits = [inventory_hostname, peer]|sort -%}
|
||||||
|
|
||||||
|
|
@ -13,11 +13,11 @@ vrrp_instance dhcrelay {
|
||||||
interface peerlink.4
|
interface peerlink.4
|
||||||
{% for exit in exits %}
|
{% for exit in exits %}
|
||||||
@{{ exit }} priority {{ loop.index }}
|
@{{ exit }} priority {{ loop.index }}
|
||||||
@{{ exit }} unicast_src_ip {{ "169.254.1.0/24" | ipaddr(loop.index + 1) | ipaddr('address') }}
|
@{{ exit }} unicast_src_ip {{ "169.254.1.0/24" | ansible.utils.ipaddr(loop.index + 1) | ansible.utils.ipaddr('address') }}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
unicast_peer {
|
unicast_peer {
|
||||||
{% for exit in exits %}
|
{% for exit in exits %}
|
||||||
@^{{ exit }} {{ "169.254.1.0/24" | ipaddr(loop.index + 1) | ipaddr('address') }}
|
@^{{ exit }} {{ "169.254.1.0/24" | ansible.utils.ipaddr(loop.index + 1) | ansible.utils.ipaddr('address') }}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
}
|
}
|
||||||
notify_master "systemctl start {{ dhcrelays | join(' ') }}"
|
notify_master "systemctl start {{ dhcrelays | join(' ') }}"
|
||||||
|
|
|
||||||
|
|
@ -16,10 +16,10 @@ iface {{ iface.name }}
|
||||||
ip6-forward off
|
ip6-forward off
|
||||||
{% for ip in iface.ip_addresses %}
|
{% for ip in iface.ip_addresses %}
|
||||||
address {{ ip.address }}
|
address {{ ip.address }}
|
||||||
{% set subnet = ip.address | ipaddr('subnet') %}
|
{% set subnet = ip.address | ansible.utils.ipaddr('subnet') %}
|
||||||
{% set prefix = prefixes | selectattr('prefix', '==', subnet) | first %}
|
{% set prefix = prefixes | selectattr('prefix', '==', subnet) | first %}
|
||||||
{% if prefix.custom_fields.gateway %}
|
{% if prefix.custom_fields.gateway %}
|
||||||
gateway {{ prefix.custom_fields.gateway.address | ipaddr('address') }}
|
gateway {{ prefix.custom_fields.gateway.address | ansible.utils.ipaddr('address') }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,10 +15,10 @@ iface lo inet loopback
|
||||||
address {{ address }}
|
address {{ address }}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% if peer is defined %}
|
{% if peer is defined %}
|
||||||
{% if loopback | ipv4 %}
|
{% if loopback | ansible.utils.ipv4 %}
|
||||||
vxlan-local-tunnelip {{ loopback | ipv4 | first | ipaddr('address') }}
|
vxlan-local-tunnelip {{ loopback | ansible.utils.ipv4 | first | ansible.utils.ipaddr('address') }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if anycast | ipv4 %}
|
{% if anycast | ansible.utils.ipv4 %}
|
||||||
clagd-vxlan-anycast-ip {{ anycast | first | ipaddr('address') }}
|
clagd-vxlan-anycast-ip {{ anycast | first | ansible.utils.ipaddr('address') }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
||||||
|
|
@ -2,12 +2,12 @@
|
||||||
| selectattr('name', '==', 'lo')
|
| selectattr('name', '==', 'lo')
|
||||||
| map(attribute='ip_addresses') | first
|
| map(attribute='ip_addresses') | first
|
||||||
| selectattr('role') | selectattr('role.value', '==', 'loopback')
|
| selectattr('role') | selectattr('role.value', '==', 'loopback')
|
||||||
| map(attribute='address') | ipv4 | first | ipaddr('address') %}
|
| map(attribute='address') | ansible.utils.ipv4 | first | ansible.utils.ipaddr('address') %}
|
||||||
{% set anycast_ip = interfaces
|
{% set anycast_ip = interfaces
|
||||||
| selectattr('name', '==', 'lo')
|
| selectattr('name', '==', 'lo')
|
||||||
| map(attribute='ip_addresses') | first
|
| map(attribute='ip_addresses') | first
|
||||||
| selectattr('role') | selectattr('role.value', '==', 'anycast')
|
| selectattr('role') | selectattr('role.value', '==', 'anycast')
|
||||||
| map(attribute='address') | ipv4 | first | ipaddr('address') -%}
|
| map(attribute='address') | ansible.utils.ipv4 | first | ansible.utils.ipaddr('address') -%}
|
||||||
|
|
||||||
# Peer link to the other switch.
|
# Peer link to the other switch.
|
||||||
auto peerlink.4094
|
auto peerlink.4094
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ service integrated-vtysh-config
|
||||||
# It is not documented anywhere and appears to be a Cumulus extension.
|
# It is not documented anywhere and appears to be a Cumulus extension.
|
||||||
zebra nexthop proto only
|
zebra nexthop proto only
|
||||||
|
|
||||||
router-id {{ lo_address | ipv4 | first | ipaddr('address') }}
|
router-id {{ lo_address | ansible.utils.ipv4 | first | ansible.utils.ipaddr('address') }}
|
||||||
|
|
||||||
router bgp {{ asn.asn }}
|
router bgp {{ asn.asn }}
|
||||||
bgp bestpath as-path multipath-relax
|
bgp bestpath as-path multipath-relax
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue