# Installation and setup

Developed, tested and used in production on Ubuntu 18.04

## Install dependies

### DNSMGR

Checkout code

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.

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

Test