charliemaiors.shinobi

Shinobi

Statut de Construction

Le rôle Shinobi déploiera le système Shinobi CCTV sur des systèmes Ubuntu, CentOS ou Archlinux. En utilisant des variables, il est possible de déployer la version CE ou la version Pro.

Exigences

Les exigences de ce rôle sont Nodejs avec npm et FFMPEG; il nécessite également une instance de Mariadb/Postgres en cours d'exécution avec la base de données et les schémas shinobi déjà créés, ou peut être déployé en utilisant le rôle shinobi-db.

Variables du rôle

Ce rôle nécessite trois variables principales (sauf s'il s'agit d'un nœud enfant, voir le clustering) :

db_host: "localhost"
shinobi_pass: "test"
shinobi_port: "8080"

La variable db_host est l'adresse de la base de données shinobi, le rôle suppose qu'elle est déjà créée et configurée ; si l'adresse est incorrecte, le rôle NE va PAS échouer mais Shinobi ne fonctionnera pas. La variable shinobi_pass est le mot de passe pour le service backend de shinobi afin de se connecter à la base de données. La variable shinobi_port est le port.

Les variables par défaut sont :

random_key: "{{ lookup('password', '/dev/null length=15 chars=ascii_letters') }}"
ce_version: "https://gitlab.com/Shinobi-Systems/ShinobiCE.git"
pro_version: "https://gitlab.com/Shinobi-Systems/Shinobi.git"
ce: true
pro: false
lts: true
startup: true
shinobi_user: "shinobi"
shinobi_version: "HEAD"
dbhash: "md5"

La variable random_key est utilisée pour la génération de mots de passe aléatoires. Les ce/pro_version sont des références pour le dépôt de code Shinobi pour la version communautaire et la version pro respectivement. Les drapeaux ce/pro définissent quelle version télécharger. Le drapeau lts indique quelle version de Node est installée afin d'éviter d'installer des dépendances sqlite (pour la v8 de nodejs, l'installation de sqlite depuis npm échoue). La variable shinobi_user est l'utilisateur par défaut de shinobi pour la base de données, et dbhash est l'algorithme de hachage utilisé pour stocker les mots de passe (voir section Dépendances). La variable shinobi_version est le hash de commit ou la branche qui doit être clonée depuis le dépôt shinobi.

Clustering

Avec l'introduction des nœuds enfants, deux variables supplémentaires peuvent être définies.

cluster: true ou false
cluster_role: "child" ou "master"

Si cluster_role est défini sur enfant, master_key et master_ip doivent également être fournis.

Dépendances

Ce rôle a une dépendance directe avec les rôles nodejs et ffmpeg et une dépendance indirecte avec Mysql/Mariadb et le schéma shinobi défini. La liste des dépendances directes est :

  • charliemaiors.nodejs (le drapeau lts est également appliqué au rôle nodejs afin de déterminer quelle version installer)
  • charliemaiors.ffmpeg

La dépendance indirecte est avec charliemaiors.shinobi-db utilisant les variables communes shinobi_user, shinobi_pass et la variable db_host qui pourrait être déterminée à l'aide de l'adresse de la machine hôte de la base de données (ou pourrait également être localhost en cas de même machine).

Exemple de Playbook

Voici un exemple avec une installation tout-en-un :

  - name: Déployer Shinobi sur une seule machine
  hosts: shinobi-all-in-one
  vars:
    shinobi_pass: "shinobi-test-machine"
    db_host: "localhost"
    shinobi_port: "8080"
    user_pass: "shinobi-test"
    user_mail: "[email protected]"
    dbhash: "sha256"
    startup: true
    ce: false
    pro: true
    lts: true
  roles:
    - charliemaiors.nodejs
    - charliemaiors.ffmpeg
    - charliemaiors.shinobi-db
    - charliemaiors.shinobi

Voici un exemple avec la base de données sur une machine différente :

- name: Déployer la base de données shinobi
  hosts: shinobi-db
  roles:
    - { role: charliemaiors.shinobi-db, shinobi_pass: "shinobi-test-machine", user_pass: "shinobi-test", user_mail: "[email protected]"}

- name: Déployer l'interface frontend de shinobi
  hosts: shinobi-fe
  roles:
    - charliemaiors.nodejs
    - charliemaiors.ffmpeg
    - { role: charliemaiors.shinobi, db_host: "{{ hostvars[groups['shinobi-db'][0]].ansible_host }}", shinobi_port: "8080", user_pass: "shinobi-test", user_mail: "[email protected]", shinobi_pass: "shinobi-test-machine", startup: true, ce: false, pro: true }

Voici un exemple avec la base de données sur une machine différente et des nœuds enfants :

- name: Déployer la base de données shinobi
  hosts: shinobi-db
  roles:
    - { role: charliemaiors.shinobi-db, shinobi_pass: "shinobi-test-machine", user_pass: "shinobi-test", user_mail: "[email protected]"}

- name: Déployer le maître shinobi
  hosts: shinobi-master
  roles:
    - charliemaiors.nodejs
    - charliemaiors.ffmpeg
    - { role: charliemaiors.shinobi, db_host: "{{ hostvars[groups['shinobi-db'][0]].ansible_host }}", shinobi_port: "8080", user_pass: "shinobi-test", user_mail: "[email protected]", shinobi_pass: "shinobi-test-machine", startup: true, ce: false, pro: true, cluster: true, cluster_role: "master", master_key: "test" }

- name: Déployer les nœuds enfants shinobi
  hosts: shinobi-childs
  roles:
    - charliemaiors.nodejs
    - charliemaiors.ffmpeg
    - { role: charliemaiors.shinobi, master_ip: "{{ hostvars[groups['shinobi-master'][0]].ansible_host }}", cluster: true, cluster_role: "child", master_key: "test" }

Licence

GNU GPL

Informations sur l'auteur

Ce rôle a été créé en 2018 par Carlo Maiorano en tant que développeur pour le Dipartimento di Informatica - Scienza e Ingegneria de l'Alma Mater Studiorum sous la direction et la supervision de Paolo Bellavista comme chef de groupe.

À propos du projet

Shinobi CCTV deployment

Installer
ansible-galaxy install charliemaiors.shinobi
Licence
Unknown
Téléchargements
644