charliemaiors.shinobi

Shinobi

Estado de la Construcción

El rol de Shinobi despliega el sistema Shinobi CCTV en sistemas Ubuntu, CentOS o Archlinux. Usando variables, es posible desplegar la versión CE o la versión Pro.

Requisitos

Los requisitos para el rol son Nodejs con npm y FFMPEG; también necesita una instancia de Mariadb/Postgres funcionando con la base de datos shinobi y los esquemas ya creados, o puede desplegarse usando el rol shinobi-db.

Variables del Rol

Este rol requiere tres variables principales (excepto si es un childNode, ver clustering):

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

La variable db_host es la dirección de la base de datos shinobi; el rol asume que ya está creada y configurada; si la dirección es incorrecta, el rol NO fallará, pero Shinobi no funcionará. La variable shinobi_pass es la contraseña para el servicio backend de shinobi para conectarse a la base de datos. La variable shinobi_port es el puerto. Las variables predeterminadas son:

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"

La variable random_key se usa para la generación de contraseñas aleatorias. Las variables ce/pro_version son referencias al repositorio de código de Shinobi para la versión comunitaria y la versión pro, respectivamente. Las flags ce/pro definen qué versión descargar. La flag lts representa qué versión de node se instala para evitar la instalación de dependencias de sqlite (para la v8 de nodejs, la instalación de sqlite desde npm falla). La shinobi_user es el usuario predeterminado de shinobi para la base de datos, y dbhash es el algoritmo de hash utilizado para guardar contraseñas (ver sección de Dependencias). La shinobi_version es el hash de commit o la rama que debe ser clonada del repositorio de shinobi.

Clustering

Con la introducción de nodos secundarios, hay dos variables adicionales que se pueden definir.

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

Si cluster_role se establece como child, también deben proporcionarse master_key y master_ip.

Dependencias

Este rol tiene una dependencia directa con los roles de nodejs y ffmpeg y una dependencia indirecta con Mysql/Mariadb y el esquema de shinobi definido. La lista de dependencias directas es:

  • charliemaiors.nodejs (la flag lts también se aplica al rol de nodejs para determinar qué versión instalar)
  • charliemaiors.ffmpeg

La dependencia indirecta es con charliemaiors.shinobi-db usando shinobi_user, shinobi_pass como variables comunes y la variable db_host que se puede determinar usando la dirección de la máquina del host de la base de datos (o también puede ser localhost en caso de estar en la misma máquina).

Ejemplo de Playbook

Este es un ejemplo con una instalación todo-en-uno:

  - name: Desplegar Shinobi en un solo 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

Este es un ejemplo con la base de datos en una máquina diferente:

-- name: Desplegar la base de datos de shinobi
  hosts: shinobi-db
  roles:
    - { role: charliemaiors.shinobi-db, shinobi_pass: "shinobi-test-machine", user_pass: "shinobi-test", user_mail: "[email protected]"}

- name: Desplegar el frontend de 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 }

Este es un ejemplo con la base de datos en una máquina diferente y nodos secundarios:

- name: Desplegar la base de datos de shinobi
  hosts: shinobi-db
  roles:
    - { role: charliemaiors.shinobi-db, shinobi_pass: "shinobi-test-machine", user_pass: "shinobi-test", user_mail: "[email protected]"}

- name: Desplegar el maestro de 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: Desplegar núcleos secundarios de 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" }

Licencia

GNU GPL

Información del Autor

Este rol fue creado en 2018 por Carlo Maiorano como desarrollador para el Dipartimento di Informatica - Scienza e Ingegneria de Alma Mater Studiorum bajo la dirección y supervisión de Paolo Bellavista como líder de grupo.

Acerca del proyecto

Shinobi CCTV deployment

Instalar
ansible-galaxy install charliemaiors.shinobi
Licencia
Unknown
Descargas
644