Замечательный инструмент Metabase, который не имеет поддержки ClickHouse, которая на самом деле есть. Плагин давно написан и работает. Я сделал свою сборку инструмента, куда включил плагин, который не включают в официальной сборке. Детали тут https://github.com/metabase/metabase/pull/9469. Пользуйтесь на здоровье! :)
Пример приведен для Rockstat, но вы можете воспользоваться готовым образом Metabase, просто запустив его в докере.
Имеется уже готовая сборка Metabase с поддержкой ClickHouse для Rockstat. Требуется расширить конфигурацию системы установки (ansible), чтобы она внесла образ Metabase во все необходимые блоки конфигурации.
У кого Google Cloud могут сделать это прямо через браузер кликнув SSH в операциях с сервером (внимание, вы заходите под своим пользователем, чтобы стать root
, введите sudo -i
).
Другим потребуется зайти на сервер используя любимый ssh клиент
ssh root@rstat.yourdomain.ru
Вообще, от root
ходить плохо, но вы ведь не системные администраторы :) Вы должны увидеть приглашение:
root@rstat:~#
... Документация https://rock.st
Первым делом переходим в директорию с системой установки и смотрим как называется наш сервер в файле с инвентарем (серверы)
cd /srv/platform/bootstrap
cat inventory/private
Получаем
[private]
rstat ansible_host=test.rstat.org
[rockstat]
rstat
Файл inventory/private
сгенерировала система установки, нам требуется взять оттуда лишь имя, которым является первое слово после [private]
т.е. rstat
. Записываем.
В Ansible все хосты подразделяются на группы. Создаем группу priv_metabase
. Открываем редактор.
nano inventory/priv_metabase
Вставляем содержимое, вместо rstat
укажите имя вашего хоста, которое запоминали ранее.
[priv_metabase]
rstat
Для сохранения используем Ctrl
+O
затем выходим Сtrl
+X
.
Дело сделано, привязали хост к новой группе, теперь надо внести дополнительные параметры. Открываем редактор и вносим дополнительную конфигурацию
nano group_vars/priv_metabase.yml
Вставляем содержимое
# Дополниительный поддомен, который будет автоматически прописан везде, где необходимо
_subdomains_extra: ['metabase']
# Номера портов, внутренний (в контейнере) и на внутреннем интерфейсе хостовой машины, куда уже будет перекидывать `nginx`
_ports_extra:
metabase: [10080, 3000]
# Описываем дополнительный источник образа Metabase. Тут указывается расположение образа в Docker Hub
_images_extra:
metabase: madiedinro/metabase
# Nginx upstream, который будет прокидывать запросы с metabase.* в контейнер. Обратите внимание, тут указывается порт, который мы настраивали ранее.
_nginx_upstreams_extra:
- 'upstream umetabase { server {{if_inner}}:{{ports.metabase.0}}; }'
# Ну и сам виртуальный сайт в nginx. Он делается на основе готового шаблона, используемого для всех внутренних доменов. Если интересно, поищите в проекте `_nginx_proxy_vh`
_nginx_sites_extra:
metabase: "{{_nginx_proxy_vh|flatten|map('replace','{sd}','metabase')|list}}"
Остается только добавить задачу, которая запустит контейнер. Для этого в структуре предусмотрены специальные custom_
файлы, которые исключены из автообновления и системы контроля версий.
nano tasks/custom_metabase.yml
Вставляем содержимое
# Описание модуля Ansible для запуска контейнера докера. Большинство значений берутся из основного конфига.
- name: Starting container for metabase
docker_container:
name: metabase
hostname: metabase
image: "{{images.metabase}}"
labels: "{{docker_band_lbls}}"
networks: [ { name: "{{docker_net_name}}" } ]
etc_hosts: "{{etc_hosts}}"
restart_policy: "{{_restart_policy}}"
restart: yes
pull: yes
recreate: yes
memory: "2000m"
ports: ["{{if_inner}}:{{ports.metabase.0}}:{{ports.metabase.1}}"]
tags: ['never', 'metabase']
Еще один
nano tasks/custom.yml
Вставляем содержимое
- import_tasks: custom_metabase.yml
Конфигурация закончена, запускаем установшик в ручном режиме.
ansible-playbook --connection=local platform.yml --tags=metabase
Скачается образ, запустится контейнер.
Остается только применить изменения к конфигурации Rockstat, чтобы до Metabase можно было добраться по HTTP; и переполучить SSL сертификат.
Открываем меню установщика
rockstat
еще есть прием
rock<tab> # -> rockstat
Выибираем пункт 20 Apply admin password to webserver
, а затем насильно переполучаем SSL серитификат 31 Request SSL certificate with force option
Это Greate Success! вход доступен на https://metabase.вашдоменрстат