Переменные, используемые в роли Ansible¶
Внимание!
Список переменных приведен для версии роли 25.5.1 и выше Переменные для других версий роли смотрите в Документации в git-репозитории роли
Глобальные переменные¶
Инсталляция¶
| Имя | Значение по умолчанию | Описание |
|---|---|---|
| admin_password | пароль для учетной записи admin (требования к паролю) |
|
| auth_webui | true | авторизация в WebUI, работает с Picodata версии 25.4.2 и выше; если версия меньше, то не выставляйте эту переменную |
| autonames | true | развертывание кластера с автогенерацией имен инстансов |
| cluster_name | demo | имя кластера |
| db_config | словарь с параметрами конфигурации кластера | |
| default_bucket_count | 30000 | количество бакетов в каждом тире по умолчанию |
| init_system | systemd | система управления сервисами и процессами (systemd, supervisord) |
| install_packages | true | необходимость установки picodata из репозитория пакетов |
| iptoro_ca_file | файл с доверенным центром сертификации для настройки mTLS внутри кластера | |
| iptoro_cert_file | файл с сертификатом для настройки mTLS внутри кластера | |
| iptoro_key_file | файл с закрытым ключом для настройки mTLS внутри кластера | |
| iproto_tls | false | признак использования mTLS внутри кластера |
| group | root | имя группы для файлов (эта группа уже должна быть создана на каждом сервере кластера) |
| https | false | признак использования https для кластера (WebUI и метрики) |
| https_cert_file | файл с сертификатом для настройки https | |
| https_key_file | файл с закрытым ключом для настройки https | |
| https_password_file | файл с паролем для расшифровки закрытого ключа (опционально) | |
| package_with_version | имя пакета picodata с нужной версией для установки из репозитория. Пример для Ubuntu Jammy: package_with_version: 'picodata=25.5.1.0-jammy' |
|
| picodata_package_path | путь до пакета picodata, который нужно установить на серверах | |
| pg_ca_file | файл с доверенным центром сертификации для SSL-соединения по PostgreSQL-протоколу | |
| pg_cert_file | файл с сертификатом для SSL-соединения по PostgreSQL-протоколу | |
| pg_key_file | файл с закрытым ключом для SSL-соединения по PostgreSQL-протоколу | |
| pg_port_delay | 5 | задержка между проверками доступности порта PostgreSQL-протокола в секундах (если кластер большой, то стоит увеличить) |
| pg_ssl | false | признак использования протокола SSL при подключении по PostgreSQL-протоколу |
| repo | 'https://download.picodata.io' | репозиторий для установки пакетов, значение для ночных сборок: https://download.binary.picodata.io |
| retries_admin_sock | 1 | количество попыток ожидания запуска инстанса (увеличьте, если ваши инстансы долго запускаются) |
| rootless | false | установка кластера в режиме с ограниченными привилегиями |
| service_password | пароль для сервисной учетной записи pico_service |
|
| systemd_params | словарь с параметрами для Systemd | |
| timeout_admin_sock | 60 | время ожидания запуска инстанса в секундах (увеличьте, если ваши инстансы долго запускаются) |
| user | root | имя пользователя для файлов (этот пользователь уже должен быть создан на каждом сервере кластера) |
Пути¶
| Имя | Значение по умолчанию | Описание |
|---|---|---|
| bin_dir | /usr/bin | путь до исполняемого файла picodata |
| conf_dir | /etc/picodata | размещение настроечных файлов |
| cert_dir | /etc/picodata | корневой путь для размещения сертификатов |
| crash_dump_fetch_dir | ./crash_dumps | размещение файлов с дампами на станции ansible при выполнении тега crash_dump |
| data_dir | /var/lib/picodata | размещение данных |
| dir_mode | 0755 | права, создаваемые на директории |
| log_dir | /var/log/picodata | размещение файлов журнала и аудита |
| report_dir | ../ | размещение файла с отчетом об установленных инстансах |
| run_dir | /var/run/picodata | размещение socket-файлов |
| share_dir | /usr/share/picodata | размещение служебных данных (плагинов) |
| supervisord_dir | /etc/picodata/supervisord | размещение конфигурационных файлов для supervisord |
| systemd_dir | /etc/systemd/system | размещение systemd-файлов |
Журналирование и аудит¶
| Имя | Значение по умолчанию | Описание |
|---|---|---|
| audit | true | аудит событий в кластере; при включении файлы будут размещаться в log_dir и начинаться с audit- |
| audit_pipe_command | перенаправление вывода сообщений аудита в подпроцесс через pipe |
|
| audit_to | syslog | место хранения файлов аудита. Возможные значения: syslog, file, pipe |
| log_format | plain | формат отладочного журнала (plain, json) |
| log_level | info | уровень журналирования. Возможные значения: fatal, system, error, crit, warn, info, verbose, debug |
| log_pipe_command | перенаправление вывода сообщений в подпроцесс через pipe |
|
| log_to | syslog | место хранения файлов журнала. Возможные значения: file, syslog, pipe |
Адреса и порты¶
| Имя | Значение по умолчанию | Описание |
|---|---|---|
| first_bin_port | 13301 | начальный номер порта для бинарных портов инстансов кластера |
| first_http_port | 18001 | начальный номер порта для http-портов инстансов кластера |
| first_pg_port | 15001 | начальный номер порта для PostgreSQL-протокола инстансов кластера |
| listen_address | {{ansible_fqdn}} |
Jinja-шаблон для определения адреса сервера. Для IP можно указать {{ansible_default_ipv4.address}} |
| pg_address | {{ansible_fqdn}} |
Jinja-шаблон для определения адреса сервера для подключения по PostgreSQL-протоколу. Для IP можно указать {{ansible_default_ipv4.address}}. Обычно совпадает с listen_address и используется для разделения внутреннего и внешнего трафика по разным сетевым интерфейсам |
Резервное копирование¶
| Имя | Значение по умолчанию | Описание |
|---|---|---|
| backup_dir | /var/lib/picodata/backups | директория для размещения локальных резервных копий |
| backup_fetch | false | необходимость скачивания резервных копий с серверов; при значении false копии сохраняются только локально на серверах. Используется также и при восстановлении |
| backup_fetch_dir | backups | директория для размещения скачанных бэкапов на станции ansible с серверов кластера |
| force_copy_backup | false | копировать бэкап со станции бэкапа даже, если он есть на удаленных серверах |
| restore_dir | директория для восстановления кластера, в формате YYYYMMDDhhmmss. Если не указана, то будет использована последняя из существующих |
|
| ip_replacements_file | None | Путь к файлу со словарем замены старых ip-адресов на новые при восстановлении из резервной копии |
Прочие¶
| Имя | Значение по умолчанию | Описание |
|---|---|---|
| cmdfile | файл с командами, который используется при вызове с тэгом command |
|
| cmdline | однострочная команда, которая используется при вызове с тэгом command. Можно использовать несколько команд через разделитель \n |
|
| debug | false | вывод отладочной информации |
| enable | true | используется только при тэге остановки кластера (stop) для того, чтобы инстансы не запустились при перезагрузки сервера |
| extra_vars | {} | словарь с дополнительными переменными окружения для всего кластера |
| fd_uniq_per_instance | false | позволяет разворачивать репликасет из нескольких реплик на одном сервере. Используйте только для локальной отладки! |
| filter | .* | опциональный фильтр по именам инстансов, используется при вызове с тегами command, restart, stop, start. Можно использовать регулярные выражения |
| instance | имя инстанса, используется с тегом rebootstrap |
|
| need_restart | true | перезапустить инстансы кластера после изменения конфигурации |
| peer | peer-адрес, используется с тегом rebootstrap |
|
| purge | true | при выставлении этой переменной в false при удалении кластера будут оставлены файлы с данными, конфигурационные файлы и файлы журнала |
| remove_pkg | false | при выставлении этой переменной в true при удалении кластера будет также удален пакет picodata с серверов |
| serial_host_restart | 100 | количество серверов для одновременного перезапуска |
| shredding | false | режим безопасного удаления рабочих файлов инстанса путем многократной перезаписи специальными битовыми последовательностями |
| sigkill | false | принудительно отправить сигнал SIGKILL во все процессы picodata (помогает остановить кластер, если он сломался по какой-либо причине) |
| sql_file | файл с набором команд для выполнения после развертывания кластера | |
| remove_sharedir | true | удалять share_dir при удалении кластера |
Переменные для тиров¶
| Имя | Значение по умолчанию | Описание |
|---|---|---|
| bucket_count | 30000 | количество бакетов в тире |
| can_vote | true | возможность инстансов участвовать в голосовании на выборах raft-лидера |
| config | словарь для настройки инстансов тира, например указание размера инстанса. См. подробнее | |
| db_config | {} | словарь с параметрами конфигурации кластера для тира |
| extra_vars | {} | словарь с дополнительными переменными окружения для конкретного тира |
| instances_per_server | 1 | количество инстансов тира на каждом сервере. Данный параметр более приоритетен, чем replicaset_count |
| replicaset_count | 1 | количество репликасетов в тире |
| replication_factor | 1 | фактор репликации |
| systemd_params | {} | словарь с настройками для Systemd |
В переменных extra_vars можно использовать литерал <INSTANCE_NUM> для подстановки номера инстанса на сервере в значение переменной, пример:
tiers:
default:
replicaset_count: 2
replication_factor: 3
bucket_count: 16384
extra_vars:
RADIX_ADDR: '0.0.0.0:73<INSTANCE_NUM>'
В таком случае для первого инстанса переменная RADIX_ADDR установит
значение 0.0.0.0:7300, для второго — 0.0.0.0:7301, для третьего —
0.0.0.0:7302 и так далее.
Группировка хостов¶
Групп хостов может быть несколько на один тир:
tiers: # описание тиров
arbiter: # имя тира
replicaset_count: 1 # количество репликасетов
replication_factor: 1 # фактор репликации
host_groups: # список групп серверов для установки инстансов тира
- ARBITERS
- STORAGES
Если раздел host_groups не определен, то инстансы будут раскатаны на каждом сервере.
Переменная host_group должна быть определена в списке серверов.
Переменные для хостов¶
Пример настройки хостов:
G1: # имя датацентра 1
hosts:
server-1-1: # имя сервера 1
ansible_host: 192.168.19.21 # адрес сервера 1
host_group: 'ARBITERS' # группа хостов
G2: # имя датацентра 2
hosts:
server-2-1: # имя сервера 2
ansible_host: 192.168.19.22 # адрес сервера 2
host_group: 'STORAGES' # группа хостов
G3: # имя датацентра 3
hosts:
server-3-1: # имя сервера 3
ansible_host: 192.168.19.23 # адрес сервера 3
host_group: 'STORAGES' # группа хостов
Переменные для плагинов¶
| Имя | Значение по умолчанию | Описание |
|---|---|---|
| config | путь к конфигурационному файла плагина на локальном хосте (опционально) | |
| enable | true | выполнить все sql-инструкции по настройке плагина, кроме его включения |
| install_sql | true | выполнить sql-инструкции по настройке и включению плагина (используется для отладки) |
| migration_context | переменные для подстановки в миграциях (опционально) | |
| migration_timeout | 300 | время ожидания окончания выполнения миграций |
| path | путь к пакету с плагином на локальном хосте | |
| plugin_timeout | 300 | время ожидания окончания выполнения команд установки плагина |
| services | словарь с настройками для служб плагина (пока поддерживаются только тиры) |