Установка
Pre-requests
- Git
- Ansible(Знать базовые сущности, работать с vault).
- Linux
- Artifactory(репозиторий, где будут храниться плагины) Опционально, расширяя функционал:
- PostgreSQL к которому будет подключено trino query-analisys.
- OTLP(Также для query-analisys)
Подготовка к запуску ansible-плейбуков вручную
Для запуска ansible-playbook предварительно необходимо выполнить установку ansible и все необходимые модули для него.
pip3 install --no-cache-dir ansible==8.1.0 \
ansible-compat==0.5.0 \
ansible-core==2.15.1 \
ansible-lint==5.1.3 \
hvac==0.11.2 \
ipaddr==2.2.0 \
netaddr==0.8.0 \
yamllint==1.26.3
ansible-galaxy collection install modules/community-general-8.4.0.tar.gz
Для запуска в CI/CD
Необходимо создать репозиторий с содержимым похожим на inventory_example, в котором будет
директория inventory
, в которой также будут group_vars
с необходимыми переменными. Inventory создается yml-типом:
all:
coordinator:
hosts:
coordinator.example.ru:
vars:
coordinator: True
workers:
hosts:
worker[1:3].example.ru:
vars:
coordinator: False
Как это работает
В текущем репозитории при commit'е создается pipeline, в котором будет присутствовать ansible_linter проверяющий корректность синтексиса плейбуков.
Далее для запуска CI/CD потребуется создать отдельный репозиторий для кластера. В gitlab-ci.yml должен быть выполнен include текущего репозитория dataquery, rules-generator, observability.
include:
- project: 'datavirt/dataquery'
ref: *query_version
file:
- 'cluster-ci/gitlab-ci-common.yml'
- project: 'datavirt/trino-observability'
ref: *obesrvabality_version
file:
- 'cluster-ci/gitlab-ci-common.yml'
- project: 'datavirt/trino-rules-generator'
ref: *rg_version
file:
- 'cluster-ci/gitlab-ci-common.yml'
Можно запустить по commit'у или вручную job'у deploy_trino
, которая запустит playbooks/main.yml, включая нужные роли для deploy trino.
Например, роль prepare включает в себя предустановку всего необходимого для работы ansible и trino. Внести некоторые изменения в эту роль вы можете здесь.
После отработки роли prepare запускается роль install_trino в которой на координаторы и воркеры устанавливаются необходимые файлы properties, указанные в переменных, обратите внимание, что для каждого окружения может оказаться свой список переопределенных в group_vars. А также файлы необходимые для координатора group_vars/coordinator/coordinator.yml.
В этой роли устанавливается trino, если переменная DOWNLOAD_TRINO задана как true
. Следовательно в этой роли устанавливаются
все остальные необходимые компоненты trino, например plugin'ы.
После успешной работы роли install_trino, вы можете запустить роль rules_generator
если репозиторий rules-generator в include
переменная описывающая параметры сервиса присутствуют и RulesGenerator.enabled
установлена в true
.
Если переменная vmagent задана в true - запускается роль по установки vmagent'а для сбора метрик и мониторинга.
После удачного выполнения job'ы systemd процесс trino не запускается автоматически. Мы рекомендуем зайти на сервер и проверить работу trino вручную, а после воспользоваться job'ой restart_trino, которая рестартанет service trino на всех хостах в вашем окружении.
Переменные использующиеся в playbooks
Пример часто переопределяемых переменных вы можете найти в inventory_example/group_vars. А все возможные переменные так или иначе вы можете найти в defaults роли.
Переменные генерирующиеся из vault в виде secrets.yml
ssl_cert
- SSL сертификат в base64 для домена использующегося в {{ default_url }}
ssl_private_key
- SSL private key в base64 для домена использующегося в {{ default_url }}
s3_secret_key
- Secret key S3 для использования в Exchane-manager-resources
keystore_password
- Пароль для шифрования в java_keystore куда кладутся SSL сертификаты
db_pass
- Пароль от базы данных, к которой подключается trino для queryanalisys и resource-group
clickhouse_pass
- clickhouse пароль для rules-generator
Как запустить вручную:
Если доступа до регистри нет, то нужно вручную скопировать jar query-analysis-listener-<актуальная_версия>.jar
и trino-group-provider-<актуальная_версия>.jar
с нашего регистри и поместить в /data/trino/plugin
А также oracle-mts-patch-<актуальная_версия>.zip
. Наши репозитории откуда скачать нужные плагины:
https://artifactory.mts.ru/ui/native/dvgeneric-dopdv-generic-local/
https://artifactory.mts.ru/artifactory/dopdv-gradle-dopdv-gradle-local/
ansible-playbook playbooks/main.yml -i example.ini --timeout=60 -e trino_ver=441 -e download_trino=false -e env=example --ask-vault-pass
sudo su - trino
./bin/launcher run
sudo service trino start