{"id":16288126,"url":"https://github.com/barbarossatm/nacl2","last_synced_at":"2025-04-09T07:13:51.375Z","repository":{"id":88894700,"uuid":"325443796","full_name":"BarbarossaTM/nacl2","owner":"BarbarossaTM","description":"New Netbox Automation Abstration Caching \u0026 Compute Logic Layer","archived":false,"fork":false,"pushed_at":"2022-01-09T21:10:28.000Z","size":101,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-15T01:28:26.904Z","etag":null,"topics":["automation","automation-framework","netbox","python"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BarbarossaTM.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-12-30T03:21:27.000Z","updated_at":"2022-01-09T21:10:31.000Z","dependencies_parsed_at":"2023-06-13T01:30:47.163Z","dependency_job_id":null,"html_url":"https://github.com/BarbarossaTM/nacl2","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BarbarossaTM%2Fnacl2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BarbarossaTM%2Fnacl2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BarbarossaTM%2Fnacl2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BarbarossaTM%2Fnacl2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BarbarossaTM","download_url":"https://codeload.github.com/BarbarossaTM/nacl2/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247994122,"owners_count":21030049,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","automation-framework","netbox","python"],"created_at":"2024-10-10T19:47:21.469Z","updated_at":"2025-04-09T07:13:51.348Z","avatar_url":"https://github.com/BarbarossaTM.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# NACL2\n\nNACL2 is 2nd approach to the Netbox Abstration \u0026 Caching Layer for SaltStack (and others).\n\nNACL2 is based on the experiences made with [NACL](https://github.com/BarbarosaTM/nacl/) which was a prototype hacked together with a strong focus on [Freifunk Hochstift SaltStack](https://github.com/FreifunkHochstift/ffho-salt-public).\n\n## Architecture Overview\n\nNACL2 is designed as a sole abstraction and caching layer between Netbox (and later Nautobot) and your automation.\n\nThe basic idea behind this approach is to have a daemon / micro service (nacl2) which is responsible for querying all relevant data from Netbox, represent them as objects with pointers in between for reference.  This allows all information stored within Netbox to be queried very fast (as of gRPC), in strongly typed objects, and following a stable API.\n\nThe interval in which nacl2 will check if data within Netbox has been changed will be configureable and a background job will re-fetch all data and re-compute the entire information, which will be updated internally as it has been computed.\n\n### Data Types\n\nNACL2 will provide data types for devices, VMs, interfaces, prefixes, IPs, etc. which provide easy access to relevant attributes and references between objects (device -\u003e interfaces, interface -\u003e IPs, IP -\u003e prefix, etc.).\n\n### API\n\nNACL2 will provide a gRPC based API and maybe a REST-API as well to retrieve the computed information in part or in full and trigger a reload of the configuration and data.\n\nThe API might in the future allow to change information in the sources, for example add devices, IPs, etc.\n\n## Use Cases\n\n### Freifunk Hochstift Infrastructure Management\n\nThe aim is to manage all nodes - for example of the Freifunk Hochstift network - within [NetBox](https://github.com/digitalocean/netbox).\nThis includes physical devices as well as virtual machines (including their ressources and placement on VM hosts).\nPhysical devices could be general Linux boxes which run a Salt minion, switches or wireless backbone devices.\n\nThose devices will be documentated including\n * their OS (platform)\n * network interfaces and connections\n * IP addresses and their VRFs\n * roles of the device\n * SSH keys and SSL host cert/keys (stored in config contexts)\n\nThe aim is to remove all those information from Salt pillar and use NetBox + NACL as the only source of truth for all devices.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbarbarossatm%2Fnacl2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbarbarossatm%2Fnacl2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbarbarossatm%2Fnacl2/lists"}