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 под руководством Паоло Беллависты.
ansible-galaxy install charliemaiors/shinobi