iotronic/README.rst

224 lines
6.0 KiB
ReStructuredText
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

===============================
IoTronic
===============================
IoTronic is an Internet of Things resource management service for OpenStack clouds.
IoTronic allows to manage Internet of Things resources as part of an OpenStack data center.
* Free software: Apache license
* Source: http://git.openstack.org/git/openstack/iotronic
* Bugs: http://bugs.launchpad.net/iotronic
.. contents:: Contents:
:local:
Basic scenario
----------------------
For this installation of the Iotronic Service we are considering a scenario with the following hosts and softwares:
- Controller ( **Ubuntu linux**): Mysql, Keystone, Rabbitmq
- Iotronic ( **Ubuntu linux** ): Iotronic-conductor, iotronic-wamp-agent, crossbar
- Board: iotronic-lightining-rod
Controller host setup
----------------------
According to the `Openstack Documentation <https://docs.openstack.org/>`_ install the following softwares on the controller host:
- SQL database
- Message queue
- Memcached
- Keystone
Creation of the database
-------------------------
On the dbms create the iotronic db and configure the access for the user iotronic::
MariaDB [(none)]> CREATE DATABASE iotronic;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON iotronic.* TO iotronic@'localhost' IDENTIFIED BY IOTRONIC_DBPASS;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON iotronic.* TO iotronic@'%' IDENTIFIED BY IOTRONIC_DBPASS;
Add the user and the enpoints on Keystone::
openstack service create iot --name Iotronic
openstack user create --password-prompt iotronic
openstack role add --project service --user iotronic admin
openstack role create admin_iot_project
openstack role create manager_iot_project
openstack role create user_iot
openstack role add --project service --user iotronic admin_iot_project
openstack endpoint create --region RegionOne iot public http://IP_IOTRONIC:8812
openstack endpoint create --region RegionOne iot internal http://IP_IOTRONIC:8812
openstack endpoint create --region RegionOne iot admin http://1IP_IOTRONIC:8812
Configuring Iotronic Host
--------------------------
Crossbar
^^^^^^^^^^^^^^^^^^^^^
Install crossbar on the Iotronic host::
apt install python-pip python3-pip libsnappy-dev libssl-dev libffi-dev python-dev
pip3 install python-snappy crossbar
Configuration::
mkdir /etc/crossbar
nano /etc/crossbar/config.json
**config.json**::
{
"version": 2,
"controller": {
},
"workers": [
{
"type": "router",
"realms": [
{
"name": "s4t",
"roles": [
{
"name": "anonymous",
"permissions": [
{
"uri": "*",
"allow": {
"publish": true,
"subscribe": true,
"call": true,
"register": true
}
}
]
}
]
}
],
"transports": [
{
"type": "websocket",
"endpoint": {
"type": "tcp",
"port": 8181
},
"debug":true,
"options":{
"enable_webstatus":true,
"fail_by_drop": true,
"open_handshake_timeout": 2500,
"close_handshake_timeout": 1000,
"auto_ping_interval": 10000,
"auto_ping_timeout": 5000,
"auto_ping_size": 4
}
}
]
}
]
}
Create a systemd service file /etc/systemd/system/crossbar.service::
nano /etc/systemd/system/crossbar.service
**crossbar.service**::
[Unit]
Description=Crossbar.io
After=network.target
[Service]
Type=simple
User=root
Group=root
StandardInput=null
StandardOutput=journal
StandardError=journal
ExecStart=/usr/local/bin/crossbar start --cbdir=/etc/crossbar/
ExecStop=/usr/local/bin/crossbar stop --cbdir=/etc/crossbar/
Restart=on-abort
[Install]
WantedBy=multi-user.target
Iotronic Installation
^^^^^^^^^^^^^^^^^^^^^
Get the source::
git clone https://github.com/openstack/iotronic.git
add the user iotronic::
useradd -m -d /var/lib/iotronic iotronic
and Iotronic::
cd iotronic
pip3 install -r requirements.txt
python3 setup.py install
create a log dir::
mkdir -p /var/log/iotronic
chown -R iotronic:iotronic /var/log/iotronic/
edit ``/etc/iotronic/iotronic.conf`` with the correct configuration::
nano /etc/iotronic/iotronic.conf
There is just one wamp-agent and it must be set as the registration agent::
register_agent = True
populate the database::
iotronic-dbsync
API Service Configuration
^^^^^^^^^^^^^^^^^^^^^^^^^^
Install apache and the other components::
sudo apt-get install apache2 python-setuptools libapache2-mod-wsgi-py3
create log directory::
touch /var/log/iotronic/iotronic-api_error.log
touch /var/log/iotronic/iotronic-api_access.log
chown -R iotronic:iotronic /var/log/iotronic/
copy the config apache2 file::
cp etc/apache2/iotronic.conf /etc/apache2/sites-available/iotronic.conf
enable the configuration::
a2ensite /etc/apache2/sites-available/iotronic.conf
restart apache::
systemctl restart apache2
Starting
^^^^^^^^^^^^^^^^^^^^^
On the wamp agent::
systemctl enable iotronic-wamp-agent
systemctl start iotronic-wamp-agent
On the conductor::
systemctl enable iotronic-conductor
systemctl start iotronic-conductor
Board Side
----------------------
Follow the `iotronic-lightning-rod README <https://opendev.org/x/iotronic-lightning-rod>`_