# Installation and setup
Developed, tested and used in production on Ubuntu 18.04
## Install dependies
### DNSMGR
Checkout code
cd /opt git clone https://github.com/abundo/dnsmgr.git
Copy configuration template
mkdir /etc/dnsmgr cd /opt/dnsmgr todo
### postgresql, as docker
cd /opt mkdir postgresql-docker cd postgresql-docker
Create a file docker-compose.yaml
— version: ‘3.1’ services:
- db:
image: postgres:12.4 ports: - “5432:5432” restart: unless-stopped environment:
POSTGRES_DB: control POSTGRES_USER: control POSTGRES_PASSWORD: <secret password>
- volumes:
“./pgdata:/var/lib/postgresql/data”
- adminer:
image: adminer restart: unless-stopped ports: - 8181:8080
Pull and start postgresql
docker-compose up -d
### rabbitmq, as docker instance
Create directory
cd /opt mkdir rabbitmq-docker cd rabbitmq-docker
Create a file docker-compose.yaml
— version: ‘3.1’ services:
- rabbitmq:
image: rabbitmq:3-management-alpine hostname: rabbitmq environment:
RABBITMQ_ERLANG_COOKIE: “<todo insert secret cookie>” RABBITMQ_DEFAULT_USER: “rabbitmquser” RABBITMQ_DEFAULT_PASS: “rabbitmqpass” RABBITMQ_DEFAULT_VHOST: “/”
ports: - “5672:5672” - “15672:15672” restart: unless-stopped
Start rabbitmq
docker-compose up -d
Create user and set permission
docker-compose exec rabbitmq bash rabbitmqctl add_user abcontrol <passwd> rabbitmqctl set_permissions -p / abcontrol “.*’ “.*” “.*”
### Install netbox
Todo
### Install Icinga
Use the netbox-docker image.
cd /opt mkdir netbox git clone https://github.com/netbox-community/netbox-docker.git
Add custom fields needed for abcontrol
## Install abcontrol
sudo apt-get install python3-venv
cd /opt python3 -m venv abcontrol cd abconttrol source bin/activate
cd /opt git clone <todo> https://github.com/xxxx
cd /opt/abottols pip3 install -r requirements.txt
# Deployment
All functions can be run on the same server, or distributed on two or multiple servers, using rabbitmq for communication.
## Create directories and adjust permissions
sudo mkdir /etc/abcontrol sudo chown anders /etc/dnsmgr cp /opt/dnsmgr/records-example.com records
## Activate services
copy systemd definitions
activate services
## Test
Todo
# Docker
Todo
Installation, configuration
Here is the installation described
Install
cli:
sudo apt-get install python3-venv
cd /opt
git clone
create python virtual environment:
cd /opt
python3 -m venv abcontrol
Checkout abcontrol code
cd /opt git clone https://github.com/<todo>
Activate python virtual environment and install dependencies:
cd /opt/abcontrol
source bin/activate
pip3 install -r requirements.txt
Post-install
Create log directory:
mkdir /var/log/abcontrol
setfacl -R -m u:www-data:rwX /var/log/abcontrol
setfacl -d -R -m u:www-data:rwX /var/log/abcontrol
Create work directory:
mkdir /var/lib/abcontrol
setfacl -R -m u:www-data:rwX /var/lib/abcontrol
setfacl -d -R -m u:www-data:rwX /var/lib/abcontrol
Set pythonpath, edit /etc/profile and add at the end (do we need this? it is ugly):
PYTHONPATH=/opt
Rebuild documentation:
cd /opt/abtools/docs
make html
Create link to abcontrol:
ln -s /opt/abcontrol/app/tools/abcontrol/abcontrol.sh /usr/bin/abcontrol
postgresql, as docker
create directory for postgresql:
cd /opt
mkdir postgresql-docker
Create file /opt/postgresql-docker/docker-compose.yaml:
version: '3.1'
services:
db:
image: postgres:12.4
ports:
- "5432:5432"
restart: unless-stopped
environment:
POSTGRES_DB: control
POSTGRES_USER: control
POSTGRES_PASSWORD: <password>
volumes:
- "./pgdata:/var/lib/postgresql/data"
adminer:
image: adminer
restart: always
ports:
- 8181:8080
Start postgresql:
cd /opt/postgresql-docker
docker-compose up -d
rabbitmq, message bus
Todo: change to docker image
Create directory for rabbitmq:
cd /opt
mkdir rabbitmq-docker
Create user and set permission:
rabbitmqctl add_user abcontrol <password>
rabbitmqctl set_permissions -p / abcontrol ".*' ".*" ".*"
DNSMGR
cli:
cd /opt
git clone https://github.com/abundo/dnsmgr
cp /opt/dnsmgr/records-example.com records
Configuration netbox
Add custom fields
Optionally, add webhook, so changes will propagate faster
Deployment
All functions can be run on the same server, or distributed using rabbitmq as the glue between the servers
Activate services
copy systemd definitions
activate services