diff --git a/docs/docs-infrahub/code_snippets/0001_graphql_add_repo.gql b/docs/docs-infrahub/code_snippets/0001_graphql_add_repo.gql deleted file mode 100644 index d4aa331..0000000 --- a/docs/docs-infrahub/code_snippets/0001_graphql_add_repo.gql +++ /dev/null @@ -1,13 +0,0 @@ -mutation AddRepository{ - CoreReadOnlyRepositoryCreate( - data: { - name: { value: "infrahub-demo-dc-fabric" } - location: { value: "https://github.com/opsmill/infrahub-demo-dc-fabric.git" } - } - ) { - ok - object { - id - } - } -} \ No newline at end of file diff --git a/docs/docs-infrahub/code_snippets/0002_shell_run_generator.sh b/docs/docs-infrahub/code_snippets/0002_shell_run_generator.sh deleted file mode 100755 index 67fdf08..0000000 --- a/docs/docs-infrahub/code_snippets/0002_shell_run_generator.sh +++ /dev/null @@ -1 +0,0 @@ -poetry run infrahubctl run bootstrap/generate_topology.py topology=fra05-pod1 \ No newline at end of file diff --git a/docs/docs-infrahub/infrahub-demo-dc-fabric.excalidraw.svg b/docs/docs-infrahub/infrahub-demo-dc-fabric.excalidraw.svg deleted file mode 100644 index 5eff7f5..0000000 --- a/docs/docs-infrahub/infrahub-demo-dc-fabric.excalidraw.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1cXGlT4zpcdTAwMTb93r+CYr6+uK926VVNTbGFtSHsy8wrysRcdTAwMGUxOFx1MDAwYrEhNK/6v8+VXHUwMDFisLM4JJDQ5jWhIMRW7CvpXHUwMDFlnXOvJP/9ZW5uPv7e9uf/nJv376tuXHUwMDE4eFx1MDAxZLc7/4c9fud3oqDVxFM0+Vx1MDAxY7VuO9WkZD2O29GfX7823M61XHUwMDFmt0O36jt3QXTrhlF861x1MDAwNS2n2mp8XHJiv1x1MDAxMf3H/t12XHUwMDFi/r/brYZcdTAwMTd3nPQmJd9cdTAwMGLiVufnvfzQb/jNOMKr/1x1MDAxNz/Pzf2d/M1aXHUwMDE3hkE78pPiyYmMeUD7j263momplFx1MDAxMELBUPZcXCCIlvFmse/h2Vx1MDAxYVx1MDAxYeynZ+yheXe5wpZcdTAwMDM/8v3Dy50tvbV/t7qeuWstXGLD/fh7mNhcdTAwMTS1sCrpuSjutK7948CL60+Nljme961O6/ay3vQjW3fyfLTVdqtB/N1cdTAwMWVcdTAwMDN4Puo2L5NrpEfu8ZPSwlx1MDAxMVJcdTAwMTjGKFWCmfQq9vtGOVJcdTAwMDBlXHUwMDFhmFwiYJjus2upXHUwMDE1Yi+gXf9cIr79SS27cKvXl2he00vLuMLTtVpapvtYW0K1XHUwMDAzXHUwMDFjiCSEUU2oeC5R94PLepxcdTAwMTSRjpKSXHUwMDFhybRURKu0XGa2tm18Ylx1MDAxODBQgqQ22vu3173EMf5Ke6GDLrVuv9K8XHLDbFM2vcemfHKg1IXo45FcdTAwMWZpXHUwMDA1bfmVftfLul+PXHUwMDBixv59/Fxc84zL7GxVWMVbuT3aPrlR19Vmd2mldjz/XFzux+N/qfm3bc/96YFEMSFcdTAwMTRhgiiROkxcdTAwMTg0r/vrXHUwMDE2tqrXqdN+yVRkXHUwMDAwKj12ZnBCtMjDXHRcdTAwMTGEKK6ZXHUwMDFhXHUwMDFiJ8MrXWicaFwiXHUwMDFkTVx1MDAxNOCQgECATGsk36fMUYQrRlx1MDAxOTXGUM5nXHUwMDAyXHUwMDE0KVx1MDAxY7w6wtBIrjlTQ4AyXGJcZiOUkpxcdTAwMTP+dlxc9JxcdTAwMThcdTAwMDDANH00tarVjPeDh1x1MDAwNIPQc7TsNoLwe0+HJs77Z1JcdTAwMTVcdTAwMTCl/zXbLY/gW9RcdTAwMGWaPpnvKbZcdTAwMTBcdTAwMDaX1q/nq2i+3+lx+ThAnnku0FxiPC/MdFhcdTAwMTXv7eJcdTAwMDU76+OM+a1OcFx1MDAxOTTd8KDHtMSwfrOwVfy151x1MDAwMc/JXGaDXHUwMDE3buTbs9ZcdTAwMDXUSPiOYDqmTC6CpVx1MDAxMVSDYONT3clhVOPrXHUwMDFl39o8MPEu8Fp4elcrNoRcdCjlMFx0XHUwMDFhiYxKokjaXHUwMDFl9lx1MDAwMoxhmyO3SEmYwlx1MDAwNmF9hlx1MDAxNYnrXHUwMDEwUVIpkdEuXHUwMDFmgetWtWwtXHUwMDFjRnvRzt3yTfdkrSxbNZiQ6zSnKouYWXBcdTAwMWQjLFx1MDAxZilcZjtOUi7GRsrwWlx1MDAxN1x1MDAxYilcdTAwMDS0g1x1MDAxZaq1YmBcdTAwMDTPtEeCXHUwMDE0gThiXGJcdTAwMTTgXGaE0lx1MDAwNVwiO60ltXJcdTAwMDTeXHUwMDBljFeTXHUwMDFkl2BcYkzgpFMlu9B3a3RGXFz3wqA/guv6rJox1VGi+o8+XHUwMDAxWFx1MDAxYqDA+PhadbferVx01vimXHUwMDE4KVx1MDAwNXel8tZC03OLXHLf0THdXHUwMDA34jkkOa1cdTAwMTRTU5Cu70hzh1x1MDAxN/e74qJcdTAwMTMsXHUwMDFjL+2Gm1vxYbm6cVXEkE5CXHUwMDFlSihcYuxcdTAwMTaUXHUwMDE54+NkeK1cdTAwMGKNk9ExXYFZXHUwMDBllSzKP8TVXHUwMDE09N/rac7+/lKam1VI98KQ/1x1MDAwMs29X0Q3XHUwMDAywERTrrimanxcdTAwMDDHnePy7Ul0sOhv7i1cdTAwMWRcdTAwMWWdrlx1MDAxY7b2KsVcdTAwMDbwXHUwMDBiXHUwMDEx3UfKXlxuI1x1MDAxMc7sg0V0K2dRqbHiXHUwMDFm165cdTAwMWGEblx1MDAwNmqjftSNXHUwMDBiXHUwMDE40aGj5FxuQsWR5pRcdTAwMTg/oFx1MDAxYl7pYlx1MDAwM2V0QFfk9CWRWnL8wjTy+m/IX07opVPluiRROKuY7oVh/6X85ZSDuqTUXHUwMDEwXHUwMDAwXHUwMDFinTtNh+A1Wk9cdTAwMTLS+Vx1MDAxZdm+2oH1i7vO/Z2/5lx0l+/eXHUwMDE3XHUwMDFiwJpcdTAwMWJEKFD5xDI9+KWIX6qBaFx1MDAwNDhXUsh+w6aDX3BQdFwi1SlcdTAwMWMrcvCLXHUwMDAzraMxqNSMUOxcdTAwMTW0dFx1MDAwMM+If22FSTpcdTAwMDS9L9ONkrRKXHUwMDEyyrNcdTAwMGU9Lsyj2O3Ei0HTXHUwMDBimpf9X/GbXs6Z0I3ipVajXHUwMDExxGhGpVx1MDAxNTTj/lx1MDAxMsl1XHUwMDE3Op1Wt+67XHUwMDAzbYFXzj3Xtpfrpfb0v7nUvZJcdTAwMGbP///1x/DSeT1vX4N9nl7uS/Z9UtBcdTAwMTOQ+ZPzXHUwMDE4k1GksvFp+3pTLSwurp1Hx1x1MDAwZod+faGkXCJ+sFds1Fx1MDAxM8KZw7Ft2SOseyNUSjmeZdhcdTAwMGVcdTAwMDJUj/KcLurx8pxcYmBcdTAwMDbkUHVcdTAwMGJcZnW25Fx1MDAxOCyD4FJnZPYj5LXAsUlcIpFcdTAwMTdcdTAwMTHyjIpXMfs/XHUwMDFl8kO73b5cdTAwMDY6fEK856l0bnT/0cxcdTAwMWFcdTAwMDO0XHUwMDAzQIzP8t7ptstcdTAwMTevXHUwMDFhwLshWbk69VZcdTAwMTbWz4qNd4xjXHUwMDFkSnEgVcquZDH9cJeOpNj4dIB/X4H3uOOisHQ7iJFBzDPsfUZQdHHaXHUwMDEzrT5jPqNln2ZeXHUwMDEwTkZnXHUwMDAzrfeX6ZJTmlx1MDAxOaFeJ9OJ7Dk6Qqb7cT0vXHUwMDA1XHUwMDE1+rV4hCaPW+08Qd5jbb/67r3jWIKb8JFY7PjV+KczXHUwMDBlXHUwMDAxpFx1MDAxYzFcdTAwMTEqXHUwMDA01ZKRXHRcdTAwMDBcdTAwMTmvVi6vj9u7Znc76urwofZNdc6LXHJIaaTDXHUwMDA051x1MDAwMJIlXGbcXHUwMDBiSIltLqSS1E6jvJF/R+JRXHUwMDE44UhcdTAwMThmxzNcIrnBXHUwMDE4XHUwMDFlME5lRlx1MDAxMc2yc9jPkTRBXHSnlZpcdTAwMDJEXHUwMDA3aZi9iYaFXHUwMDEyXFzNPFxyZHLlpOJaXHUwMDE4JieQk9tLu4uX1W5cdTAwMDBHzaPu/r1uy6XgrtjebJhyiJJcXFDJbFx1MDAxYVL3eDMzXHUwMDBloNbkqNVm7M1EcFx1MDAwNI7RwibeXHUwMDE045nEbEowg4kgbkWkkGDe7r6/lmHGT1x1MDAwNFVaXHUwMDFlXuc55fK+ZJN78/F453WJXHUwMDFlgmNXLudQVIhgSGYh20sovV29PoWaKyravVutbMmbXHUwMDBib6NbbJRq5Fx1MDAxY1x1MDAxY1xmUeQpqlx1MDAwNennXHUwMDFjXHUwMDEwXHUwMDBljvHYXHUwMDE0j2nU2aRqicGhgmNoyYk0hmbHijTu49RRRlx1MDAxObSGXGLaXHUwMDAz4ydNSFFcdTAwMTFSYn7V/P2ouFx1MDAwZodcdTAwMTL+XHUwMDE591xyls7v+eTsQJ+n1/uSfZ+UmkVmffLAXFwmKlx1MDAxZmHoXHUwMDA0UvOgclx1MDAxM5ZcdTAwMTZL61x1MDAwZt1ouVxcp1x1MDAwYlfet/tqsWFvXGJxJFx1MDAwNlGAUZeUXHUwMDEyejO8SMlcdTAwMGVT+POU7Zld6KdcdTAwMWPUiGjEIzePXHUwMDE3/TEliYGpJHU/UPSXNyczu+hv0umWXHUwMDE3or/c6Vx1MDAxNtl/8Fx1MDAxOYzGMFx1MDAwMFx1MDAwNWb8peLfVm/3gK+fd+7i5Vx1MDAwYq/57eqKrFx1MDAxNVxcKVx1MDAxM9Da0cC4YECxwqI3XHUwMDEzg43gUCRfPFx1MDAwN+h7XGbeRMKjtbLG4ZhSQ/FuXFxcdTAwMGXNxaBEcHDUXHUwMDAwqSmzWfp0mHxcdTAwMDSn0lx1MDAwMqhWLG2LwtCwwIiWfM64XGaWLuV2vH1ccnT5lFiYm/w9XCKESGBcdTAwMTg+js/C31R5oVx1MDAxYy+Ymip7O0tH9b29jdpD0YGP/KftrIDgXHUwMDE4XHUwMDAym0xO4ifwwVx1MDAxMUbamdjHOZfZ8fDkKVhcdTAwMDLScM3Q7F/Nwil9fOZgX2bhXFxNrPPRaLjdiULHj4RcdFvdduleebm5ueyuXHUwMDFl+GdnpWrhVy3ZVVx1MDAwZpQxKZRm0mSIXCJcdIUtRFxmXGIuMJSjpmfisVx1MDAxOKJcdTAwMTjFujE8c+J3gOOHXHUwMDE3xblwlPkhquFCXHQkyPHJkVxittE92GFanz7sSbZGXHUwMDFh9Y2Cq2LUu460dGSAXG6tdN/+SVx1MDAxMChYgFx1MDAxOaKxMSCjNqeNRk6QXHUwMDFhjVFoz/hgROVi98OIKYjgXHUwMDBmXHUwMDA0Rlx1MDAwMu9PjvA+cJSZ6fF+OFx1MDAwMlx1MDAwM2OokOPT4/l97F6frPOl5Up8urhcXFE3283NgsNRS0chXHUwMDEy0adcdTAwMTTyY2/CiFx1MDAxMeowJTWASFx1MDAxNr/PLkJl3GFS2cR8gvphK4SGoFx1MDAxMYNqbXqWOPxcdTAwMTZw/Fx1MDAwNVr1ncSqXHUwMDFhXHUwMDExOlwiXHUwMDEyKTN8giW6krlLKlhjqllq3+7sk85S+f6k2HC0m7JcdTAwMWNcdTAwMDNGMYlMw1x1MDAwMPqmV1x0cdjwtXxcdTAwMDXhR5bsXFzWn1x1MDAwNPlcdTAwMGYhSFxy+VlcXM60UErItE1eQmREXHUwMDFlwq2VncvDXHUwMDA1/ybyOmel7sFZwfWqnaKy6Vx1MDAxYVx1MDAwNKaRgvUzpF22zJl5WsU4y+V0r6JIaUBcdTAwMDKGwL98TuWTXCLnJlx1MDAwMmT+evbc9UdGJCtyxterYWNP3Fxc7KjzQ1levKme1eKlesGfKmJcYnPspmW7XHUwMDBiUqMy7dturblcdTAwMDOaS0UxuuSoa9/0XFyC0XMqUjqPzz5cdTAwMTi+XdOxmSdqSDL/PeQhIzhgKC7JXHUwMDE00qxTn0/B1jWfy1x1MDAxYVx1MDAwNktcdTAwMGbvc/sq9Xd3eqkv2feJ0U7zV7NTLlFcdTAwMGVzMj79breOxVrN3bjake5cclWHYk/KwuOdWD1shLHtLkmvXHUwMDFl5qDxLFx1MDAxMMNcdKdcbrjss6s4cEf7jTKUzmTZ7Fx1MDAxYuFugGVcdTAwMTJtn3B/es1cdTAwMGXu+dnhXFy4o7qkIFx1MDAxOIy/ZMJXjYNgbfkmoN7C6SGcb5HN3YJno1xmXHUwMDExjkY1XHJcdTAwMTSk3Vx1MDAwNtj3yDBJXHUwMDFkSiR6LZaZ8d5cdTAwMTXlXHUwMDE4JoziyVNdxo1+tTCCYPnfa+pUv7vW1u9cdTAwMTP7Sj6CfJFzXHUwMDE4yrfxs1HVS3/xpNQtP8Tn22F93z3tnlQ+wkJcdTAwMDZin+GEg1x1MDAwZsrCvtjXwlGhv2nrcTNNRr1cbo6SMMmkNr9XLuqfi8b8jZ1cdTAwMWGIXHUwMDA0IehcdTAwMDTbyI74wWFcXN84pWalXjrm/uLB0nrhwShcdTAwMWTNXHUwMDAxyVx1MDAwZutLZd/GToSGQ4RcdTAwMDKFOtOmYGc4VyNcdTAwMWNuM8PEUKZzXHUwMDFlVjSEXHUwMDFjubBcdTAwMGKwfzdyNO9cdTAwMGVH8z5wVPlwNFx1MDAxY4ByXCLGl6qbpn6zvlx1MDAxM6Kk/l6uXHUwMDFj35ePz9ZWXG7OjYZwh4M0XHUwMDE4foohaFx1MDAwNONIrVx1MDAwNVKVmfFEzevgaIBzjaz+icZiovHLY1Q677bb+zG22/xT4I9cdTAwMWRcdTAwMTV4j5VP7z5/XHUwMDE3+N3FIZuzasnLPk4tQbjFkp9kXHUwMDExfnz58X9ATFx1MDAxYisifQ== - - - - - fra05-pod1-spine1fra05-pod1-leaf2fra05-pod1-leaf1fra05-pod1-spine2eth1Pod: fra05-pod1eth2eth1eth2eth10eth11eth10eth11eth8eth8eth9eth9 \ No newline at end of file diff --git a/docs/docs-infrahub/readme.mdx b/docs/docs-infrahub/readme.mdx deleted file mode 100644 index f7f353f..0000000 --- a/docs/docs-infrahub/readme.mdx +++ /dev/null @@ -1,152 +0,0 @@ ---- -title: Demo-dc-fabric ---- - -import CodeBlock from '@theme/CodeBlock'; -import block1 from '!!raw-loader!./code_snippets/0001_graphql_add_repo.gql'; -import block2 from '!!raw-loader!./code_snippets/0002_shell_run_generator.sh'; - -This repository demos key Infrahub features using an example data center running VxLAN / EVPN and firewalls. It demonstrates the capabilities to use Infrahub with Arista AVD and Containerlab. Infrahub generates configurations that AVD deploys to a Containerlab topology. - -![infrahub-demo-dc-fabric drawing](./infrahub-demo-dc-fabric.excalidraw.svg) - -## Running the demo - -### Clone the repository - -Clone the GitHub repository to the server you will run this demo on: - -```shell -git clone https://github.com/opsmill/infrahub-demo-dc-fabric.git -``` - -### Requirements - -Please ensure you have installed the [Infrahub docker-compose requirements](https://docs.infrahub.app/guides/installation#docker-compose). - -### Set environmental variables - -```shell -export INFRAHUB_ADDRESS="http://localhost:8000" -export INFRAHUB_API_TOKEN="06438eb2-8019-4776-878c-0941b1f1d1ec" -export CEOS_DOCKER_IMAGE="registry.opsmill.io/external/ceos-image:4.29.0.2F" -export LINUX_HOST_DOCKER_IMAGE="registry.opsmill.io/external/alpine-host:v3.1.1" -``` - -### Install the Infrahub SDK - -Our demos use [poetry](https://python-poetry.org/) to manage the Python environment. - -```shell -poetry install --no-interaction --no-ansi --no-root -``` - -### Start Infrahub - -```shell -poetry run invoke start -``` - -### Load schema and data into Infrahub - -The `invoke` command will create: - -- Basic data (Account, organization, ASN, Device Type, and Tags) -- Location data (Locations, VLANs, and Prefixes) -- Topology data (Topology, Topology Elements) -- Security data (Policies, rules, objects) - -```shell -poetry run invoke load-schema load-data -``` - -## Demo flow - -### 1. Add the repository into Infrahub via GraphQL - -> [!NOTE] -> Reference the [Infrahub documentation](https://docs.infrahub.app/guides/repository) for the multiple ways this can be done. - - -{block1} - - -### 2. Generate a topology (devices, interfaces, cabling, BGP sessions, ...) - -> [!NOTE] -> The example below creates the topology fra05-pod1 - - -{block2} - - -### 3. Generate a network service in a Topology - -> [!NOTE] -> The example below creates the Layer2 network service and a another Layer3 on topology fra05-pod1 - -```shell -poetry run infrahubctl run generators/generate_network-services.py topology=fra05-pod1 type=layer2 -poetry run infrahubctl run generators/generate_network-services.py topology=fra05-pod1 type=layer3 vrf=production -``` - -### 4. Render artifacts - -Artifact Generation is not currently present in the UI but it's possible to try it out locally : - -> [!NOTE] -> This command will render the artifact define with `device_arista` Transformation, for `fra05-pod1-leaf1` device - -```shell -poetry run infrahubctl render device_arista device=fra05-pod1-leaf1 -``` - -### 5. Try out our pytest plugin - -> [!NOTE] -> The command will use our Infrahub pytest plugin. It will run the different test in the `tests` folder. Those tests included : -> -> - Syntax checks for all the GraphQL Queries -> - Syntax checks for the Checks -> - Syntax checks for all the jinja files used in `templates` -> - will use the input/output file to try out the rendering and confirm there is no unexpected missing piece - -```shell -pytest -v ./tests -``` - -### 6. Create a new Branch - -Create directly a new branch `test` in the UI, or if you prefer to use our SDK in CLI : - -```shell -poetry run infrahubctl branch create test -``` - -### 7. Create new network services and regenerate artifacts in your branch - -> [!NOTE] -> You will be able to see the Diff in the Branch not only about the Data but about the Artifact as well -> You can go back in time to see the Diff on the branch before you create the new services (you can do it `main` after merging the proposed changes too) - -### 8. Create a proposed change - -Using your new branch `test` you will be able to see the Diff in the Proposed Change and you will see the checks / tests in the CI pipeline - -### 9. Try out the topology check - -- Modify an Elements in a Topology (example: increase or decrease the quantity of leaf switches in fra05-pod1) - -- The checks will run in the `Proposed Changes` -> `check_device_topology` will fail. - -### 10. Deploy your environment to Containerlab - -The Containerlab generator automatically generates a Containerlab topology artifact for every topology. Every device has its startup configuration as an artifact. - -```shell -# Download all artifacts automatically to ./generated-configs/ -poetry run python3 scripts/get_configs.py - -# Start Containerlab -sudo -E containerlab deploy -t ./generated-configs/clab/fra05-pod1.yml --reconfigure -```