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