diff --git a/docs/admin_guide/index.md b/docs/admin_guide/index.md new file mode 100644 index 0000000000000000000000000000000000000000..c7774424d6b8ade323472145da4352ab01f0c7fc --- /dev/null +++ b/docs/admin_guide/index.md @@ -0,0 +1,16 @@ +# 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 diff --git a/docs/architecture/components/wfo/modeling/index.md b/docs/architecture/components/wfo/modeling/index.md new file mode 100644 index 0000000000000000000000000000000000000000..e8839296b5410759e2403a396ec1eb1d8461804c --- /dev/null +++ b/docs/architecture/components/wfo/modeling/index.md @@ -0,0 +1,23 @@ +# 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 diff --git a/docs/architecture/components/wfo/modeling/ports.md b/docs/architecture/components/wfo/modeling/ports.md new file mode 100644 index 0000000000000000000000000000000000000000..99e1cb9331008efb7f4062ecad581dfd41f01a0d --- /dev/null +++ b/docs/architecture/components/wfo/modeling/ports.md @@ -0,0 +1,38 @@ +# 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. +``` diff --git a/docs/architecture/components/wfo/workflows/deploy_router.md b/docs/architecture/components/wfo/workflows/deploy_router.md new file mode 100644 index 0000000000000000000000000000000000000000..3dbfd118788cb013a26d64113827f66e4cf17a7a --- /dev/null +++ b/docs/architecture/components/wfo/workflows/deploy_router.md @@ -0,0 +1,16 @@ +# 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. +``` diff --git a/docs/architecture/components/wfo/workflows/node_provisioning.md b/docs/architecture/components/wfo/workflows/node_provisioning.md new file mode 100644 index 0000000000000000000000000000000000000000..5c888a61ed5fd2fa3a3b68438c218bcdddbd6414 --- /dev/null +++ b/docs/architecture/components/wfo/workflows/node_provisioning.md @@ -0,0 +1,35 @@ +# 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. diff --git a/docs/conf.py b/docs/conf.py index 65b2cfaeed2390d03fed49af9f468ff40028dd49..dcd51643ca0b0d7f39136dcb1e22723c66c96079 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -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' diff --git a/docs/index.md b/docs/index.md index b567f7ecdd4fda6c09978c5b5fdbd91131565e77..6190908a902c0201c5ece8ffcf0378d7c4b1611e 100644 --- a/docs/index.md +++ b/docs/index.md @@ -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 ``` diff --git a/docs/legacy_platform/new_router_deployment.md b/docs/legacy_platform/new_router_deployment.md new file mode 100644 index 0000000000000000000000000000000000000000..b678e3eac94b81a55bcca3d01a44ae108fc5b399 --- /dev/null +++ b/docs/legacy_platform/new_router_deployment.md @@ -0,0 +1,2 @@ +# Deployment of a new router + diff --git a/docs/legacy_platform/overview.md b/docs/legacy_platform/overview.md new file mode 100644 index 0000000000000000000000000000000000000000..a5310cde55d58f3d1c80aa82f2b8af28beea2732 --- /dev/null +++ b/docs/legacy_platform/overview.md @@ -0,0 +1,26 @@ +# 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: + + + + +## 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 diff --git a/docs/static/Image_sources/.$Legacy_GAP_diagrams.drawio.bkp b/docs/static/Image_sources/.$Legacy_GAP_diagrams.drawio.bkp new file mode 100644 index 0000000000000000000000000000000000000000..56311e0eea99c8069c330d4a515b30aeac2fda4e --- /dev/null +++ b/docs/static/Image_sources/.$Legacy_GAP_diagrams.drawio.bkp @@ -0,0 +1,109 @@ +<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="<font color="#FFFFFF">Jenkins</font>" 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="<font color="#FFFFFF">Ansible</font>" 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="<h1 style="font-size: 20px;"><font style="font-size: 20px;">Config Templates<br></font></h1>" 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="<h1 align="center"><font color="#000000">Geant<br></font></h1><h1 align="center"><font color="#000000">IP/MPLS Network</font><br></h1>" 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="<h1 style="font-size: 20px;"><font style="font-size: 20px;">Inventory<br></font></h1>" 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="<font style="font-size: 15px;">Netconf</font>" 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; 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="<h1><span style="background-color: initial;"><font style="font-size: 18px;">Changes to intended configuration via MR</font></span></h1><h1 style="line-height: 50%;"><span style="font-size: 12px; font-weight: 400;">We use Merge Requests to incorporate changes to the intended configuration or mechanics.&nbsp;</span></h1>" 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="<h1><span style="background-color: initial;"><font style="font-size: 18px;">Apply changes to the live network</font></span></h1><h1 style="line-height: 50%;"><span style="font-size: 12px; font-weight: 400;">Jenkins web interface is used to run changes in an ordered manner, leveraging pipelines.&nbsp;</span></h1>" 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> diff --git a/docs/static/Image_sources/Legacy_GAP_diagrams.drawio b/docs/static/Image_sources/Legacy_GAP_diagrams.drawio new file mode 100644 index 0000000000000000000000000000000000000000..c854f965fb689379cf856ccd26ba11c2426b2d1c --- /dev/null +++ b/docs/static/Image_sources/Legacy_GAP_diagrams.drawio @@ -0,0 +1,109 @@ +<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="<font color="#FFFFFF">Jenkins</font>" 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="<font color="#FFFFFF">Ansible</font>" 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="<h1 style="font-size: 20px;"><font style="font-size: 20px;">Config Templates<br></font></h1>" 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="<h1 align="center"><font color="#000000">Geant<br></font></h1><h1 align="center"><font color="#000000">IP/MPLS Network</font><br></h1>" 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="<h1 style="font-size: 20px;"><font style="font-size: 20px;">Inventory<br></font></h1>" 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="<font style="font-size: 15px;">Netconf</font>" 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; 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="<h1><span style="background-color: initial;"><font style="font-size: 18px;">Changes to intended configuration via MR</font></span></h1><h1 style="line-height: 50%;"><span style="font-size: 12px; font-weight: 400;">We use Merge Requests to incorporate changes to the intended configuration or mechanics.&nbsp;</span></h1>" 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="<h1><span style="background-color: initial;"><font style="font-size: 18px;">Apply changes to the live network</font></span></h1><h1 style="line-height: 50%;"><span style="font-size: 12px; font-weight: 400;">Jenkins web interface is used to run changes in an ordered manner, leveraging pipelines.&nbsp;</span></h1>" 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> diff --git a/docs/static/Legacy_GAP_diagrams.overview.drawio.png b/docs/static/Legacy_GAP_diagrams.overview.drawio.png new file mode 100644 index 0000000000000000000000000000000000000000..2c6297b07eafe8cd25de8891927b11ac65b367c6 Binary files /dev/null and b/docs/static/Legacy_GAP_diagrams.overview.drawio.png differ diff --git a/docs/user_guide/IPtrunks/iptrunks.md b/docs/user_guide/IPtrunks/iptrunks.md new file mode 100644 index 0000000000000000000000000000000000000000..4e3303fa1f7032e01dec191767cd32a5ce3a5254 --- /dev/null +++ b/docs/user_guide/IPtrunks/iptrunks.md @@ -0,0 +1,9 @@ +# IP trunks + +## Deployment + +## Modification + +## Termination + +## Migration \ No newline at end of file diff --git a/docs/user_guide/Routers/routers.md b/docs/user_guide/Routers/routers.md new file mode 100644 index 0000000000000000000000000000000000000000..f59535222939873c8048c66e2670ee70832069de --- /dev/null +++ b/docs/user_guide/Routers/routers.md @@ -0,0 +1,5 @@ +# Routers + +## Deployment + +## Undeployment diff --git a/docs/user_guide/Sites/sites.md b/docs/user_guide/Sites/sites.md new file mode 100644 index 0000000000000000000000000000000000000000..4ce1d8a852a36a18801105ce78fd5f1766098c0e --- /dev/null +++ b/docs/user_guide/Sites/sites.md @@ -0,0 +1,5 @@ +# Sites + +## Creation + +## Deletion \ No newline at end of file diff --git a/docs/user_guide/index.md b/docs/user_guide/index.md new file mode 100644 index 0000000000000000000000000000000000000000..f1861222736c4c107042c1504be2613994ca9c65 --- /dev/null +++ b/docs/user_guide/index.md @@ -0,0 +1,6 @@ +# 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. +