DIRBS Core Release 8.0.0 Installation Guide

DIRBS_Installation_Guide

User Manual:

Open the PDF directly: View PDF PDF.
Page Count: 14

Qualcomm Technologies, Inc.
Copyright (c) 2018 Qualcomm Technologies, Inc.
This work is licensed under a Creative Commons Attribution-NoDerivatives 4.0
International License.
DIRBS Core Release 8.0.1
Installation Guide
80-GD079-1 Rev. D
July 30, 2018
80-GD079-1 Rev. D Copyright (c) 2018 Qualcomm Technologies, Inc. 2
This work is licensed under a Creative Commons Attribution-NoDerivatives 4.0 International License.
Revision history
Revision
Date
Description
A
November 2017
Initial release
B
April 2018
Updates for DIRBS 7.0.0 Release
C
May 2018
Updates for DIRBS 8.0.0 Release
D
July 2018
Updates for DIRBS 8.0.1 Release
80-GD079-1 Rev. D Copyright (c) 2018 Qualcomm Technologies, Inc. 3
This work is licensed under a Creative Commons Attribution-NoDerivatives 4.0 International License.
Contents
1 Introduction ........................................................................................................................... 4
1.1 Purpose ..................................................................................................................................................... 4
1.2 Getting started ........................................................................................................................................... 4
2 Installation ............................................................................................................................. 5
2.1 Extracting software release ........................................................................................................................ 5
2.2 Docker installation...................................................................................................................................... 5
2.2.1 Building Docker images ............................................................................................................ 5
2.2.2 Running Docker images ........................................................................................................... 5
2.3 Advanced topics......................................................................................................................................... 7
2.3.1 API and Data Processing blades .............................................................................................. 7
2.3.2 Operator Upload and Data Processing blades ......................................................................... 8
2.4 Database ................................................................................................................................................... 8
2.4.1 Installation ................................................................................................................................ 8
2.4.2 Upgrading the database schema ............................................................................................ 11
3 Configuration .......................................................................................................................12
4 Installation Verification ........................................................................................................13
4.1 Running the automated regression test suite ........................................................................................... 13
4.2 Checking status of the database version ................................................................................................. 14
Tables
Table 2-1 Roles and functions ..................................................................................................................................... 10
80-GD079-1 Rev. D Copyright (c) 2018 Qualcomm Technologies, Inc. 4
This work is licensed under a Creative Commons Attribution-NoDerivatives 4.0 International License.
1 Introduction
1.1 Purpose
This document provides:
Installation instructions for the Device, Identification, Registration, and Blocking System
(DIRBS) Core 8.0.0 software
Instructions for running automated tests to verify DIRBS Core installation
1.2 Getting started
The instructions provided in this document assume that the recommended equipment has been
installed and configured with Ubuntu 16.04. Refer to the Ubuntu Installation Guide for additional
installation help.
The installer should be familiar with Linux command line.
80-GD079-1 Rev. D Copyright (c) 2018 Qualcomm Technologies, Inc. 5
This work is licensed under a Creative Commons Attribution-NoDerivatives 4.0 International License.
2 Installation
This installation guide builds a new Docker image by downloading a base Ubuntu 16.04 image
and downloading and installing required third party software modules into the image as a
convenience to the end user.
NOTE: The reader acknowledges and agrees that it is entirely and solely responsible for the selection and
use of all third-party software modules downloaded and installed by this installation method,
including securing all appropriate and proper rights of use to any of such third-party software
modules and to comply fully with any terms of use that may apply to or accompany any such
third-party software modules.
Qualcomm Technologies, Inc. does not undertake any obligations, duties, or other responsibilities
in connection with the selection or use by the reader of any of such third-party software modules.
2.1 Extracting software release
The DIRBS software release is distributed as a tar.gz file. To extract the contents of the
distribution, run:
tar xvzf dirbs-8.0.0.tar.gz
2.2 Docker installation
Docker installation can be run on any platform Docker supports.
For instructions on installing Docker on a specific host platform, see
https://docs.docker.com/engine/installation
2.2.1 Building Docker images
If you are in the root folder for the distributables, run the following command to build all sample
Docker images:
make -f docker/prd/Makefile
2.2.2 Running Docker images
This section shows basic commands that run each type of container, assuming the config file
contained all settings at the time the config file was built.
DIRBS Core Release 8.0.1 Installation Guide Installation
80-GD079-1 Rev. D Copyright (c) 2018 Qualcomm Technologies, Inc. 6
This work is licensed under a Creative Commons Attribution-NoDerivatives 4.0 International License.
2.2.2.1 Data Processing blade image
After Docker images have been built, start the Data Processing blade image by running:
docker run --rm --tmpfs /tmp -e DIRBS_OPERATORS=<operator_list> -p 2222:22
\dirbs-processing
This docker run command uses the following standard Docker options:
-rm: Instructs Docker to remove the container from the system once it has been stopped.
--tmpfs: Mounts a temporary filesystem (tmpfs) to /tmp in the container. Used during the
lifetime of the container.
e: Sets an environment variable inside the container.
-p 2222:22: Maps the SSH port (22) inside the container to port 2222 on the host system.
2.2.2.2 Operator Upload blade image
After Docker images have been built, start the Operator Upload blade image by running
docker run --rm --tmpfs /tmp -e DIRBS_OPERATORS=<operator_list> -p 2222:22
dirbs-upload
This docker run command uses the following standard Docker options:
-rm: Instructs Docker to remove the container from the system once it has been stopped.
--tmpfs: Mounts a temporary filesystem (tmpfs) to /tmp in the container. Used during the
lifetime of the container.
e: Sets an environment variable inside the container.
-p 2222:22: Maps SSH port (22) inside the container to port 2222 on the host system.
<operator_list> should be a comma-separated list of operator IDs that match the list of
operators configured in the config file.
2.2.2.3 API blade image
After Docker images have been built, start the API blade image by running
docker run --sysctl net.core.somaxconn=4096 --rm --tmpfs /tmp -p 5000:5000
dirbs-api
sysctl: Modifies the kernel settings on the blade to specify the number of connections
that can be waiting in a queue on an individual socket.
-rm: Instructs Docker to remove the container from the system once it has been stopped.
--tmpfs: Mounts a temporary filesystem (tmpfs) to /tmp in the container. Used during the
lifetime of the container.
-p 5000:5000: Maps webserver port (5000) inside the container to port 5000 on the host
system.
DIRBS Core Release 8.0.1 Installation Guide Installation
80-GD079-1 Rev. D Copyright (c) 2018 Qualcomm Technologies, Inc. 7
This work is licensed under a Creative Commons Attribution-NoDerivatives 4.0 International License.
2.3 Advanced topics
2.3.1 API and Data Processing blades
2.3.1.1 Mounting a config file inside a container
To mount a config file from the host into the Data Processing and API blade containers so that
DIRBS configuration can be modified after build time, use the following option to the docker
run command for those images:
-v <abs_path_to_config_on_host.yml>:/home/dirbs/.dirbs.yml:ro
This option mounts the file located at abs_path_to_config_on_host.yml to
/home/dirbs/.dirbs.yml inside the container. This will be read-only inside the container.
Changes made on the host will be reflected inside the container.
2.3.1.2 Mounting a .pgpass file inside a container
While database credentials can be edited directly inside the /home/dirbs/.dirbs.yml file, a
.pgpass file (standard PostgreSQL connection string file) can be mounted inside the container as
well.
Advantages are:
The person responsible for editing the config YML does not automatically get access to DB
credentials.
A .pgpass file can configure a password for multiple users, not just one.
Use the following option to the docker run command for the Data Processing and API blade
containers:
-v <abs_pgpass_file_on_host>:/home/dirbs/.pgpass:ro
This option mounts the file located at abs_pgpass_file_on_host.yml to
/home/dirbs/.pgpass inside the container. This will be read-only inside the container.
NOTE: The .pgpass file will be ignored if UNIX file permissions are not stricter than 0700.
2.3.1.3 Passing in environment variables for StatsD and PostgreSQL connection
If set, the following environment variables override configuration file settings. If there is a
command-line argument specified, this continues to override environment variables:
DIRBS_DB_HOST: Host that PostgreSQL database runs on (default: localhost)
DIRBS_DB_PORT: Port that PostgreSQL database runs on (default: 5432)
DIRBS_DB_DATABASE: PostgreSQL database name to connect to
DIRBS_DB_USER: PostgreSQL user to connect as
DIRBS_DB_PASSWORD: PostgreSQL password for DIRBS_DB_USER
DIRBS_STATSD_HOST: Host that StatsD run on (default: localhost)
DIRBS_STATSD_PORT: Port that StatsD listens on (default: 8125)
DIRBS Core Release 8.0.1 Installation Guide Installation
80-GD079-1 Rev. D Copyright (c) 2018 Qualcomm Technologies, Inc. 8
This work is licensed under a Creative Commons Attribution-NoDerivatives 4.0 International License.
DIRBS_ENV: Unique environment string used by StatsD to distinguish between different hosts
or environments when sending metrics
The values of these environment variables can be passed through to Docker containers in two
ways:
Populate a file with a list of the above KEY=VALUE lines
This file can then be passed to the docker run command via the --env-file
command-line option
Specify each key-value pair on the docker run command-line using the -e command-line
option
2.3.1.4 Mounting a persistent log directory
To ensure that logs are persisted between container restarts, the following CLI option should be
provided to docker run:
-v <abs_log_dir_on_host>:/var/log/dirbs
This option mounts the host directory located at abs_log_dir_on_host to /var/log/dirbs in
the container.
2.3.2 Operator Upload and Data Processing blades
2.3.2.1 Mounting a persistent data directory
For Operator Upload and Data Processing blades, the data directory should be persistent between
container restarts.
To ensure this is the case, a host directory can be mounted into the container using the following
CLI option to docker run:
-v <abs_data_dir_on_host>:/data
This option mounts the host directory located at abs_data_dir_on_host to /data in the
container.
2.4 Database
2.4.1 Installation
NOTE: Creating a new database from scratch assumes that you are already running a PostgreSQL
instance.
1. Install PostgreSQL HLL extension
DIRBS Core requires the PostgreSQL HLL extension to function.
If using our provided Docker image for PostgreSQL, it is already installed.
If on RDS in AWS, this extension should also be optionally available.
Otherwise, you must build and install the extension (see README in the GitHub repo).
DIRBS Core Release 8.0.1 Installation Guide Installation
80-GD079-1 Rev. D Copyright (c) 2018 Qualcomm Technologies, Inc. 9
This work is licensed under a Creative Commons Attribution-NoDerivatives 4.0 International License.
2. Create a PostgreSQL role with superuser privileges
If you are using the provided Docker image for PostgreSQL, the environment variables
DB_ROOT_USER and DB_ROOT_PASSWORD can be used the first time the container is started to
automatically create a superuser account.
If you would rather not supply these environment variables, are not using our Docker image,
or have an existing PostgreSQL database server, the following SQL command can be run as a
superuser to create an appropriate role:
CREATE ROLE <username> WITH SUPERUSER LOGIN ENCRYPTED PASSWORD
'<password>';
This account should only be used to create databases and new roles. It is necessary to be a
superuser account as the HLL extension cannot be created in a new database by a non-
superuser. It should not be used as a general account given the privileges granted to it.
3. Install base roles
After creating a superuser, create the base roles that DIRBS requires. These are all marked
NOLOGIN, meaning it is not possible to login as these roles they are just abstract roles that
can be GRANT'ed to real users with LOGIN privilege.
These roles must exist before the database can be created or installed.
a. Run the following command on the DIRBS processing blade:
dirbs-db --db-user <username> --db-password-prompt install_roles
where <username> is the name of the superuser created in Step 2.
You will be prompted for your password.
Since this is a high privilege database account and this is a one-off command, it is more
secure to enter the password manually via the prompt than to store it in a config file.
4. Create an empty database
Ownership of the database is important as we must ensure that every power user has rights to
do everything, rather than just the user creating the DB.
To create an empty database owned by dirbs_core_power_user role:
a. Use the psql command to login to the postgres database on the PostgreSQL server
using the superuser role created in Step 2.
b. Run the following SQL command to create the empty database:
CREATE DATABASE <database_name> OWNER dirbs_core_power_user;
c. Connect to the new database using the following command in psql:
\c <database_name>
d. Run the following SQL commands to install the HLL extension in the new database:
CREATE SCHEMA hll;
GRANT USAGE ON SCHEMA hll TO dirbs_core_base;
CREATE EXTENSION hll SCHEMA hll;
DIRBS Core Release 8.0.1 Installation Guide Installation
80-GD079-1 Rev. D Copyright (c) 2018 Qualcomm Technologies, Inc. 10
This work is licensed under a Creative Commons Attribution-NoDerivatives 4.0 International License.
5. Create user accounts
With an empty database, we can create user accounts while still logged into the PostgreSQL
database as the superuser. This can also be done later.
e. Create an initial power user (can do everything):
CREATE USER <username> WITH LOGIN ENCRYPTED PASSWORD '<password>' IN
ROLE dirbs_core_power_user;
Optionally, extra users with lower privileges can be created to perform specific tasks with
minimum required privileges:
CREATE USER <username> WITH LOGIN ENCRYPTED PASSWORD '<password>' IN
ROLE <role_name>;
Roles can be GRANT'ed or REVOKE'd after user creation:
GRANT <role_name> TO <username>;
REVOKE <role_name> FROM <username>;
Table 2-1 provides a complete list of roles and their functions.
Table 2-1 Roles and functions
Role
Function
dirbs_core_api
Runs REST-ful APIs
dirbs_core_catalog
Runs dirbs-catalog
dirbs_core_classify
Runs dirbs-classify
dirbs_core_import_golden_list
Runs dirbs-import golden_list
dirbs_core_import_gsma
Runs dirbs-import gsma_tac
dirbs_core_import_operator
Runs dirbs-import operator
dirbs_core_import_pairing_list
Runs dirbs-import pairing_list
dirbs_core_import_registration_list
Runs dirbs-import
registration_list
dirbs_core_import_stolen_list
Runs dirbs-import stolen_list
dirbs_core_listgen
Runs dirbs-listgen
dirbs_core_poweruser
Can do everything (only user that can do
dirbs-db and dirbs-prune)
dirbs_core_report
Runs dirbs-report
A user can be in multiple roles. To see a list of which users are on the system and which
roles they have, we recommend using the psql command \du to view the list of database
users.
6. Install a schema
Once user accounts have been created and the connection details configured for DIRBS,
install the DB schema:
dirbs-db --db-user <username_of_power_user> --db-password-prompt install
NOTE: This DB user should be the power user created in Step 5a and not the superuser created in Step 2
for security reasons. We do not recommend storing passwords for power users in config files or
environment variables for additional security.
DIRBS Core Release 8.0.1 Installation Guide Installation
80-GD079-1 Rev. D Copyright (c) 2018 Qualcomm Technologies, Inc. 11
This work is licensed under a Creative Commons Attribution-NoDerivatives 4.0 International License.
7. Choose a number of physical shards
Many DIRBS Core tables are split into multiple physical partitions based on their IMEI. The
default number of partitions is 4. For larger deployments, it is recommended to increase the
number of partitions to achieve higher potential parallelism and performance.
This is done via the command:
dirbs-db --db-user <username_of_power_user> --db-password-prompt
repartition --num-physical-shards <num_shards>
This can be done at any time, but we recommend initially avoiding a lengthy re-write of all
existing tables later.
2.4.2 Upgrading the database schema
To upgrade a schema from a previous release, run:
dirbs-db --db-user <super_user> --db-password-prompt install_roles
dirbs-db --db-user <power_user> --db-password-prompt upgrade
where
<super_user> is the superuser (see Step 2 of Section 2.4.1)
<power_user> is the power user (see Step 5a of Section 2.4.1)
80-GD079-1 Rev. D Copyright (c) 2018 Qualcomm Technologies, Inc. 12
This work is licensed under a Creative Commons Attribution-NoDerivatives 4.0 International License.
3 Configuration
An annotated config file etc/config.yml was distributed with this release. For information on
the available settings and what they mean, refer to the comments in the annotated sample config
file.
This annotated config file is automatically copied into built Docker images and is in both files:
/opt/dirbs/etc/config.yml
/home/dirbs/.dirbs.yml
When DIRBS Core software runs, it looks for a config file in ~/.dirbs.yml. If that file is not
found, it looks in the system location /opt/dirbs/etc/config.yml.
Once the Docker image has been built, the configuration can be modified by mounting a config
file as a volume to ~/.dirbs.yml to override the config file that the Docker image was
originally built with (see Section 2.3.1.1).
80-GD079-1 Rev. D Copyright (c) 2018 Qualcomm Technologies, Inc. 13
This work is licensed under a Creative Commons Attribution-NoDerivatives 4.0 International License.
4 Installation Verification
4.1 Running the automated regression test suite
If you have built the Docker processing blade image, use the following command to run the
automated regression test suite:
docker run --rm --tmpfs /tmp dirbs-processing:${BUILD_TAG} gosu dirbs
py.test -v /home/dirbs/tests/*.py
Alternatively, if a container based off the dirbs-processing image is already running, you can SSH
into it to run the tests. Once you are SSH’ed in, use the following command to run tests:
py.test -v /home/dirbs/tests/*.py
(dirbs-venv) dirbs@8d98750dc5aa:~$ py.test -v /home/dirbs/tests/*.py
==========================================================================
test session starts
===========================================================================
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.34, pluggy-0.3.1 --
/home/dirbs/dirbs-venv/bin/python3.5
cachedir: tests/.cache
rootdir: /home/dirbs/tests, inifile: pytest.ini
plugins: mock-1.6.0
collected 266 items
tests/app_logging.py::test_exception_logging_api PASSED
tests/app_logging.py::test_exception_logging_cli PASSED
tests/tac_api.py::test_method_post_not_allowed PASSED
tests/tac_api.py::test_method_delete_not_allowed PASSED
====================================================================== 266
passed in 247.90 seconds
======================================================================
(dirbs-venv) dirbs@8d98750dc5aa:~$
A successful install is one where all run test cases have passed.
DIRBS Core Release 8.0.1 Installation Guide Installation Verification
80-GD079-1 Rev. D Copyright (c) 2018 Qualcomm Technologies, Inc. 14
This work is licensed under a Creative Commons Attribution-NoDerivatives 4.0 International License.
4.2 Checking status of the database version
Verify that the DIRBS Code schema version is equivalent to the DB schema version:
dirbs-db check
2017-10-29 00:38:56,683 - dirbs.db - INFO - Querying DB schema version for
DB dirbs on host <DB_HOST>
2017-10-29 00:38:56,706 - dirbs.db - INFO - Code schema version: 53
2017-10-29 00:38:56,706 - dirbs.db - INFO - DB schema version: 53
2017-10-29 00:38:56,707 - dirbs.db - INFO - Schema versions match between
code and DB.

Navigation menu