From e0d10bb24a9f97b2a45ce240cc16751ac49dd27c Mon Sep 17 00:00:00 2001 From: Mark Thiel <25393619+mthiel117@users.noreply.github.com> Date: Wed, 28 Jul 2021 02:38:02 -0400 Subject: [PATCH] Feat(eos_cli_config_gen): Add RADIUS Source-Interface (#1118) --- .../devices/ip-radius-source-interface.md | 114 ++++++++++++++++++ .../configs/ip-radius-source-interface.cfg | 21 ++++ .../host_vars/ip-radius-source-interface.yml | 9 ++ .../eos_cli_config_gen/inventory/hosts.ini | 1 + .../avd/roles/eos_cli_config_gen/README.md | 11 ++ .../ip-radius-source-interfaces.j2 | 18 +++ .../templates/eos-device-documentation.j2 | 2 + .../templates/eos-intended-config.j2 | 2 + .../eos/ip-radius-source-interfaces.j2 | 12 ++ 9 files changed, 190 insertions(+) create mode 100644 ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/ip-radius-source-interface.md create mode 100644 ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/ip-radius-source-interface.cfg create mode 100644 ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/ip-radius-source-interface.yml create mode 100644 ansible_collections/arista/avd/roles/eos_cli_config_gen/templates/documentation/ip-radius-source-interfaces.j2 create mode 100644 ansible_collections/arista/avd/roles/eos_cli_config_gen/templates/eos/ip-radius-source-interfaces.j2 diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/ip-radius-source-interface.md b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/ip-radius-source-interface.md new file mode 100644 index 00000000000..9722366208e --- /dev/null +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/ip-radius-source-interface.md @@ -0,0 +1,114 @@ +# ip-radius-source-interface +# Table of Contents + + +- [Management](#management) + - [Management Interfaces](#management-interfaces) +- [Authentication](#authentication) + - [IP RADIUS Source Interfaces](#ip-radius-source-interfaces) +- [Monitoring](#monitoring) +- [Internal VLAN Allocation Policy](#internal-vlan-allocation-policy) + - [Internal VLAN Allocation Policy Summary](#internal-vlan-allocation-policy-summary) +- [Interfaces](#interfaces) +- [Routing](#routing) + - [IP Routing](#ip-routing) + - [IPv6 Routing](#ipv6-routing) +- [Multicast](#multicast) +- [Filters](#filters) +- [ACL](#acl) +- [Quality Of Service](#quality-of-service) + + +# Management + +## Management Interfaces + +### Management Interfaces Summary + +#### IPv4 + +| Management Interface | description | Type | VRF | IP Address | Gateway | +| -------------------- | ----------- | ---- | --- | ---------- | ------- | +| Management1 | oob_management | oob | MGMT | 10.73.255.122/24 | 10.73.255.2 | + +#### IPv6 + +| Management Interface | description | Type | VRF | IPv6 Address | IPv6 Gateway | +| -------------------- | ----------- | ---- | --- | ------------ | ------------ | +| Management1 | oob_management | oob | MGMT | - | - | + +### Management Interfaces Device Configuration + +```eos +! +interface Management1 + description oob_management + vrf MGMT + ip address 10.73.255.122/24 +``` + +# Authentication + +## IP RADIUS Source Interfaces + +### IP RADIUS Source Interfaces + +| VRF | Source Interface Name | +| --- | --------------- | +| default | loopback1 | +| MGMT | Ma1 | +| default | loopback10 | + +### IP SOURCE Source Interfaces Device Configuration + +```eos +! +ip radius vrf default source-interface loopback1 +! +ip radius vrf MGMT source-interface Ma1 +! +ip radius source-interface loopback10 +``` + +# Monitoring + +# Internal VLAN Allocation Policy + +## Internal VLAN Allocation Policy Summary + +**Default Allocation Policy** + +| Policy Allocation | Range Beginning | Range Ending | +| ------------------| --------------- | ------------ | +| ascending | 1006 | 4094 | + +# Interfaces + +# Routing + +## IP Routing + +### IP Routing Summary + +| VRF | Routing Enabled | +| --- | --------------- | +| default | false| +### IP Routing Device Configuration + +```eos +``` +## IPv6 Routing + +### IPv6 Routing Summary + +| VRF | Routing Enabled | +| --- | --------------- | +| default | false | + +# Multicast + +# Filters + +# ACL + +# Quality Of Service diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/ip-radius-source-interface.cfg b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/ip-radius-source-interface.cfg new file mode 100644 index 00000000000..5ee4865d597 --- /dev/null +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/ip-radius-source-interface.cfg @@ -0,0 +1,21 @@ +!RANCID-CONTENT-TYPE: arista +! +transceiver qsfp default-mode 4x10G +! +hostname ip-radius-source-interface +! +no aaa root +no enable password +! +interface Management1 + description oob_management + vrf MGMT + ip address 10.73.255.122/24 +! +ip radius vrf default source-interface loopback1 +! +ip radius vrf MGMT source-interface Ma1 +! +ip radius source-interface loopback10 +! +end diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/ip-radius-source-interface.yml b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/ip-radius-source-interface.yml new file mode 100644 index 00000000000..33f94de4a4b --- /dev/null +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/ip-radius-source-interface.yml @@ -0,0 +1,9 @@ +### IP RADIUSsource interface ### + +ip_radius_source_interfaces: + - vrf : default + name: loopback1 + - vrf : MGMT + name: Ma1 + - vrf : + name: loopback10 diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/hosts.ini b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/hosts.ini index 3af38c8d721..dae415da237 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/hosts.ini +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/hosts.ini @@ -26,6 +26,7 @@ ip-dhcp-relay ip-extended-community-lists ip-extended-community-lists-regexp ip-routing +ip-radius-source-interface ip-tacacs-source-interface ipv6-access-lists ipv6-static-routes diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/README.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/README.md index d51ef413e79..8552e7aeba8 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/README.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/README.md @@ -20,6 +20,7 @@ - [AAA Root](#aaa-root) - [AAA Server Groups](#aaa-server-groups) - [Enable Password](#enable-password) + - [IP RADIUS Source Interfaces](#ip-radius-source-interfaces) - [IP TACACS+ Source Interfaces](#ip-tacacs-source-interfaces) - [Local Users](#local-users) - [Radius Servers](#radius-servers) @@ -329,6 +330,16 @@ enable_password: key: "< hashed_password >" ``` +#### IP RADIUS Source Interfaces + +```yaml +ip_radius_source_interfaces: + - name: + vrf: < vrf_name_1 > + - name: + vrf: < vrf_name_2 > +``` + #### IP TACACS+ Source Interfaces ```yaml diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/templates/documentation/ip-radius-source-interfaces.j2 b/ansible_collections/arista/avd/roles/eos_cli_config_gen/templates/documentation/ip-radius-source-interfaces.j2 new file mode 100644 index 00000000000..065bfd9fda5 --- /dev/null +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/templates/documentation/ip-radius-source-interfaces.j2 @@ -0,0 +1,18 @@ +{% if ip_radius_source_interfaces is defined and ip_radius_source_interfaces is not none %} + +## IP RADIUS Source Interfaces + +### IP RADIUS Source Interfaces + +| VRF | Source Interface Name | +| --- | --------------- | +{% for ip_radius_source_interface in ip_radius_source_interfaces | arista.avd.natural_sort %} +| {{ ip_radius_source_interface['vrf'] | arista.avd.default('default') }} | {{ ip_radius_source_interface['name'] }} | +{% endfor %} + +### IP SOURCE Source Interfaces Device Configuration + +```eos +{% include 'eos/ip-radius-source-interfaces.j2' %} +``` +{% endif %} diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/templates/eos-device-documentation.j2 b/ansible_collections/arista/avd/roles/eos_cli_config_gen/templates/eos-device-documentation.j2 index 93d4ee9011e..42d2d933879 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/templates/eos-device-documentation.j2 +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/templates/eos-device-documentation.j2 @@ -37,6 +37,8 @@ {% include 'documentation/ip-tacacs-source-interfaces.j2' %} {## RADIUS Servers #} {% include 'documentation/radius-servers.j2' %} +{## IP RADIUS Source Interfaces #} +{% include 'documentation/ip-radius-source-interfaces.j2' %} {## AAA Server Groups #} {% include 'documentation/aaa-server-groups.j2' %} {## AAA Authentication #} diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/templates/eos-intended-config.j2 b/ansible_collections/arista/avd/roles/eos_cli_config_gen/templates/eos-intended-config.j2 index 29cba9b558d..3a3bfbccdd6 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/templates/eos-intended-config.j2 +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/templates/eos-intended-config.j2 @@ -197,6 +197,8 @@ {% include 'eos/queue-monitor-streaming.j2' %} {# ip tacacs+ source interfaces #} {% include 'eos/ip-tacacs-source-interfaces.j2' %} +{# ip radius source interfaces #} +{% include 'eos/ip-radius-source-interfaces.j2' %} {# vmtracer sessions #} {% include 'eos/vmtracer-sessions.j2' %} {# traffic policies #} diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/templates/eos/ip-radius-source-interfaces.j2 b/ansible_collections/arista/avd/roles/eos_cli_config_gen/templates/eos/ip-radius-source-interfaces.j2 new file mode 100644 index 00000000000..2998f32f71d --- /dev/null +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/templates/eos/ip-radius-source-interfaces.j2 @@ -0,0 +1,12 @@ +{# eos - IP radius Source interfaces#} +{% for ip_radius_source_interface in ip_radius_source_interfaces | arista.avd.natural_sort %} +! +{% set ip_radius_cli = "ip radius" %} +{% if ip_radius_source_interface.vrf is arista.avd.defined %} +{% set ip_radius_cli = ip_radius_cli ~ " vrf " ~ ip_radius_source_interface.vrf %} +{% endif %} +{% if ip_radius_source_interface.name is arista.avd.defined %} +{% set ip_radius_cli = ip_radius_cli ~ " source-interface " ~ ip_radius_source_interface.name %} +{% endif %} +{{ ip_radius_cli }} +{% endfor %}