Hub Deployment
The VIO hub modules can be deployed in any cloud, for this tutorial we decided to use Azure and its IoT solution Azure IoT Edge/Hub
This section allows you to create all the Azure infrastructure for VIO:
- Storage resources (Storage Account + PostgreSQL)
- The IoT Hub
- An Azure function (telemetry_saver
) to save Device-to-Cloud telemetry data in PostgreSQL
- An Event Grid Topic to connect IoT Hub with the telemetry_saver
Azure function
Prerequisites
Before getting started, you need to install Ansible and its dependencies for Azure and PostgreSQL.
$ cd ./deployment/
$ conda create -n ansible python=3
$ conda activate ansible
$ pip install -r requirements.txt
$ ansible-galaxy collection install azure.azcollection
$ ansible-galaxy collection install community.grafana
You'll also need : - The Azure CLI - The Azure CLI IoT extension extension - The Azure Functions Core Tools
On MacOS, these can be installed as follows:
$ brew update
$ brew install azure-cli
$ az extension add --name azure-iot
$ brew tap azure/functions
$ brew install azure-functions-core-tools@3
Once you have installed azure-cli
, you can login to Azure using your Accenture account:
$ az login
Make sure you are using the Azure subscription IX-Visual-Inspection-MDI
. You can check that with:
$ az account list --output table
If IX-Visual-Inspection-MDI
is not the default subscription, you can switch to it with the following command:
$ az account set --subscription "IX-Visual-Inspection-MDI"
Define the mandatory environment variables
In order to create and configure all the Azure infrastructure, we need to define some environment variables:
$ export REGISTRY_USERNAME=<your_gitlab_username>
$ export REGISTRY_PASSWORD=<your_gitlab_container_registry_token>
$ export POSTGRES_USERNAME=<postgres_admin_username>
$ export POSTGRES_PASSWORD=<postgres_admin_password>
$ export AZURE_STORAGE_CONNECTION_STRING=<azure_storage_connection_string>
Registry Username
firstname.lastname (i.e nicolas.dupont)
Registry Password
You can find it on gitlab, click on your profil picture (top right corner) --> preferences.
On the Access Tokens
category, you can generate a token. I suggest no expiration date, and you select all the scopes.
Keep this token safe, once it's generated you cannot retrieve it on gitlab anymore.
Postgres Username and Password.
- To Get the Postgres username, go the Azure Portal, our subscription
IX-Visual-Inspection-MDI
--> our resource groupvio-rg-dev
--> thevio-function-app-dev
function app. On the left side bar menu, click onConfiguration
and unhide the POSTGRES_USER field. You only need what's before the @. Here it'svioadmin
- To Ge the Postgres password, it's on the same page but unhide the POSTGRES_PASSWORD field.
Create Azure Infrastructure
The following command creates all the Azure IoT infrastructure for VIO.
$ ansible-playbook ansible/create_azure_cloud_infrastructure.yml -e 'ansible_python_interpreter=<path_to_your_conda_env_python_interpreter>'
Deploy hub monitoring (grafana)
To deploy Grafana dashboard and data-sources, run the following playbook :
$ ansible-playbook -i ansible/inventory/production.ini ansible/update_grafana_dashboard.yml --ask-pass
This will copy the files on the Grafana resource deployed in Azure and relaunch the grafana service to take into account the brand uploaded files.