diff --git a/geant/gap_ansible/roles/edge_port/tasks/compile.yaml b/geant/gap_ansible/roles/edge_port/tasks/compile.yaml index 0cdaff1aaa784e4c48778753bd9be200075ef2ea..3b47ff326682de61108c17d0c311d763703f0038 100644 --- a/geant/gap_ansible/roles/edge_port/tasks/compile.yaml +++ b/geant/gap_ansible/roles/edge_port/tasks/compile.yaml @@ -7,7 +7,7 @@ ansible_connection: local - name: Print the template in "{{ play_storage_path }}/edge_port_{{ verb }}.conf" - when: verb == "create" + when: verb in verbs ansible.builtin.template: src: "{{ router.vendor }}/edge_port_{{ verb }}.j2" dest: "{{ play_storage_path }}/edge_port_{{ verb }}.conf" diff --git a/geant/gap_ansible/roles/edge_port/tasks/deploy.yaml b/geant/gap_ansible/roles/edge_port/tasks/deploy.yaml index f6e3ee638440f299fcaefbfd7fa9c747bb6fc1e5..57cc6aa2ea419ccb361c4ab21d1dfaed40a962a1 100644 --- a/geant/gap_ansible/roles/edge_port/tasks/deploy.yaml +++ b/geant/gap_ansible/roles/edge_port/tasks/deploy.yaml @@ -2,6 +2,8 @@ - name: Perform "{{ verb }}" Edge port on "{{ inventory_hostname }}" [CHECK ONLY][NOKIA] when: >- dry_run | ansible.builtin.bool + and + router.vendor == "nokia" geant.gap_ansible.nokia_netconf_config: format: xml default_operation: merge @@ -13,6 +15,18 @@ register: output check_mode: true +- name: Config deploy [CHECK ONLY][JUNIPER] + when: > + dry_run | ansible.builtin.bool + and + router.vendor == "juniper" + junipernetworks.junos.junos_config: + update: 'replace' + src: "{{ play_storage_path }}/edge_port_{{ verb }}.conf" + src_format: set + check_commit: true + diff: true + register: output - name: Fail if there is any diff ansible.builtin.fail: @@ -26,6 +40,8 @@ - name: Perform "{{ verb }}" Edge port on "{{ inventory_hostname }}" [FOR REAL][NOKIA] when: >- not (dry_run | ansible.builtin.bool) + and + router.vendor == "nokia" geant.gap_ansible.nokia_netconf_config: format: xml default_operation: merge @@ -36,3 +52,16 @@ diff: true register: output check_mode: false + + +- name: Config deploy [AND COMMIT][JUNIPER] + when: > + not dry_run | ansible.builtin.bool + and + router.vendor == "juniper" + junipernetworks.junos.junos_config: + update: 'replace' + src: "{{ play_storage_path }}/edge_port_{{ verb }}.conf" + src_format: set + comment: "{{ commit_comment }}" + diff: true diff --git a/geant/gap_ansible/roles/edge_port/tasks/main.yml b/geant/gap_ansible/roles/edge_port/tasks/main.yml index 2381bf691acb66f348966795bb9b8ac739e08c74..3e69831abb4bb1a51eefce780e7c381972f20260 100644 --- a/geant/gap_ansible/roles/edge_port/tasks/main.yml +++ b/geant/gap_ansible/roles/edge_port/tasks/main.yml @@ -16,12 +16,10 @@ - name: Include deploy tasks when: > verb in verbs - and - router.vendor == 'nokia' ansible.builtin.include_tasks: deploy.yaml -- name: Skip all for Juniper - when: > - router.vendor == 'juniper' - ansible.builtin.debug: - msg: "Juniper tasks skipped" +# - name: Skip all for Juniper +# when: > +# router.vendor == 'juniper' +# ansible.builtin.debug: +# msg: "Juniper tasks skipped" diff --git a/geant/gap_ansible/roles/edge_port/templates/juniper/edge_port_create.j2 b/geant/gap_ansible/roles/edge_port/templates/juniper/edge_port_create.j2 new file mode 100644 index 0000000000000000000000000000000000000000..e9be6984024a9fb6824221402dbd50a53363a39a --- /dev/null +++ b/geant/gap_ansible/roles/edge_port/templates/juniper/edge_port_create.j2 @@ -0,0 +1,18 @@ +{% set gaid_prefix = '$' %} +{% set csn_prefix = '#' %} + + +{% for member in ep.edge_port_ae_members %} +set interfaces {{ member.interface_name }} description "PHY CUSTOMER {{ partner_name }} P_{{ ep.edge_port_name }}{{ ' | '+member.interface_description if member.interface_description is string }}" +set interfaces {{ member.interface_name }} gigether-options 802.3ad {{ ep.edge_port_name }} +{% endfor %} + +set interfaces {{ ep.edge_port_name }} description "LAG {{ ep.edge_port_type }} {{ partner_name }}{{ ' | '+gaid_prefix+ep.ga_id if ep.ga_id is string }}{{ ' | '+csn_prefix+(ep.custom_service_name | replace("#","")) if ep.custom_service_name is string }}{{ ' | '+ep.edge_port_description if ep.edge_port_description is string }}" +set interfaces {{ ep.edge_port_name }} {{ 'flexible-vlan-tagging' if ep.encapsulation == 'qinq' else 'vlan-tagging' }} +set interfaces {{ ep.edge_port_name }} mtu 9192 +set interfaces {{ ep.edge_port_name }} encapsulation flexible-ethernet-services +set interfaces {{ ep.edge_port_name }} aggregated-ether-options minimum-links {{ ep.minimum_links }} +set interfaces {{ ep.edge_port_name }} aggregated-ether-options link-speed {{ ep.member_speed | lower }} +{% if ep.enable_lacp %} +set interfaces {{ ep.edge_port_name }} aggregated-ether-options lacp active +{% endif %} diff --git a/geant/gap_ansible/roles/edge_port/templates/juniper/edge_port_terminate.j2 b/geant/gap_ansible/roles/edge_port/templates/juniper/edge_port_terminate.j2 new file mode 100644 index 0000000000000000000000000000000000000000..68f1293d59d37afbb73eb787f4d27e9c821f5caf --- /dev/null +++ b/geant/gap_ansible/roles/edge_port/templates/juniper/edge_port_terminate.j2 @@ -0,0 +1,5 @@ +{% for member in ep.edge_port_ae_members %} +delete interfaces {{ member.interface_name }} +{% endfor %} + +delete interfaces {{ ep.edge_port_name }} diff --git a/geant/gap_ansible/roles/edge_port/templates/juniper/edge_port_update.j2 b/geant/gap_ansible/roles/edge_port/templates/juniper/edge_port_update.j2 new file mode 100644 index 0000000000000000000000000000000000000000..da7dcd307ad36bd6833f75a9e7d7edea33024d38 --- /dev/null +++ b/geant/gap_ansible/roles/edge_port/templates/juniper/edge_port_update.j2 @@ -0,0 +1,23 @@ +{% set gaid_prefix = '$' %} +{% set csn_prefix = '#' %} + + +{% for member in ep.edge_port_ae_members %} +set interfaces {{ member.interface_name }} description "PHY CUSTOMER {{ partner_name }} P_{{ ep.edge_port_name }}{{ ' | '+member.interface_description if member.interface_description is string }}" +set interfaces {{ member.interface_name }} gigether-options 802.3ad {{ ep.edge_port_name }} +{% endfor %} +{% if removed_ae_members is defined and removed_ae_members|length > 0 %} + {% for member in removed_ae_members %} +delete interfaces {{ member.interface_name }} + {% endfor %} +{% endif %} + +set interfaces {{ ep.edge_port_name }} description "LAG {{ ep.edge_port_type }} {{ partner_name }}{{ ' | '+gaid_prefix+ep.ga_id if ep.ga_id is string }}{{ ' | '+csn_prefix+(ep.custom_service_name | replace("#","")) if ep.custom_service_name is string }}{{ ' | '+ep.edge_port_description if ep.edge_port_description is string }}" +set interfaces {{ ep.edge_port_name }} {{ 'flexible-vlan-tagging' if ep.encapsulation == 'qinq' else 'vlan-tagging' }} +set interfaces {{ ep.edge_port_name }} mtu 9192 +set interfaces {{ ep.edge_port_name }} encapsulation flexible-ethernet-services +set interfaces {{ ep.edge_port_name }} aggregated-ether-options minimum-links {{ ep.minimum_links }} +set interfaces {{ ep.edge_port_name }} aggregated-ether-options link-speed {{ ep.member_speed | lower }} +{% if ep.enable_lacp %} +set interfaces {{ ep.edge_port_name }} aggregated-ether-options lacp active +{% endif %}