srl-labs / intent-based-ansible-lab Goto Github PK
View Code? Open in Web Editor NEWLicense: BSD 3-Clause "New" or "Revised" License
License: BSD 3-Clause "New" or "Revised" License
@wdesmedt I wanted to check why did you decide to add host variables in each role's vars section. Why don't you put host vars into the inventory, making it a single place where host_vars are defined.
Imagine you grow your fabric from 4 leaves to 6 leaves. With the current approach you would have to add clab-xxx-l5 and clab-xxx-l6 vars to all the roles, instead of just adding the relevant nodes into the inventory.
PE-CE routing in the overlay.
@wdesmedt this looks like a leftover
intent-based-ansible-lab/inv/ansible-inventory.yml
Lines 45 to 50 in fd9b1f3
Currently the intent environment is being specified using an environment environment, this is a non-native Ansible concept so isn't supported by for example Ansible Tower/AWX. Instead just use env
as a fact directly as is being set in https://github.com/srl-labs/intent-based-ansible-lab/blob/dev/playbooks/roles/initialize/tasks/main.yml#L11.
This is what we have changed in our internal fork to make it work with AWX.
I would like to be able to specify the commit message that gets used in the JSON-RPC call to the device. That way we can use the Git commit message as commit message on the device when integrating it with our CI/CD pipeline.
Automated testing of playbook roles (ansible-test?)
Intent validation with e.g. custom filters + pydantic or builtin jsonschema criteria.
Coding in Jinja/YAML is error-prone and difficult to troubleshoot. Proposal to move to custom filters (l2vpn, l3vpn) to generate low-level device configuration from high-level intent.
Often, lookup vars that match the full version is not feasible. Instead, a generic version lookup logic can be introduced:
Rather than specifying individual interfaces or network-instances, use labels as properties to resources that can be referenced by other resources/services (e.g. l2vpn with interfaces tagged with label xxx, l3vpn with interfaces and macvrfs tagged with label yyy, ...
Define high-level fabric intent model that gets transformed in the custom low-level per-device intent (=device abstraction layer), currently used for underlay via the infra role. Still support input into the per-device intent to suppport configuration that is not covered by the fabric intent.
Fabric intent should define a.o.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.