charliemaiors.shinobi

Shinobi

Build-Status

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.

Über das Projekt

Shinobi CCTV deployment

Installieren
ansible-galaxy install charliemaiors.shinobi
GitHub Repository
Lizenz
Unknown
Downloads
644