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