diff --git a/Dockerfile b/Dockerfile index 96e6646..14c189e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,20 +4,25 @@ FROM python:3.9-slim-bullseye RUN apt-get update && apt-get -y upgrade && apt-get install -y git-core # Prepare the application -COPY . /opt -RUN cd /opt && \ - pip3 install --upgrade pip setuptools && \ +COPY . /app + +# disable upgrading setup tools due to bug in setuptools and automation sdk +# once this is fixed, switch back to: pip3 install --upgrade pip setuptools +RUN cd /app && \ + pip3 install --upgrade pip && \ + pip3 install --force-reinstall 'setuptools==60.10.0' && \ pip3 install -r requirements.txt && \ pip3 install --upgrade git+https://github.com/vmware/vsphere-automation-sdk-python.git # Run the application -WORKDIR /opt +WORKDIR /app RUN set -eux; \ addgroup --gid 1000 netbox-sync; \ - adduser --uid 1000 --ingroup netbox-sync --shell /bin/sh --home /home/netbox-sync --disabled-password netbox-sync + adduser --uid 1000 --ingroup netbox-sync --shell /bin/sh --home /home/netbox-sync --disabled-password \ + --gecos "netbox-sync,0815,2342,9001" netbox-sync -RUN chown -R netbox-sync:netbox-sync /opt +RUN chown -R netbox-sync:netbox-sync /app USER netbox-sync diff --git a/README.md b/README.md index 128f128..fe4e589 100644 --- a/README.md +++ b/README.md @@ -49,18 +49,18 @@ This ensures stale objects are removed from NetBox keeping an accurate current s ## RedHat based OS * on RedHat/CentOS 7 you need to install python3.6 and pip from EPEL first * on RedHat/CentOS 8 systems the package name changed to `python3-pip` -``` +```shell yum install python36-pip ``` ## Ubuntu 18.04 & 20.04 -``` +```shell apt-get update && apt-get install python3-venv ``` ## Clone repo and install dependencies * download and setup of virtual environment -``` +```shell cd /opt git clone https://github.com/bb-Ricardo/netbox-sync.git cd netbox-sync @@ -72,34 +72,41 @@ pip3 install -r requirements.txt || pip install -r requirements.txt ### VMware tag sync (if necessary) The `vsphere-automation-sdk` must be installed if tags should be synced from vCenter to NetBox * assuming we are still in an activated virtual env -``` +```shell pip install --upgrade pip setuptools pip install --upgrade git+https://github.com/vmware/vsphere-automation-sdk-python.git ``` ## Docker -Run the application in docker container +Run the application in a docker container. You can build it yourself or use the ones from docker hub. -* The application working directory is ```/opt``` +Available here: bbricardo/netbox-sync + +* The application working directory is ```/app``` * Required to mount your ```settings.ini``` +To build it by yourself just run: +```shell +docker build -t bbricardo/netbox-sync:latest . ``` -docker build -t netbox-sync . -docker run --rm -it -v $(pwd)/settings.ini:/opt/settings.ini netbox-sync [some args...] + +To start the container just use: +```shell +docker run --rm -it -v $(pwd)/settings.ini:/app/settings.ini bbricardo/netbox-sync:latest ``` ## Kubernetes Run the containerized application in a kubernetes cluster - * Build the container image following the docker instructions above + * Build the container image * Tag and push the image to a container registry you have access to * Create a secret from the settings.ini * Update the image field in the manifest * Deploy the manifest to your k8s cluster and check the job is running - ``` + ```shell docker build -t netbox-vsphere-sync . docker image tag netbox-vsphere-sync your-registry.host/netbox-vsphere-sync:v1.2.0 docker image push your-registry.host/netbox-vsphere-sync:v1.2.0 diff --git a/netbox-vsphere-sync-cronjob.yaml b/netbox-vsphere-sync-cronjob.yaml index 2f16dac..6ed1dcf 100644 --- a/netbox-vsphere-sync-cronjob.yaml +++ b/netbox-vsphere-sync-cronjob.yaml @@ -12,11 +12,11 @@ spec: spec: containers: - name: netbox-vsphere-sync - image: your.container.registry/netbox-vsphere-sync:v1.2.0 + image: bbricardo/netbox-sync:latest imagePullPolicy: IfNotPresent volumeMounts: - name: netbox-vsphere-sync - mountPath: /opt/settings.ini + mountPath: /app/settings.ini subPath: settings.ini volumes: - name: netbox-vsphere-sync