Skip to content
Snippets Groups Projects
Commit c5a2cf84 authored by Simone Spinelli's avatar Simone Spinelli Committed by Simone Spinelli
Browse files

First iteration of new structure

parent 0780442e
No related branches found
No related tags found
2 merge requests!8update documentation 16-08-2023,!7First iteration of new structure
Pipeline #83824 failed
Showing
with 424 additions and 11 deletions
# About this section
All the information regarding modeling, workflows and ansible mechanics are described in this section.
Next to this, also troubleshoting and maintainance are included.
The structure is:
- WFO
- Modelling
- Workflow
- Maintainance
- Troubleshoot
- Ansible
- Design
- Low level description
- Troubleshoot
# Data models
To be able to model network objects, a data model must exist for every configuration item in the network. This allows
for describing the network, and the services as a composition of abstract objects.
## Decomposition of objects
Every object -- both services and access ports -- is composed of the following building blocks:
* Administrative metadata
* Object ID
* Status
* Owner
* Configuration data that depends on the specific service, some examples:
* Access port
* Access port type
* Physical interfaces
* IP trunk
* IPv4 network
* IPv6 network
* IS-IS metric
* Placement metadata
* Access node
* Service delivery point
# Services and ports
While a port shouldn't be configured in case there is no service insisting on it, it could happen that more than one
service is insisting on one port. For this reason, the following entities exist:
{term}`SDP`
: Service Delivery Point: the logical interface where a service is delivered
{term}`GA`
: Access Port: an access point into the GÉANT network
{term}`GP`
: Physical Port: the physical boundary for the {term}`GA`
{term}`GAN`
: Access Node: the node where a service is delivered
These concepts apply to both {term}`CFS`es and {term}`IFS`es.
```{figure} ../static/access_port_diagram.png
:alt: Diagram that displays the different entities that make up a GÉANT service.
A visualisation of how services insist on ports.
```
## Peer-to-peer and multipoint services
There is a distinction between services -- as mentioned in [configuration (de)composition](#configuration-decomposition)
-- between peer-to-peer and multipoint services. In both cases, {term}`SDP` is the delivery point of a service.
However, for multipoint services customers are supposed to be dual-homed in at least two different {term}`GAN`s.
To give some examples, the figure below shows a decomposition of a GeantIP service for an NREN.
```{figure} ../static/geant_ip_ports_diagram.png
:alt: Diagram that displays the different entities that make up a GeantIP service instance.
A visualisation of an instance of a GeantIP service that consists of different configuration objects.
```
# Router deployment
From a bird's-eye view, the process of deploying a new router in the network is as follows:
1. Manually configure the router such that it's reachable from out-of-band ({term}`OOB`).
2. Upgrade the router to the most recent OS.
3. Deploy base configuration.
4. Configure trunks to connect the router to the network.
5. Update the protocol meshes (such as {term}`iBGP`).
6. Promote the router to the production environment.
```{figure} ../static/WFO_deploy_router.png
:alt: Diagram that displays the steps that Workflow Orchestrator takes to provision a new router.
{term}`WFO` provisions a new router by following the steps shown here.
```
# Node provisioning
A node can either be a router, a switch, or a terminal server. In general -- as laid out more extensively
[here](https://wiki.geant.org/display/NETENG/001+-+Topology+and+physical+layout) (behind login) -- a {term}`PoP`
consists of:
* One or two routers
* One switch
* One terminal server
Globally, the workflow for a new site is as follows:
1. Deploy terminal server:
1. Generate base configuration from GitLab
2. Ship the device to its location
3. Verify reachability and insert in LibreNMS
2. Deploy {term}`PoP` router in a 'core' fashion
1. Rack it up and configure the hardware
2. Connect the router to the terminal server via both a console connection, and FXP
3. Deploy base configuration using {term}`GAP`
3. Deploy {term}`PoP` switch
1. Rack it up and configure the hardware
2. Connect the switch to the terminal server via both a console connection, and FXP
3. Deploy base configuration using {term}`GAP`
4. Deploy the {term}`PoP` interconnect between router and switch
1. Set up a physical connection between router and switch
2. Deploy configuration using {term}`GAP`
5. Deploy IP trunks to connect the router to the rest of the network
1. Set up a physical connection
2. Deploy configuration using {term}`GAP`
6. Update the {term}`iBGP` mesh to include the new router, promoting it to an edge router
1. Deploy configuration using {term}`GAP`
2. Using {term}`GAP`, insert the devices in LibreNMS
In the context of the automation platform, the {term}`PoP` interconnects mentioned are modeled as separate objects.
......@@ -21,6 +21,11 @@ html_theme = 'sphinx_rtd_theme'
html_static_path = ['static']
html_theme_options = {
'style_nav_header_background': 'rgb(0 63 95)',
'collapse_navigation': True,
'sticky_navigation': True,
'navigation_depth': 4,
'includehidden': True,
'titles_only': False
}
html_css_files = ['custom.css']
html_logo = 'static/geant_logo_white.svg'
......@@ -6,28 +6,37 @@ The focus of this platform is configuration management and service orchestration
This documentation has the following sections:
```{toctree}
:caption: Background
:maxdepth: 2
:caption: Architecture
:maxdepth: 1
overview/index.md
architecture/index.md
```
```{toctree}
:caption: Modeling
:maxdepth: 2
modeling/index.md
modeling/ports.md
:caption: User guide
:glob:
:maxdepth: 3
user_guide/index.md
user_guide/Sites/*
user_guide/Routers/*
user_guide/IPtrunks/*
```
```{toctree}
:caption: Processes
:maxdepth: 2
processes/node_provisioning.md
processes/deploy_router.md
:caption: Admin guide
:maxdepth: 1
admin_guide/index.md
```
```{toctree}
:caption: Legacy GAP
:maxdepth: 1
legacy_platform/overview.md
legacy_platform/new_router_deployment.md
```
```{toctree}
:caption: —
:maxdepth: 2
:maxdepth: 1
glossary.md
```
# Deployment of a new router
# Overview
Current GAP is extremely simple and its foundamental parts are:
- An ansible inventory stored in Git [Ansible inventory](https://gitlab.geant.net/neteam/network-automation/na-production/prod_network_inventory/-/tree/master)
- A set of ansible playbooks stored in Git [Ansible playbooks](https://gitlab.geant.net/neteam/network-automation/na-production/prod_network_ansible)
- An Ansible master instance to execute these playbooks
- A Jenkins instance to orchestrate Ansible
An overview of the platform is depicted in the following picture:
![GAP_overview](../static/Legacy_GAP_diagrams.overview.drawio.png)
## Functionalities
Currently GAP is capable of the following capabilities:
- Provisioning of nodes and IPtrunks:
- Deployment of base config on a new router
- Deployment of a new trunk with metric=9000
- Insertion of a new router in the iBGP mesh
- Periodic checks of configuration:
- Verification of single stanza of configuration
- Others:
- Upgrade of Junos on single and dual routing engines Juniper routers
<mxfile host="Electron" modified="2023-08-04T07:43:55.097Z" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/21.2.1 Chrome/112.0.5615.87 Electron/24.1.2 Safari/537.36" etag="yny_tqDxbk-8OQmxMuUl" version="21.2.1" type="device">
<diagram name="Page-1" id="k83DaNArxDXSbVKD7Knm">
<mxGraphModel dx="2490" dy="1944" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="tLlyI6g2dAklqoHCJuop-1" value="" style="rounded=1;whiteSpace=wrap;html=1;fontColor=#000000;" vertex="1" parent="1">
<mxGeometry x="200" y="-60" width="310" height="230" as="geometry" />
</mxCell>
<mxCell id="tLlyI6g2dAklqoHCJuop-2" value="&lt;font color=&quot;#FFFFFF&quot;&gt;Jenkins&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#003C56;fontSize=18;strokeColor=none;" vertex="1" parent="1">
<mxGeometry x="-160" y="-110" width="160" height="40" as="geometry" />
</mxCell>
<mxCell id="tLlyI6g2dAklqoHCJuop-3" value="&lt;font color=&quot;#FFFFFF&quot;&gt;Ansible&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#003C56;fontSize=18;strokeColor=none;" vertex="1" parent="1">
<mxGeometry x="-160" y="20" width="160" height="60" as="geometry" />
</mxCell>
<mxCell id="tLlyI6g2dAklqoHCJuop-4" value="" style="group" vertex="1" connectable="0" parent="1">
<mxGeometry x="210" y="33" width="310" height="133" as="geometry" />
</mxCell>
<mxCell id="tLlyI6g2dAklqoHCJuop-5" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#1084B9;fontSize=18;strokeColor=none;fontColor=#FFFFFF;" vertex="1" parent="tLlyI6g2dAklqoHCJuop-4">
<mxGeometry y="33" width="290" height="60" as="geometry" />
</mxCell>
<mxCell id="tLlyI6g2dAklqoHCJuop-6" value="&lt;h1 style=&quot;font-size: 20px;&quot;&gt;&lt;font style=&quot;font-size: 20px;&quot;&gt;Config Templates&lt;br&gt;&lt;/font&gt;&lt;/h1&gt;" style="text;whiteSpace=wrap;html=1;fontColor=#FFFFFF;" vertex="1" parent="tLlyI6g2dAklqoHCJuop-4">
<mxGeometry x="58" y="30" width="270" height="80" as="geometry" />
</mxCell>
<mxCell id="tLlyI6g2dAklqoHCJuop-15" value="Vendor specific implementation" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" vertex="1" parent="tLlyI6g2dAklqoHCJuop-4">
<mxGeometry x="30" y="93" width="230" height="40" as="geometry" />
</mxCell>
<mxCell id="tLlyI6g2dAklqoHCJuop-7" value="" style="ellipse;shape=cloud;whiteSpace=wrap;html=1;fontColor=#FFFFFF;" vertex="1" parent="1">
<mxGeometry x="-286" y="190" width="330" height="200" as="geometry" />
</mxCell>
<mxCell id="tLlyI6g2dAklqoHCJuop-8" value="&lt;h1 align=&quot;center&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;Geant&lt;br&gt;&lt;/font&gt;&lt;/h1&gt;&lt;h1 align=&quot;center&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;IP/MPLS Network&lt;/font&gt;&lt;br&gt;&lt;/h1&gt;" style="text;whiteSpace=wrap;html=1;fontColor=#FFFFFF;" vertex="1" parent="1">
<mxGeometry x="-211" y="230" width="205" height="70" as="geometry" />
</mxCell>
<mxCell id="tLlyI6g2dAklqoHCJuop-9" value="" style="shape=flexArrow;endArrow=classic;html=1;rounded=0;fontColor=#FFFFFF;entryX=1;entryY=0.75;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;edgeStyle=orthogonalEdgeStyle;fillColor=default;" edge="1" parent="1" source="tLlyI6g2dAklqoHCJuop-5" target="tLlyI6g2dAklqoHCJuop-3">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="170" y="160" as="sourcePoint" />
<mxPoint x="220" y="110" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="tLlyI6g2dAklqoHCJuop-10" value="" style="shape=flexArrow;endArrow=classic;html=1;rounded=0;fontColor=#FFFFFF;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.625;entryY=0.2;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="tLlyI6g2dAklqoHCJuop-3" target="tLlyI6g2dAklqoHCJuop-7">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="140" y="190" as="sourcePoint" />
<mxPoint x="190" y="140" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="tLlyI6g2dAklqoHCJuop-11" value="" style="shape=flexArrow;endArrow=classic;startArrow=classic;html=1;rounded=0;fontColor=#FFFFFF;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" edge="1" parent="1" source="tLlyI6g2dAklqoHCJuop-3" target="tLlyI6g2dAklqoHCJuop-2">
<mxGeometry width="100" height="100" relative="1" as="geometry">
<mxPoint x="-320" y="20" as="sourcePoint" />
<mxPoint x="-220" y="-80" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="tLlyI6g2dAklqoHCJuop-12" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#1084B9;fontSize=18;strokeColor=none;fontColor=#FFFFFF;" vertex="1" parent="1">
<mxGeometry x="210" y="-30" width="290" height="60" as="geometry" />
</mxCell>
<mxCell id="tLlyI6g2dAklqoHCJuop-13" value="&lt;h1 style=&quot;font-size: 20px;&quot;&gt;&lt;font style=&quot;font-size: 20px;&quot;&gt;Inventory&lt;br&gt;&lt;/font&gt;&lt;/h1&gt;" style="text;whiteSpace=wrap;html=1;fontColor=#FFFFFF;" vertex="1" parent="1">
<mxGeometry x="268" y="-33" width="270" height="80" as="geometry" />
</mxCell>
<mxCell id="tLlyI6g2dAklqoHCJuop-14" value="" style="shape=flexArrow;endArrow=classic;html=1;rounded=0;fontColor=#000000;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.25;entryDx=0;entryDy=0;edgeStyle=orthogonalEdgeStyle;fillColor=default;" edge="1" parent="1" source="tLlyI6g2dAklqoHCJuop-12" target="tLlyI6g2dAklqoHCJuop-3">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="90" as="sourcePoint" />
<mxPoint x="140" y="-50" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="tLlyI6g2dAklqoHCJuop-16" value="Global variables + Services" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" vertex="1" parent="1">
<mxGeometry x="310" y="-62" width="200" height="40" as="geometry" />
</mxCell>
<mxCell id="tLlyI6g2dAklqoHCJuop-17" value="" style="shape=flexArrow;endArrow=classic;html=1;rounded=0;fontColor=#000000;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0.004;entryY=0.113;entryDx=0;entryDy=0;edgeStyle=orthogonalEdgeStyle;fillColor=default;entryPerimeter=0;" edge="1" parent="1" source="tLlyI6g2dAklqoHCJuop-2" target="tLlyI6g2dAklqoHCJuop-13">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="220" y="-20" as="sourcePoint" />
<mxPoint x="282.5" y="-60" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="tLlyI6g2dAklqoHCJuop-18" value="&lt;font style=&quot;font-size: 15px;&quot;&gt;Netconf&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" vertex="1" parent="1">
<mxGeometry x="-120" y="140" width="150" height="40" as="geometry" />
</mxCell>
<mxCell id="tLlyI6g2dAklqoHCJuop-19" value="Updates via python scripts" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="44" y="-120" width="186" height="30" as="geometry" />
</mxCell>
<mxCell id="tLlyI6g2dAklqoHCJuop-20" value="Sync every minute &amp;amp; on demand" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry y="-33" width="186" height="30" as="geometry" />
</mxCell>
<mxCell id="tLlyI6g2dAklqoHCJuop-22" value="" style="shape=actor;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="342" y="-290" width="40" height="60" as="geometry" />
</mxCell>
<mxCell id="tLlyI6g2dAklqoHCJuop-23" value="" style="shape=flexArrow;endArrow=classic;startArrow=classic;html=1;rounded=0;exitX=0.25;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="tLlyI6g2dAklqoHCJuop-16" target="tLlyI6g2dAklqoHCJuop-22">
<mxGeometry width="100" height="100" relative="1" as="geometry">
<mxPoint x="430" y="-150" as="sourcePoint" />
<mxPoint x="530" y="-250" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="tLlyI6g2dAklqoHCJuop-24" value="" style="shape=flexArrow;endArrow=classic;startArrow=classic;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0;entryY=0.75;entryDx=0;entryDy=0;" edge="1" parent="1" source="tLlyI6g2dAklqoHCJuop-2" target="tLlyI6g2dAklqoHCJuop-22">
<mxGeometry width="100" height="100" relative="1" as="geometry">
<mxPoint x="-170" y="-190" as="sourcePoint" />
<mxPoint x="-70" y="-290" as="targetPoint" />
<Array as="points">
<mxPoint x="-80" y="-245" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="tLlyI6g2dAklqoHCJuop-25" value="&lt;h1&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;&lt;font style=&quot;font-size: 18px;&quot;&gt;Changes to intended configuration via MR&lt;/font&gt;&lt;/span&gt;&lt;/h1&gt;&lt;h1 style=&quot;line-height: 50%;&quot;&gt;&lt;span style=&quot;font-size: 12px; font-weight: 400;&quot;&gt;We use Merge Requests to incorporate changes to the intended configuration or mechanics.&amp;nbsp;&lt;/span&gt;&lt;/h1&gt;" style="text;html=1;strokeColor=none;fillColor=none;spacing=5;spacingTop=-20;whiteSpace=wrap;overflow=hidden;rounded=0;" vertex="1" parent="1">
<mxGeometry x="390" y="-220" width="410" height="150" as="geometry" />
</mxCell>
<mxCell id="tLlyI6g2dAklqoHCJuop-26" value="&lt;h1&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;&lt;font style=&quot;font-size: 18px;&quot;&gt;Apply changes to the live network&lt;/font&gt;&lt;/span&gt;&lt;/h1&gt;&lt;h1 style=&quot;line-height: 50%;&quot;&gt;&lt;span style=&quot;font-size: 12px; font-weight: 400;&quot;&gt;Jenkins web interface is used to run changes in an ordered manner, leveraging pipelines.&amp;nbsp;&lt;/span&gt;&lt;/h1&gt;" style="text;html=1;strokeColor=none;fillColor=none;spacing=5;spacingTop=-20;whiteSpace=wrap;overflow=hidden;rounded=0;" vertex="1" parent="1">
<mxGeometry x="-68" y="-240" width="410" height="150" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>
<mxfile host="Electron" modified="2023-08-04T07:44:54.540Z" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/21.2.1 Chrome/112.0.5615.87 Electron/24.1.2 Safari/537.36" etag="f_znjEoEsjO5Cs6O7TO9" version="21.2.1" type="device">
<diagram name="Overview" id="k83DaNArxDXSbVKD7Knm">
<mxGraphModel dx="2490" dy="1944" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="tLlyI6g2dAklqoHCJuop-1" value="" style="rounded=1;whiteSpace=wrap;html=1;fontColor=#000000;" vertex="1" parent="1">
<mxGeometry x="200" y="-60" width="310" height="230" as="geometry" />
</mxCell>
<mxCell id="tLlyI6g2dAklqoHCJuop-2" value="&lt;font color=&quot;#FFFFFF&quot;&gt;Jenkins&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#003C56;fontSize=18;strokeColor=none;" vertex="1" parent="1">
<mxGeometry x="-160" y="-110" width="160" height="40" as="geometry" />
</mxCell>
<mxCell id="tLlyI6g2dAklqoHCJuop-3" value="&lt;font color=&quot;#FFFFFF&quot;&gt;Ansible&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#003C56;fontSize=18;strokeColor=none;" vertex="1" parent="1">
<mxGeometry x="-160" y="20" width="160" height="60" as="geometry" />
</mxCell>
<mxCell id="tLlyI6g2dAklqoHCJuop-4" value="" style="group" vertex="1" connectable="0" parent="1">
<mxGeometry x="210" y="33" width="310" height="133" as="geometry" />
</mxCell>
<mxCell id="tLlyI6g2dAklqoHCJuop-5" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#1084B9;fontSize=18;strokeColor=none;fontColor=#FFFFFF;" vertex="1" parent="tLlyI6g2dAklqoHCJuop-4">
<mxGeometry y="33" width="290" height="60" as="geometry" />
</mxCell>
<mxCell id="tLlyI6g2dAklqoHCJuop-6" value="&lt;h1 style=&quot;font-size: 20px;&quot;&gt;&lt;font style=&quot;font-size: 20px;&quot;&gt;Config Templates&lt;br&gt;&lt;/font&gt;&lt;/h1&gt;" style="text;whiteSpace=wrap;html=1;fontColor=#FFFFFF;" vertex="1" parent="tLlyI6g2dAklqoHCJuop-4">
<mxGeometry x="58" y="30" width="270" height="80" as="geometry" />
</mxCell>
<mxCell id="tLlyI6g2dAklqoHCJuop-15" value="Vendor specific implementation" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" vertex="1" parent="tLlyI6g2dAklqoHCJuop-4">
<mxGeometry x="30" y="93" width="230" height="40" as="geometry" />
</mxCell>
<mxCell id="tLlyI6g2dAklqoHCJuop-7" value="" style="ellipse;shape=cloud;whiteSpace=wrap;html=1;fontColor=#FFFFFF;" vertex="1" parent="1">
<mxGeometry x="-286" y="190" width="330" height="200" as="geometry" />
</mxCell>
<mxCell id="tLlyI6g2dAklqoHCJuop-8" value="&lt;h1 align=&quot;center&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;Geant&lt;br&gt;&lt;/font&gt;&lt;/h1&gt;&lt;h1 align=&quot;center&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;IP/MPLS Network&lt;/font&gt;&lt;br&gt;&lt;/h1&gt;" style="text;whiteSpace=wrap;html=1;fontColor=#FFFFFF;" vertex="1" parent="1">
<mxGeometry x="-211" y="230" width="205" height="70" as="geometry" />
</mxCell>
<mxCell id="tLlyI6g2dAklqoHCJuop-9" value="" style="shape=flexArrow;endArrow=classic;html=1;rounded=0;fontColor=#FFFFFF;entryX=1;entryY=0.75;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;edgeStyle=orthogonalEdgeStyle;fillColor=default;" edge="1" parent="1" source="tLlyI6g2dAklqoHCJuop-5" target="tLlyI6g2dAklqoHCJuop-3">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="170" y="160" as="sourcePoint" />
<mxPoint x="220" y="110" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="tLlyI6g2dAklqoHCJuop-10" value="" style="shape=flexArrow;endArrow=classic;html=1;rounded=0;fontColor=#FFFFFF;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.625;entryY=0.2;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="tLlyI6g2dAklqoHCJuop-3" target="tLlyI6g2dAklqoHCJuop-7">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="140" y="190" as="sourcePoint" />
<mxPoint x="190" y="140" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="tLlyI6g2dAklqoHCJuop-11" value="" style="shape=flexArrow;endArrow=classic;startArrow=classic;html=1;rounded=0;fontColor=#FFFFFF;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" edge="1" parent="1" source="tLlyI6g2dAklqoHCJuop-3" target="tLlyI6g2dAklqoHCJuop-2">
<mxGeometry width="100" height="100" relative="1" as="geometry">
<mxPoint x="-320" y="20" as="sourcePoint" />
<mxPoint x="-220" y="-80" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="tLlyI6g2dAklqoHCJuop-12" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#1084B9;fontSize=18;strokeColor=none;fontColor=#FFFFFF;" vertex="1" parent="1">
<mxGeometry x="210" y="-30" width="290" height="60" as="geometry" />
</mxCell>
<mxCell id="tLlyI6g2dAklqoHCJuop-13" value="&lt;h1 style=&quot;font-size: 20px;&quot;&gt;&lt;font style=&quot;font-size: 20px;&quot;&gt;Inventory&lt;br&gt;&lt;/font&gt;&lt;/h1&gt;" style="text;whiteSpace=wrap;html=1;fontColor=#FFFFFF;" vertex="1" parent="1">
<mxGeometry x="268" y="-33" width="270" height="80" as="geometry" />
</mxCell>
<mxCell id="tLlyI6g2dAklqoHCJuop-14" value="" style="shape=flexArrow;endArrow=classic;html=1;rounded=0;fontColor=#000000;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.25;entryDx=0;entryDy=0;edgeStyle=orthogonalEdgeStyle;fillColor=default;" edge="1" parent="1" source="tLlyI6g2dAklqoHCJuop-12" target="tLlyI6g2dAklqoHCJuop-3">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="90" as="sourcePoint" />
<mxPoint x="140" y="-50" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="tLlyI6g2dAklqoHCJuop-16" value="Global variables + Services" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" vertex="1" parent="1">
<mxGeometry x="310" y="-62" width="200" height="40" as="geometry" />
</mxCell>
<mxCell id="tLlyI6g2dAklqoHCJuop-17" value="" style="shape=flexArrow;endArrow=classic;html=1;rounded=0;fontColor=#000000;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0.004;entryY=0.113;entryDx=0;entryDy=0;edgeStyle=orthogonalEdgeStyle;fillColor=default;entryPerimeter=0;" edge="1" parent="1" source="tLlyI6g2dAklqoHCJuop-2" target="tLlyI6g2dAklqoHCJuop-13">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="220" y="-20" as="sourcePoint" />
<mxPoint x="282.5" y="-60" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="tLlyI6g2dAklqoHCJuop-18" value="&lt;font style=&quot;font-size: 15px;&quot;&gt;Netconf&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" vertex="1" parent="1">
<mxGeometry x="-120" y="140" width="150" height="40" as="geometry" />
</mxCell>
<mxCell id="tLlyI6g2dAklqoHCJuop-19" value="Updates via python scripts" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="44" y="-120" width="186" height="30" as="geometry" />
</mxCell>
<mxCell id="tLlyI6g2dAklqoHCJuop-20" value="Sync every minute &amp;amp; on demand" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry y="-33" width="186" height="30" as="geometry" />
</mxCell>
<mxCell id="tLlyI6g2dAklqoHCJuop-22" value="" style="shape=actor;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="342" y="-290" width="40" height="60" as="geometry" />
</mxCell>
<mxCell id="tLlyI6g2dAklqoHCJuop-23" value="" style="shape=flexArrow;endArrow=classic;startArrow=classic;html=1;rounded=0;exitX=0.25;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="tLlyI6g2dAklqoHCJuop-16" target="tLlyI6g2dAklqoHCJuop-22">
<mxGeometry width="100" height="100" relative="1" as="geometry">
<mxPoint x="430" y="-150" as="sourcePoint" />
<mxPoint x="530" y="-250" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="tLlyI6g2dAklqoHCJuop-24" value="" style="shape=flexArrow;endArrow=classic;startArrow=classic;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0;entryY=0.75;entryDx=0;entryDy=0;" edge="1" parent="1" source="tLlyI6g2dAklqoHCJuop-2" target="tLlyI6g2dAklqoHCJuop-22">
<mxGeometry width="100" height="100" relative="1" as="geometry">
<mxPoint x="-170" y="-190" as="sourcePoint" />
<mxPoint x="-70" y="-290" as="targetPoint" />
<Array as="points">
<mxPoint x="-80" y="-245" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="tLlyI6g2dAklqoHCJuop-25" value="&lt;h1&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;&lt;font style=&quot;font-size: 18px;&quot;&gt;Changes to intended configuration via MR&lt;/font&gt;&lt;/span&gt;&lt;/h1&gt;&lt;h1 style=&quot;line-height: 50%;&quot;&gt;&lt;span style=&quot;font-size: 12px; font-weight: 400;&quot;&gt;We use Merge Requests to incorporate changes to the intended configuration or mechanics.&amp;nbsp;&lt;/span&gt;&lt;/h1&gt;" style="text;html=1;strokeColor=none;fillColor=none;spacing=5;spacingTop=-20;whiteSpace=wrap;overflow=hidden;rounded=0;" vertex="1" parent="1">
<mxGeometry x="390" y="-220" width="410" height="150" as="geometry" />
</mxCell>
<mxCell id="tLlyI6g2dAklqoHCJuop-26" value="&lt;h1&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;&lt;font style=&quot;font-size: 18px;&quot;&gt;Apply changes to the live network&lt;/font&gt;&lt;/span&gt;&lt;/h1&gt;&lt;h1 style=&quot;line-height: 50%;&quot;&gt;&lt;span style=&quot;font-size: 12px; font-weight: 400;&quot;&gt;Jenkins web interface is used to run changes in an ordered manner, leveraging pipelines.&amp;nbsp;&lt;/span&gt;&lt;/h1&gt;" style="text;html=1;strokeColor=none;fillColor=none;spacing=5;spacingTop=-20;whiteSpace=wrap;overflow=hidden;rounded=0;" vertex="1" parent="1">
<mxGeometry x="-68" y="-240" width="410" height="150" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>
docs/static/Legacy_GAP_diagrams.overview.drawio.png

103 KiB

# IP trunks
## Deployment
## Modification
## Termination
## Migration
\ No newline at end of file
# Routers
## Deployment
## Undeployment
# Sites
## Creation
## Deletion
\ No newline at end of file
# About this section
The GAP user guide section aims to describe step by step the mode of operation of the automation platform so that engineers can follow it when in doubt.
The structure is simple: one sub-section per product and one page for each workflow.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment