XiVO Orchestration¶
This page describes how to install XiVO orchestration and how to use it.
The orchestration is done using Docker and its built-in multi-host and multi-container orchestration called Swarm.
Prerequisites¶
Important
Your XiVO PBX server MUST meet the following requirements:
- A swarm manager, which can be your XiVO PBX server
- A swarm worker, which can be your XiVO CC server
- OS : Debian 8 (jessie), 64 bits
- 4 GB of RAM
- 4-core CPU
- 20 GB of free disk space
- you have a XiVO PBX installed in a compatible version
- the XiVO PBX is setup (wizard must be passed) with users, queues and agents, you must be able to place and answer calls
Install process overview¶
The configuration and deployment is handled by xivo-orchestration
package, which does not come with the XiVO installation.
This package must be installed manually.
The join and leave swarm actions on worker are handled by the script xivo-worker-node
which comes together with xivocc-installer
package.
The deployment consist of minimum 1 manager and minimum 1 worker.
Manager¶
The swarm initialization is done on the manager which the workers are joining to or leaving from. The swarm manager can start and stop the services and in XiVO environment the manager will be XiVO PBX.
Worker¶
The swarm worker can join or leave the swarm network and behaves passively in terms of swarm management.
Important
Your worker may have xivocc-installer
installed, but must not be running any XiVO CC components.
All docker containers must be removed before the swarm installation. And the xivocc-dcomp
script must not
be used to start any containers.
Preparation beforehand¶
- Note XiVO AMI secret from
/etc/asterisk/manager.d/02-xivocc.conf
or generate one
< /dev/urandom tr -dc A-Za-z0-9 | head -c${1:-11} | xargs echo
- On the node running the database (XuC), create the database folder
mkdir -p /var/lib/postgresql/data
- Gather the hostnames of your nodes, which will be needed during the first run configuration. Every node must use its unique hostname that will be used in configuration dialogs.
- Create folder for logs on all nodes:
mkdir -p /var/log/xivocc
chown -R daemon:daemon /var/log/xivocc
- On your worker nodes, install
Docker-CE
, please follow the instructions:
Install Docker-CE¶
Important
If you have docker proxy, please remove it from /etc/systemd/system/docker.service.d/mirror.conf, otherwise the installation will fail.
apt-get remove docker docker-engine docker.io
apt-get update
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg2 \
software-properties-common
curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "$ID")/gpg | sudo apt-key add -
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/$(. /etc/os-release; echo "$ID") \
$(lsb_release -cs) \
stable"
apt-get update
apt-get install docker-ce
Configure XiVO orchestration¶
Manager¶
On XiVO PBX, install the xivo-orchestration
package.
apt-get install xivo-orchestration-service
Run and follow the instructions on dialog screens.
xivo-orchestration start
Copy the worker token after successful swarm manager initialization.
docker swarm join-token worker | grep token | awk '{ print $5 }'
SpagoBI¶
Edit the compose file for the chosen installation, find section spagobi
and replace ${REPORTING_HOST}
with
IP address of the node with SpagoBI.
- JAVA_OPTS=-Dexternal.host=REPORTING_HOST_IP
PostgresSQL¶
Then reload PostgreSQL configuration and start the swarm.
/etc/init.d/postgresql restart
XiVO-UC¶
If you chose to install XiVO UC on a single node, you must manually remove the nginx
section from the
/etc/docker/swarm/xivo-compose-xivouc.yml
compose file.
Worker¶
Go to your swarm worker, which can be any available machine with xivocc-installer
installed:
xivo-worker-node join
Enter the worker token from previous step when prompted.
or without xivocc-installer
installed:
docker swarm join --token SWARM_TOKEN MANAGER_IP:2377
Repeat this step in case you have more workers.
Nginx¶
Go to your worker node with XUC and install certificates for the xivoxc_nginx container.
SSLDIR=/etc/docker/nginx/ssl
mkdir -p $SSLDIR
openssl req -nodes -newkey rsa:2048 -keyout $SSLDIR/xivoxc.key -out $SSLDIR/xivoxc.csr -subj "/C=FR/ST=/L=/O=Avencall/OU=/CN=$(hostname --fqdn)"
openssl x509 -req -days 3650 -in $SSLDIR/xivoxc.csr -signkey $SSLDIR/xivoxc.key -out $SSLDIR/xivoxc.crt
openssl x509 -req -days 3650 -in $SSLDIR/xivoxc.csr -signkey $SSLDIR/xivoxc.key -out $SSLDIR/xivoxc.crt
SpagoBI¶
Go to your worker node with spagobi and create a subfolder for logs:
mkdir -p /var/log/xivocc/spagobi
chown -R daemon:daemon /var/log/xivocc
Recording¶
Go to your worker node with recording and create a folder for recordings:
mkdir /var/spool/recording-server
Important
Wait a few seconds for all services come up on each worker. The services should be running on the workers and manager as configured in the swarm configuration dialog.
After-install steps¶
In order to use configmgt and xuc server without IP access, an authorization token is required.
Navigate to XiVO Web Interface - Configuration - Management - Web Services Access
and edit the xivows
user.
On tab ACL
create an ACL with value #
and save the form.
To generate the token:
curl -X POST --header 'Content-Type: application/json' \
--header 'Accept: application/json' \
-u xivows:xivows \
-d '{
"backend": "xivo_service",
"expiration": 5656565600
}' \
--insecure 'https://IP_OF_YOUR_XIVO:9497/0.1/token'
Add this token to the custom.env
as XIVO_CONFD_AUTH_TOKEN=token
on manager node.
Verify the deployment¶
Important
The docker images, if not already present on the nodes, are downloading silently in the background.
- You can see the status of the services on each node by navigating to
http://YOUR_MANAGER_IP:8080
To check whether the services were correctly deployed and the worker(s) are connected to the swarm check on each:
Manager¶
docker node ls
Should list minimum 1 manager and 1 worker.
docker service ls
Should list all XiVO CC components running as services.
docker ps
Should list all XiVO CC components running on this manager.