charliemaiors.shinobi

Shinobi

Status budowy

Rola Shinobi umożliwia wdrożenie systemu Shinobi CCTV na systemach Ubuntu, CentOS lub Archlinux. Dzięki zmiennym można wdrożyć wersję CE lub Pro.

Wymagania

Wymagania tej roli to Nodejs z npm oraz FFMPEG; wymaga także działającej instancji Mariadb/Postgres z utworzoną wcześniej bazą danych shinobi i schematami, lub można je wdrożyć za pomocą roli shinobi-db.

Zmienne roli

Rola wymaga trzech głównych zmiennych (chyba że jest to childNode, patrz klasteryzacja):

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

Zmienna db_host to adres bazy danych shinobi; rola zakłada, że już została utworzona i skonfigurowana; jeśli adres jest błędny, rola NIE ZAKOŃCZY SIĘ NIEPOWODZENIEM, ale Shinobi nie będzie działać. Zmienna shinobi_pass to hasło do usługi zaplecza shinobi w celu połączenia z bazą danych. Zmienna shinobi_port to port, na którym działa usługa.

Domyślne zmienne to:

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"

Zmienna random_key jest używana do generowania losowych haseł. Zmienne ce/pro_version to linki do repozytoriów kodu Shinobi dla wersji społecznościowej i profesjonalnej. Flagi ce/pro określają, którą wersję pobrać. Flaga lts wskazuje, jaka wersja node ma być zainstalowana, aby uniknąć instalacji zależności sqlite (w przypadku wersji 8 nodejs instalacja sqlite z npm kończy się niepowodzeniem). shinobi_user to domyślny użytkownik shinobi dla bazy danych, a dbhash to algorytm mieszania używany do przechowywania haseł (patrz sekcja Zależności). Zmienna shinobi_version to skrót commit lub gałąź, którą należy sklonować z repozytorium shinobi.

Klasteryzacja

Wraz z wprowadzeniem węzłów podrzędnych można zdefiniować dwie dodatkowe zmienne.

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

Jeśli cluster_role jest ustawione na child, muszą być również podane zmienne master_key i master_ip.

Zależności

Ta rola ma bezpośrednie zależności od ról nodejs i ffmpeg oraz pośrednie zależności od Mysql/Mariadb i zdefiniowanego schematu shinobit. Lista bezpośrednich zależności to:

  • charliemaiors.nodejs (flaga lts jest również stosowana do roli nodejs w celu określenia, która wersja ma być zainstalowana)
  • charliemaiors.ffmpeg

Pośrednia zależność to charliemaiors.shinobi-db, korzystająca ze zmiennych shinobi_user, shinobi_pass jako wspólnych zmiennych, a zmienna db_host może być określona na podstawie adresu maszyny bazy danych (lub może być localhost w przypadku tej samej maszyny).

Przykładowy Playbook

To przykład instalacji all-in-one:

  - name: Wdrożenie Shinobi na pojedynczym hoście
  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

To przykład z bazą danych na innej maszynie:

- name: Wdrożenie bazy danych shinobi
  hosts: shinobi-db
  roles:
    - { role: charliemaiors.shinobi-db, shinobi_pass: "shinobi-test-machine", user_pass: "shinobi-test", user_mail: "[email protected]"}

- name: Wdrożenie interfejsu użytkownika 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 }

To przykład z bazą danych na innej maszynie i węzłami podrzędnymi:

- name: Wdrożenie bazy danych shinobi
  hosts: shinobi-db
  roles:
    - { role: charliemaiors.shinobi-db, shinobi_pass: "shinobi-test-machine", user_pass: "shinobi-test", user_mail: "[email protected]"}

- name: Wdrożenie 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: Wdrożenie węzłów podrzędnych 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" }

Licencja

GNU GPL

Informacje o autorze

Ta rola została stworzona w 2018 roku przez Carlo Maiorano jako programista dla Dipartamentu Informatyki - Nauka i Inżynieria Uniwersytetu Alma Mater Studiorum pod kierunkiem i nadzorem Paolo Bellavisty jako lidera grupy.

O projekcie

Shinobi CCTV deployment

Zainstaluj
ansible-galaxy install charliemaiors.shinobi
Licencja
Unknown
Pobrania
644