{"id":21309519,"url":"https://github.com/the-nazara-project/nazara","last_synced_at":"2025-08-20T21:21:03.734Z","repository":{"id":178607974,"uuid":"661611722","full_name":"The-Nazara-Project/Nazara","owner":"The-Nazara-Project","description":"A CLI application to create and update machines and VMs in Netbox.","archived":false,"fork":false,"pushed_at":"2025-08-13T13:31:56.000Z","size":665,"stargazers_count":16,"open_issues_count":21,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-13T15:35:31.348Z","etag":null,"topics":["automation","cli","netbox-api","netbox-automation","rust","rust-lang"],"latest_commit_sha":null,"homepage":"https://the-nazara-project.github.io/Nazara/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/The-Nazara-Project.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-07-03T09:01:46.000Z","updated_at":"2025-08-13T13:31:10.000Z","dependencies_parsed_at":null,"dependency_job_id":"a8078f48-1230-4c89-90b8-ecfb6531010d","html_url":"https://github.com/The-Nazara-Project/Nazara","commit_stats":null,"previous_names":["byteotter/netbox-sync","the-nazara-project/nazara"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/The-Nazara-Project/Nazara","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Nazara-Project%2FNazara","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Nazara-Project%2FNazara/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Nazara-Project%2FNazara/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Nazara-Project%2FNazara/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/The-Nazara-Project","download_url":"https://codeload.github.com/The-Nazara-Project/Nazara/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Nazara-Project%2FNazara/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271386442,"owners_count":24750515,"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","status":"online","status_checked_at":"2025-08-20T02:00:09.606Z","response_time":69,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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","cli","netbox-api","netbox-automation","rust","rust-lang"],"created_at":"2024-11-21T17:09:16.941Z","updated_at":"2025-08-20T21:21:03.728Z","avatar_url":"https://github.com/The-Nazara-Project.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg src=\"https://github.com/user-attachments/assets/1a0ab81a-544f-45ef-a95d-46689a5ec922\" alt=\"Alt Text\" style=\"width:20%; height:auto;\"\u003e\n\nNazara is an experimental Rust program that automates the collection of system information for NetBox, using NetBox's\nAPI. It enables the automatic creation of new machines in NetBox or population of information fields for existing ones.\n\n**Nazara is in the early stages of its development. Please note that the information listed below is subject to change.**\n\n\u003e [!Note]\n\u003e Nazara is currently in a beta state. Bugs are bound to happen. If you encounter any, please [report them](https://github.com/The-Nazara-Project/Nazara/issues).\n\u003e\n\u003e Furthermore, **Nazara currently does not support custom fields for any NetBox object**. Though, this is the next item on our agenda.\n\n- [Compatibility](#compatibility)\n- [Installation](#installation)\n  - [Building from source](#building-from-source)\n  - [Installation via `crates.io`](#installation-via-cratesio)\n- [Usage](#usage)\n- [Configuration](#configuration)\n  - [Configuring via CLI](#configuring-via-cli)\n  - [Configuring via `$HOME/.config/nazara/config.toml` (recommended)](#configuring-via-homeconfignazaraconfigtoml-recommended)\n  - [Configuring custom fields using user plugins](#configuring-custom-fields-using-user-plugins)\n- [Contributing](#contributing)\n- [License](#license)\n\n# Compatibility\n\nWe strive to make sure to stay compatible with the most recent NetBox version. Here you can see which version of Nazara is compatible with which version of NetBox.\nWhen major ports to newer NetBox versions happen - which usually include breaking changes - the old version of Nazara will be moved to its own branch and tagged accordingly.\n\n\n| Nazara Version   | NetBox Version | Branch            | maintained?        |\n| ---------------- | -------------- | ----------------- | ------------------ |\n| `v0.1.0_beta.2`  | `v4.3.x`       | `main`            | :white_check_mark: |\n| `v0.1.0_beta.1`  | `v4.3.x`       | `version/beta-1`  | :x: |\n| `v0.1.0_alpha.2` | `v3.6.x`       | `version/alpha-2` | :x:                |\n\nMaintenance work on these older versions is not planned.\n\n# Installation\n\n## Building from source\n\nTo use Nazara, you will need to have the Rust programming language and `cargo` installed. If you do not have them\ninstalled already, you can follow the instructions provided in the [official Rust documentation](https://www.rust-lang.org/tools/install).\n\n*Please note that this program only works on Linux systems.*\n\nOnce you have everything installed, you can clone this repository and build the program by running the following commands:\n\n```bash\ngit clone https://github.com/The-Nazara-Project/Nazara.git\ncd Nazara\ncargo build --release\n```\n\nThis will create an executable file in the `target/release` directory.\n\n\u003e [!Important]\n\u003e Running Nazara stock will cause it to use our NetBox API reference client library [`thanix_client`](https://github.com/The-Nazara-Project/thanix_client).\n\u003e This client was generated from the API spec of a stock NetBox instance (1.x from NetBox v3.6.9 and 2.x from NetBox 4.1.0).\n\u003e If you encounter API request issues with your NetBox instance, you may need to generate your own using [`Thanix`](https://github.com/The-Nazara-Project/Thanix).\n\n\n## Installation via `crates.io`\n\nNazara is published on `crates.io`. If your operating system permits cargo to install packages globally, simply run `cargo install nazara` to install it.\n\n# Usage\n\nTo use Nazara, you will need to configure the URL of your NetBox API and provide an API token to the program by\nconfiguring all of these parameters inside the [configuration file](#configuring-via-nazaraconfigtomlfile).\n\nAfter that, simply run\n\n```bash\nsudo nazara\n```\n\nin your terminal. Nazara will automatically collect all required system information and decide whether to create a new device, or update an existing entry.\n\n# Configuration\n\nNazara supports two ways of providing configuration parameters: CLI arguments and a configuration file.\n\nNazara accepts these parameters from you:\n\n- `-d, --dry-run`: Print all collected information without committing it to NetBox.\n- `-u, --uri \u003cURI\u003e`: URI to your NetBox instance.\n- `-t, --token \u003cTOKEN\u003e`: Your API authentication token.\n- `-p, --plugin \u003cPLUGIN\u003e`: The path to a plugin script you want to use to fill in custom fields.\n- `-h, --help`: Print help.\n- `-V, --version`: Print version.\n\n## Configuring via CLI\n\nHere is an example for passing these parameters on using the CLI:\n\n```bash\nsudo nazara --uri \u003cAPI_URL\u003e --token \u003cAPI_TOKEN\u003e --name test_device\n```\n\nWhen launching Nazara for the first time, a configuration file will be written at `$HOME/.config/nazara/config.toml`. If you pass CLI parameters, these will be automatically\ntransfered into the config file as well.\n\n## Configuring via `$HOME/.config/nazara/config.toml` (recommended)\n\nNazara's configuration must be located in the root user's home directory at `$HOME/.config/nazara/config.toml`.\n\nWhen launching Nazara for the first time, it will write a stock config file to that path.\nCertain parameters are required to be configured there manually.\nYou recognize them by their line not being commented out.\n\nAside from the NetBox system parameters, configuration` via the `config.toml` also allows you to add certain\ncustom fields to your system information that cannot be automatically selected. A great example would be the\n`System Location` entry. To specify that, simply add the parameter under the `[system]` block in your configuration file.\n\n\u003e [!Note]\n\u003e Currently, configuration by config file is the proper way to use Nazara given the amount of data required to register a machine.\n\u003e We are investigating possibilities to make this less of a hassle.\n\u003e In the meantime, we suggest you copy-paste the config between machines of the same type and function.\n\nFor an example config, check out `src/configuration/config_template.toml`\n\n*Please note that the following section is still a work in progress and all information is subject to change.*\n\n## Configuring custom fields using user plugins\n\nUsers are able to fill `custom_fields` parameters in their NetBox objects using custom bash scripts.\nThese scripts should be placed inside the `$HOME/.config/nazara/scripts/` directory.\n\nThese scripts can collect the desired information and output *a valid JSON representation* to `stdout`.\nNazara then reads this output, validates it, and attempts to parse it to a `HashMap` of values.\n\nIf everything works out, this will populate all of your custom fields no matter what fields you specified, as long as your script\nis correct.\n\n\u003e [!Warning]\n\u003e Users must make sure that the output of their scripts matches the name of their desired custom fields they specified\n\u003e in NetBox.\n\u003e\n\u003e Currently, **we only support text fields** as all the other field types would require smart parsing on our end.\n\u003e We are currently investigating on how to achieve this.\n\n# Contributing\n\nIf you would like to contribute to Nazara, feel free to check the [contributing guide](./CONTRIBUTING.md) for\ninformation on our workflow and check the issues section for any open issue.\n\n# License\n\nNazara is released under the terms of the [GPL-v3.0](./LICENSE).\n\nBy submitting a contribution to The Nazara Project, you agree that your contribution shall be licensed under the\nsame license(s) as the project at the time of contribution.\n\nYou also grant the project maintainers the right to relicense the project, including your contribution, under any\nfuture version of those license(s), or under any other license that is free and open source software (FOSS) and\ncompatible with the current license(s).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthe-nazara-project%2Fnazara","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthe-nazara-project%2Fnazara","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthe-nazara-project%2Fnazara/lists"}