This commit is contained in:
Hedde van der Heide
2022-05-03 15:19:55 +02:00
2 changed files with 56 additions and 49 deletions
+2 -2
View File
@@ -4,10 +4,10 @@ Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
You may obtain a copy of the License at You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0 http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
+54 -47
View File
@@ -1,26 +1,29 @@
Software Lifecycle Management <h1 align="center">NetBox SLM</h1>
-----------------------------
*Netbox Plugin for lifecycle management of software components, including versions and installations* <p align="center"><i>Netbox SLM is a plugin for lifecycle management of software components, including versions and installations.</i></p>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-------------- <div align="center">
<a href="https://pypi.org/project/netbox_slm/"><img src="https://img.shields.io/pypi/v/netbox_slm" alt="PyPi"/></a>
<a href="https://github.com/ICTU/netbox_slm/stargazers"><img src="https://img.shields.io/github/stars/ICTU/netbox_slm" alt="Stars Badge"/></a>
<a href="https://github.com/ICTU/netbox_slm/network/members"><img src="https://img.shields.io/github/forks/ICTU/netbox_slm" alt="Forks Badge"/></a>
<a href="https://github.com/ICTU/netbox_slm/pulls"><img src="https://img.shields.io/github/issues-pr/ICTU/netbox_slm" alt="Pull Requests Badge"/></a>
<a href="https://github.com/ICTU/netbox_slm/issues"><img src="https://img.shields.io/github/issues/ICTU/netbox_slm" alt="Issues Badge"/></a>
<a href="https://github.com/ICTU/netbox_slm/graphs/contributors"><img alt="GitHub contributors" src="https://img.shields.io/github/contributors/ICTU/netbox_slm?color=2b9348"></a>
<a href="https://github.com/ICTU/netbox_slm/blob/master/LICENSE"><img src="https://img.shields.io/github/license/ICTU/netbox_slm?color=2b9348" alt="License Badge"/></a>
</div>
## Known Issues
Known Issues
~~~~~~~~~~~~~~~~~~
- WARNING: This plugin is only tested with Netbox 3.2 at this time. - WARNING: This plugin is only tested with Netbox 3.2 at this time.
- CSV/Bulk imports for SoftwareProduct, Version and Installation are currently broken (WIP) - CSV/Bulk imports for SoftwareProduct, Version and Installation are currently broken (WIP)
Installation Guide ## Installation Guide
~~~~~~~~~~~~~~~~~~
When using the Docker version of Netbox, first follow the `netbox-docker When using the Docker version of Netbox, first follow the netbox-docker [quickstart](https://github.com/netbox-community/netbox-docker#quickstart) instructions to clone the netbox-docker repo and set up the ``docker-compose.override.yml``.
quickstart <https://github.com/netbox-community/netbox-docker#quickstart>`__
instructions to clone the netbox-docker repo and set up the
``docker-compose.override.yml``.
Next, follow these instructions (based on the `Netbox docker variant Next, follow these instructions (based on the Netbox docker variant
instructions <https://github.com/netbox-community/netbox-docker/wiki/Configuration#custom-configuration-files>`__) [instructions](https://github.com/netbox-community/netbox-docker/wiki/Configuration#custom-configuration-files))
to install the Netbox SLM plugin: to install the Netbox SLM plugin:
1. Add ``netbox_slm`` to the ``PLUGINS`` list in 1. Add ``netbox_slm`` to the ``PLUGINS`` list in
@@ -29,17 +32,16 @@ to install the Netbox SLM plugin:
contents. contents.
3. Create a ``Dockerfile-SLM`` with contents: 3. Create a ``Dockerfile-SLM`` with contents:
.. code:: dockerfile ```
FROM netboxcommunity/netbox:v3.2.X FROM netboxcommunity/netbox:v3.2.X
COPY ./plugin_requirements.txt / COPY ./plugin_requirements.txt /
RUN /opt/netbox/venv/bin/pip install --no-warn-script-location -r /plugin_requirements.txt RUN /opt/netbox/venv/bin/pip install --no-warn-script-location -r /plugin_requirements.txt
```
4. Create a ``docker-compose.override.yml`` with contents: 4. Create a ``docker-compose.override.yml`` with contents:
.. code:: yaml ```
version: '3.4' version: '3.4'
services: services:
netbox: netbox:
@@ -53,24 +55,24 @@ to install the Netbox SLM plugin:
image: netbox:slm image: netbox:slm
netbox-housekeeping: netbox-housekeeping:
image: netbox:slm image: netbox:slm
```
Now, build the image: ``docker compose build --no-cache`` Now, build the image: ``docker compose build --no-cache``
And finally, run Netbox with the SLM plugin: ``docker compose up`` And finally, run Netbox with the SLM plugin: ``docker compose up``
Releasing Guide ## Releasing Guide
~~~~~~~~~~~~~~~
To draft a release; To draft a release;
update the setup.py file to reflect the new version, then from the *src* update the setup.py file to reflect the new version, then from the *src*
directory run directory run
:: ```
# make sure to update the version in netbox_slm/__init__.py # make sure to update the version in netbox_slm/__init__.py
$ python setup.py sdist $ python setup.py sdist
$ twine upload dist/* $ twine upload dist/*
```
On Github.com create a similar tag and version. These steps could be On Github.com create a similar tag and version. These steps could be
automated with a github workflow. automated with a github workflow.
@@ -78,77 +80,82 @@ automated with a github workflow.
n.b. Currently the plugin is configured to use a personal pypi account, n.b. Currently the plugin is configured to use a personal pypi account,
this should be changed. this should be changed.
Developer Guide (local installation) ## Developer Guide (local installation)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*Follow the steps below on your local system to run netbox and the *Follow the steps below on your local system to run netbox and the
netbox_slm plugin in developer mode* netbox_slm plugin in developer mode*
Setup ### Setup
~~~~~
The goal below is to run all Netbox components in Docker and run a local The goal below is to run all Netbox components in Docker and run a local
Netbox Django copy with auto-reload to develop the plugin pointing to Netbox Django copy with auto-reload to develop the plugin pointing to
the Dockerized postgres and redis instances, basically ignoring the the Dockerized postgres and redis instances, basically ignoring the
netbox docker runtime server. netbox docker runtime server.
Steps ### Steps
~~~~~
::
from your projects directory clone the netbox repository from your projects directory clone the netbox repository
```
$ git clone https://github.com/netbox-community/netbox $ git clone https://github.com/netbox-community/netbox
$ cd netbox $ cd netbox
```
install the virtual environment install the virtual environment
```
$ pipenv shell $ pipenv shell
$ pipenv install $ pipenv install
```
create and edit netbox/configuration.py (based on the template file) add these lines at the end of the file; create and edit netbox/configuration.py (based on the template file) add these lines at the end of the file;
```
DEBUG = True DEBUG = True
SECRET_KEY = 'dummy' SECRET_KEY = 'dummy'
DEVELOPER = True DEVELOPER = True
PLUGINS = [ PLUGINS = [
'netbox_slm', 'netbox_slm',
] ]
```
The Netbox installation above will be used to run Django management The Netbox installation above will be used to run Django management
commands like runserver, makemigrations and migrate, which will be commands like runserver, makemigrations and migrate, which will be
explained in the next steps below; explained in the next steps below;
::
from your projects directory clone the netbox-slm repository from your projects directory clone the netbox-slm repository
```
$ git clone https://github.com/ICTU/netbox_slm $ git clone https://github.com/ICTU/netbox_slm
$ cd netbox_slm $ cd netbox_slm
$ ./start-netbox.sh $ ./start-netbox.sh
```
This will start Netbox locally (requires Docker) and forward the redis This will start Netbox locally (requires Docker) and forward the redis
and postgres ports to the localhost (make sure theres no processes and postgres ports to the localhost (make sure theres no processes
using these ports or change the dockerfiles accordingly) using these ports or change the dockerfiles accordingly)
Note, you can also start and stop netbox by hand: Note, you can also start and stop netbox by hand:
:: ```
$ cd netbox-docker $ cd netbox-docker
$ docker-compose up -d $ docker-compose up -d
```
or stop the stack with or stop the stack with
```
$ docker-compose down $ docker-compose down
```
# to start fresh: # to start fresh:
```
$ docker-compose down $ docker-compose down
$ docker volume rm netbox-docker_netbox-postgres-data # et cetera $ docker volume rm netbox-docker_netbox-postgres-data # et cetera
$ docker-compose up -d --force-recreate $ docker-compose up -d --force-recreate
```
this will require you to re-run the migrate commando's for netbox-slm, see further down below this will require you to re-run the migrate commando's for netbox-slm, see further down below
Go back to the netbox configuration.py file and update the postgres and Go back to the netbox configuration.py file and update the postgres and
@@ -156,8 +163,7 @@ redis connection strings (username, password) to the ones the netbox
docker backend is using, for example (using default user and passwords docker backend is using, for example (using default user and passwords
from the netbox docker example): from the netbox docker example):
:: ```
<<collapsed>> <<collapsed>>
# PostgreSQL database configuration. See the Django documentation for a complete list of available parameters: # PostgreSQL database configuration. See the Django documentation for a complete list of available parameters:
@@ -204,15 +210,16 @@ from the netbox docker example):
} }
<<collapsed>> <<collapsed>>
```
Now you can run commands from the netbox repository like this; Now you can run commands from the netbox repository like this;
:: ```
$ cd netbox/netbox $ cd netbox/netbox
$ export PYTHONPATH=../../netbox_slm/netbox_slm/ # or with the pipenv activated run `python3 setup.py develop` from the netbox_slm directory $ export PYTHONPATH=../../netbox_slm/netbox_slm/ # or with the pipenv activated run `python3 setup.py develop` from the netbox_slm directory
$ python3 manage.py migrate netbox_slm $ python3 manage.py migrate netbox_slm
$ python3 manage.py runserver 8001 $ python3 manage.py runserver 8001
```
Visit http://127.0.0.1:8001 in the browser to see the auto reloading Visit http://127.0.0.1:8001 in the browser to see the auto reloading
version of the netbox UI. Port 8000 is taken by the docker ran variant. version of the netbox UI. Port 8000 is taken by the docker ran variant.