shinobi

Шиноби

Статус сборки

Роль Шиноби развернет систему видеонаблюдения Shinobi CCTV на системах Ubuntu, CentOS или Archlinux. С помощью переменных возможно развертывание как версии CE, так и Pro.

Требования

Для работы роли нужны Nodejs с npm и FFMPEG; также требуется работающая инстанция Mariadb/Postgres с уже созданной базой данных и схемами shinobi, или можно развернуть с использованием роли shinobi-db.

Переменные роли

Эта роль требует три основные переменные (если это не дочерний узел, см. кластеризацию):

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

Переменная db_host — это адрес базы данных shinobi, роль предполагает, что она уже создана и настроена; если адрес неверный, роль НЕ завершится с ошибкой, но Shinobi не будет работать. Переменная shinobi_pass — это пароль для сервиса backend shinobi для подключения к базе данных. Переменная shinobi_port — это порт. Переменные по умолчанию:

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"

Переменная random_key используется для генерации случайного пароля. Переменные ce и pro_version — это ссылки на репозитории кода Shinobi для соответствующих версий. Флаги ce и pro определяют, какую версию загружать. Флаг lts определяет, какая версия Node будет установлена, чтобы избежать установки зависимостей sqlite (для версии 8 Nodejs установка sqlite из npm не работает). Переменная shinobi_user — это пользователь по умолчанию для базы данных, dbhash — это алгоритм хэширования, используемый для хранения пароля (см. раздел Зависимости). Переменная shinobi_version — это хэш коммита или ветка, которая должна быть клонирована из репозитория shinobi.

Кластеризация

С введением дочерних узлов есть две дополнительные переменные, которые могут быть определены.

cluster: true или false
cluster_role: "child" или "master"

Если cluster_role установлен на child, также необходимо предоставить master_key и master_ip.

Зависимости

Эта роль имеет прямую зависимость от ролей nodejs и ffmpeg и косвенную зависимость от Mysql/Mariadb и определенной схемы shinobi. Список прямых зависимостей:

  • charliemaiors.nodejs (флаг lts также применяется к роли nodejs, чтобы определить, какую версию установить)
  • charliemaiors.ffmpeg

Косвенная зависимость — это charliemaiors.shinobi-db с использованием переменных shinobi_user, shinobi_pass как общих переменных, а переменная db_host может быть определена с использованием адреса хост-машины базы данных (или также может быть localhost в случае, если это та же машина).

Пример Playbook

Вот пример с установкой "всё в одном":

  - name: Развертывание Shinobi на одном хосте
  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

Вот пример с базой данных на другой машине:

-- name: Развертывание БД shinobi
  hosts: shinobi-db
  roles:
    - { role: charliemaiors.shinobi-db, shinobi_pass: "shinobi-test-machine", user_pass: "shinobi-test", user_mail: "[email protected]"}

- name: Развертывание фронтенда 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 }

Вот пример с базой данных на другой машине и дочерними узлами:

- name: Развертывание БД shinobi
  hosts: shinobi-db
  roles:
    - { role: charliemaiors.shinobi-db, shinobi_pass: "shinobi-test-machine", user_pass: "shinobi-test", user_mail: "[email protected]"}

- name: Развертывание master 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: Развертывание дочерних узлов 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" }

Лицензия

GNU GPL

Информация об авторе

Эта роль была создана в 2018 году Карло Майорано в качестве разработчика для Департамента информатики - Наука и Инженерия Alma Mater Studiorum под руководством Паоло Беллависты.

О проекте

Shinobi CCTV deployment

Установить
ansible-galaxy install charliemaiors/shinobi
Лицензия
Unknown
Загрузки
631