Metadata-Version: 2.2
Name: netbox-pve-sync
Version: 0.1.1
Summary: Synchronize Proxmox Virtual Environment (PVE) information to a NetBox instance
Author-email: Aloïs Micard <alois@micard.lu>
Project-URL: Homepage, https://git.creekorful.cloud/creekorful/netbox-pve-sync
Project-URL: Issues, https://git.creekorful.cloud/creekorful/netbox-pve-sync/issues
Project-URL: Changelog, https://git.creekorful.cloud/creekorful/netbox-pve-sync/src/branch/main/Changelog.md
Classifier: Programming Language :: Python :: 3
Classifier: Operating System :: OS Independent
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE.txt
Requires-Dist: pynetbox>=7.4
Requires-Dist: proxmoxer>=2.2
Requires-Dist: requests>=2.32

# netbox-pve-sync

Synchronize Proxmox Virtual Environment (PVE) information to a NetBox instance.
This allows automatic tracking of Virtual Machines, disks, IP addresses/prefixes, MAC addresses, VLANs, ...

## How does it work?

This script work by pulling VMs information from the PVE API and create/update/delete resources on NetBox.

## Installation

## Configuration

### On NetBox

You'll need to create a dedicated user (ex: netbox-pve-sync) on your NetBox instance and then create a write API
token.

The following env variables will need to be set:

- **NB_API_URL**: The URL to your NetBox instance. (ex: https://netbox.example.org)
- **NB_API_TOKEN**: The token created previously. (ex: f74cb99cf552b7005fd1a616b53efba2ce0c9656)

You'll also need to perform a minimal configuration on NetBox:

- Create the physical nodes hosting the cluster. (The name should match the one on Proxmox, so that the script can
  correctly link the VMs to the physical host)
- Create the cluster.
- Add the following Custom Fields:

| Name      | Object types    | Label     | Type    |
|-----------|-----------------|-----------|---------|
| autostart | Virtual Machine | Autostart | Boolean |
| backup    | Virtual Disk    | Backup    | Boolean |
| dns_name  | Prefix          | DNS Name  | Text    |

### On the PVE API

You'll need to create a dedicated user (ex: netsync) on your PVE cluster and then create an API token.

The user needs to have access to the VM.Monitor, Pool.Audit, VM.Audit permissions.

The following env variables will need to be set:

- **PVE_API_HOST**: The DNS/IP to your PVE instance. (ex: 10.10.0.10)
- **PVE_API_USER**: The username of the account created previously. (ex: netsync@pve)
- **PVE_API_TOKEN**: The name of the API token created previously. (ex: test-token)
- **PVE_API_SECRET**: The API token created previously (ex: 4d46dc0a-6363-47a2-98df-d5cdfefa33d2)

## Executing the script

You can then execute the script using the following command:

```
PVE_API_HOST=xx PVE_API_USER=xx PVE_API_TOKEN=xx PVE_API_SECRET=xx NB_API_URL=xx NB_API_TOKEN=xx python3 -m netbox_pve_sync
```
