charliemaiors.shinobi
Shinobi
Die Shinobi-Rolle installiert das Shinobi CCTV System auf Ubuntu-, CentOS- oder Archlinux-Systemen. Mit Variablen kann entweder die CE- oder die Pro-Version installiert werden.
Voraussetzungen
Die Rolle benötigt Nodejs mit npm und FFMPEG; außerdem wird eine laufende Instanz von MariaDB/Postgres mit einer bereits erstellten Shinobi-Datenbank und -Schemas benötigt, diese kann auch mit der shinobi-db Rolle bereitgestellt werden.
Rollenvariablen
Diese Rolle benötigt drei Hauptvariablen (es sei denn, es handelt sich um einen Child-Node, siehe Clustering):
db_host: "localhost"
shinobi_pass: "test"
shinobi_port: "8080"
Die Variable db_host
ist die Adresse der Shinobi-Datenbank, die Rolle geht davon aus, dass sie bereits erstellt und konfiguriert ist; wenn die Adresse falsch ist, schlägt die Rolle NICHT fehl, aber Shinobi wird nicht funktionieren. Die Variable shinobi_pass
ist das Passwort für den Shinobi-Backend-Dienst, um eine Verbindung zur Datenbank herzustellen. Die Variable shinobi_port
ist der Port.
Standardvariablen sind:
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"
Die Variable random_key
wird zur Generierung eines zufälligen Passworts verwendet. Die Variablen ce_version/pro_version
sind Referenzen auf die Shinobi-Code-Repositorys für die Community- und Pro-Versionen. Die Flags ce/pro
definieren, welche Version heruntergeladen wird. Das Flag lts
gibt an, welche Version von Node installiert wird, um die Installation von SQLite-Abhängigkeiten zu vermeiden (bei Version 8 von NodeJS schlägt die Installation von SQLite über npm fehl). Der shinobi_user
ist der Standardbenutzer für die Shinobi-Datenbank, dbhash
ist der Hash-Algorithmus für die Speicherung des Passworts (siehe Abhängigkeiten Abschnitt). Die shinobi_version
ist der Commit-Hash oder Branch, der aus dem Shinobi-Repository geklont werden soll.
Clustering
Mit der Einführung von Child-Nodes können zwei zusätzliche Variablen definiert werden.
cluster: true oder false
cluster_role: "child" oder "master"
Wenn cluster_role
auf child gesetzt ist, müssen auch die Variablen master_key
und master_ip
angegeben werden.
Abhängigkeiten
Diese Rolle hat eine direkte Abhängigkeit zu den Rollen nodejs und ffmpeg und eine indirekte Abhängigkeit zu MySQL/MariaDB und dem definierten Shinobi-Schema. Die Liste der direkten Abhängigkeiten ist:
- charliemaiors.nodejs (das lts-Flag wird auch auf die NodeJS-Rolle angewendet, um zu bestimmen, welche Version installiert werden soll)
- charliemaiors.ffmpeg
Die indirekte Abhängigkeit besteht zu charliemaiors.shinobi-db unter Verwendung von shinobi_user
, shinobi_pass
als gemeinsamen Variablen und die db_host
-Variable kann die Adresse der Datenbank-Hostmaschine (oder auch localhost
im Fall derselben Maschine) verwendet werden.
Beispiel-Playbook
Hier ist ein Beispiel für eine All-in-One-Installation:
- name: Deploy Shinobi auf einem einzelnen Host
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
Hier ist ein Beispiel mit einer Datenbank auf einer anderen Maschine:
- name: Deploy shinobi db
hosts: shinobi-db
roles:
- { role: charliemaiors.shinobi-db, shinobi_pass: "shinobi-test-machine", user_pass: "shinobi-test", user_mail: "[email protected]"}
- name: Deploy shinobi frontend
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 }
Hier ist ein Beispiel mit einer Datenbank auf einer anderen Maschine und Child-Nodes:
- name: Deploy shinobi db
hosts: shinobi-db
roles:
- { role: charliemaiors.shinobi-db, shinobi_pass: "shinobi-test-machine", user_pass: "shinobi-test", user_mail: "[email protected]"}
- name: Deploy shinobi master
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: Deploy shinobi child nodes
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" }
Lizenz
GNU GPL
Autoreninformation
Diese Rolle wurde 2018 von Carlo Maiorano als Entwickler für das Dipartimento di Informatica - Scienza e Ingegneria der Alma Mater Studiorum erstellt, geleitet und betreut von Paolo Bellavista als Gruppenleiter.
ansible-galaxy install charliemaiors.shinobi