charliemaiors.shinobi
Shinobi
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.
ansible-galaxy install charliemaiors.shinobi