Getting started: Class 4
Install the Class 4 engine (BETA)
Note: This procedure is a BETA and may be not up-to-date. Use at your own risk!
Supported environments
The Class 4 engine supports the following deployment environments:
- Ansible-based deployment: install the platform on a set of Debian Buster machines, either bare-metal or virtual machines, using our Ansible recipes.
- Docker compose: run the platform on a single machine using the Docker images together with docker-compose.
- Kubernetes: install the platform using our Helm chart and run the platform on your Kubernetes cluster.
Ansible-based deployment
The Class 4 engine is made of several components:
- SBC (Kamailio)
- Router (Kamailio)
- Media Proxy (RTPengine)
- Router API (
wazo-router-confd
) - PostgreSQL
- Redis
If you use the Ansible recipes you need at least two hosts as you cannot run the SBC and the Router on the same machine.
To install the Class 4 engine in an all-in-one setup, do the following steps:
-
Install a Debian 10 Buster system with a default locale with an UTF-8 charset on each host you want to use, either bare metal or virtual machine.
-
Run the following commands as root on the Debian systems to provision sudo, git and Ansible:
# apt-get install -yq sudo git ansible
- Get the Wazo Platform installer and its dependencies:
# git clone https://github.com/wazo-platform/wazo-c4-ansible.git
# cd wazo-c4-ansible
# ansible-galaxy install -r requirements-postgresql.yml
- Create the Ansible inventory in
inventories/c4
to specify your hosts and your preferences, as follows:
Define one or more SBCs:
[sbc_host]
sbc_1 ansible_ssh_host=192.0.2.1 ansible_ssh_port=22
sbc_2 ansible_ssh_host=192.0.2.2 ansible_ssh_port=22
Define one or more routers:
[router_host]
router_1 ansible_ssh_host=192.0.2.3 ansible_ssh_port=22
router_2 ansible_ssh_host=192.0.2.4 ansible_ssh_port=22
Define one or more Media Proxies:
[rtpengine_host]
rtpengine_1 ansible_ssh_host=192.0.2.5 ansible_ssh_port=22
rtpengine_2 ansible_ssh_host=192.0.2.6 ansible_ssh_port=22
Define, optionally, additional hosts for the database services:
[database_host]
database_1 ansible_ssh_host=192.0.2.7 ansible_ssh_port=22
[redis_host]
redis_1 ansible_ssh_host=192.0.2.8 ansible_ssh_port=22
Assign the roles to the aforementioned hosts assigning them to the following groups:
[sbc:children]
sbc_host
[router:children]
router_host
[router_api:children]
router_host
[rtpengine:children]
rtpengine_host
[database:children]
database_host
[redis:children]
redis_host
[c4:children]
sbc
router
router_api
rtpengine
database
redis
Configure your Class 4 engine with your deployment-specific settings, as follows:
[database:vars]
postgresql_listen_addresses = *
[router:vars]
router_api_db_host = 192.0.2.7
router_api_redis_host = 192.0.2.8
router_dburl_dialog = redis://192.0.2.8:6379/2
[sbc:vars]
sbc_advertise_address = c4.wazo.cloud:5060
sbc_dispatcher_list = "1 sip:192.0.2.3:5060 16 10\n1 sip:192.0.2.4:5060 16 10"
sbc_dburl_dialog = redis://192.0.2.8:6379/2
[sbc_1_host:vars]
sbc_advertise_address = <PUBLIC IP ADDRESS OF THE SBC> # example: 198.51.100.2
sbc_advertise_port = 5060
rtpengine_public_address = 198.51.100.1
[sbc_2_host:vars]
sbc_advertise_address = <PUBLIC IP ADDRESS OF THE SBC> # example: 198.51.100.3
sbc_advertise_port = 5060
[rtpengine_1]
rtpengine_public_address = <PUBLIC IP ADDRESS OF THE MEDIA PROXY> # example: 198.51.100.1
[rtpengine_2]
rtpengine_public_address = <PUBLIC IP ADDRESS OF THE MEDIA PROXY> # example: 198.51.100.2
The various variables that can be customized are described at https://github.com/wazo-platform/wazo-c4-ansible/blob/master/README.md#variables.
By default, Wazo Platform will install the development version. To install the latest stable version, activate the following settings in your inventory:
[c4:vars]
wazo_distribution = pelican-buster
wazo_distribution_upgrade = pelican-buster
- Launch the installation by running the following command:
# ansible-playbook -i inventories/c4 c4.yml
If you want to test the Class 4 engine on a single host, you can use Vagrant to provision two virtual machines using the provided Vagrantfile
:
# -*- mode: ruby -*-
# vi: set ft=ruby :
# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure("2") do |config|
config.vm.box = "debian/buster64"
config.vm.define :router do |t|
end
config.vm.define :sbc do |t|
end
You can now run:
$ vargrant up
You can install the SBC and the Router, together with their dependencies, on the two virtual machines running:
$ ansible-playbook -i inventories/c4-sbc-vagrant c4-sbc.yaml
$ ansible-playbook -i inventories/c4-router-vagrant c4-router.yaml
Docker compose
The Wazo Project provides Docker containers for all the components of the Class 4 platform. You can run a full instance of the platform on a single host using docker-compose.
To run the Class 4 engine using docker-compose, do the following steps:
- Get the Class 4 engine docker-compose git repository:
$ git clone https://github.com/wazo-platform/wazo-c4.git
$ cd wazo-c4
- Run docker-compose:
$ docker-compose up -d
The following services are started by docker compose:
- consul
- redis
- router-confd
- rtpe
- rtpe_secondary
- sbc
- sbc_secondary
- router
- router_secondary
- carrier
- wazo-tester
The following ports are exposed to the host:
- Consul RPC server (8300)
- Consul DNS (8600, TCP and UDP)
- Consul HTTP API (8500)
- PostgreSQL (5432)
- Redis (6379)
- Router confd (9600)
- SBC (5060, UDP only)
You can now access the management and configuration API using the following base URL:
http://localhost:9600