# Переменные, используемые в роли Ansible

## Глобальные переменные {: #global_vars }

### Инсталляция {: #installation }

| Имя | Значение по умолчанию | Описание |
| ---      | ---      | ---      |
| repo | 'https://download.picodata.io' | репозиторий для установки пакетов. Значение для ночных сборок: https://download.binary.picodata.io |
| cluster_name | demo | имя кластера |
| user | root | имя пользователя для файлов |
| group | root | имя группы для файлов |
| service_password | | пароль для сервисной учетной записи `pico_service` |
| admin_password | | пароль для учетной записи `admin` ([требования к паролю](../admin/access_control.md#allowed_passwords)) |
| init_system | systemd | система управления сервисами и процессами (systemd, supervisord)  |
| install_packages | true | необходимость установки picodata из репозитория пакетов |
| systemd_params | | словарь с [настройками systemd служб](../admin/systemd.md) |
| db_config | | словарь с [параметрами конфигурации кластера](db_config.md) |
| default_bucket_count | 30000 | количество бакетов в каждом тире по умолчанию |
| pg_port_delay | 5 | задержка между проверками доступности порта PostgreSQL-протокола в секундах (если кластер большой, то стоит увеличить) |
| picodata_package_path | | путь до пакета Picodata, который нужно установить на серверах |
| rootless | false | установка кластера в [режиме с ограниченными привилегиями](../admin/cluster_mgmt.md) |

### Пути {: #directories }

| Имя | Значение по умолчанию | Описание |
| ---      | ---      | ---      |
| conf_dir | /etc/picodata | размещение настроечных файлов |
| data_dir | /var/lib/picodata | размещение данных |
| run_dir | /var/run/picodata | размещение socket-файлов |
| report_dir | ../ | размещение файла с отчетом об установленных инстансах |
| share_dir | /usr/share/picodata | размещение служебных данных (плагинов) |
| systemd_dir | /etc/systemd/system | размещение systemd-файлов |
| supervisord_dir | /etc/picodata/supervisord | размещение конфигурационных файлов для supervisord |
| dir_mode | 0750 | Права, создаваемые на директории |

### Журналирование и аудит {: #logs_and_audit }

| Имя | Значение по умолчанию | Описание |
| ---      | ---      | ---      |
| log_level | info | уровень журналирования. Возможные значения: `fatal`, `system`, `error`, `crit`, `warn`, `info`, `verbose`, `debug` |
| log_to | syslog | место хранения файлов журнала. Возможные значения: `file`, `syslog`, `pipe` |
| log_format | plain | формат отладочного журнала (`plain`, `json`) |
| log_dir | /var/log/picodata | место для размещения файлов журнала и аудита |
| log_pipe_command | | перенаправление вывода сообщений в подпроцесс через `pipe` |
| audit | false | включение аудита событий в кластере; при включении файлы будут размещаться в `log_dir` и начинаться с `audit-` |
| audit_to | syslog | место хранения файлов аудита. Возможные значения: `syslog`, `file`, `pipe` |
| audit_pipe_command | | перенаправление вывода сообщений аудита в подпроцесс через `pipe` |

### Адреса и порты {: #addresses_and_ports }

| Имя | Значение по умолчанию | Описание |
| ---      | ---      | ---      |
| first_bin_port | 13301 | начальный номер порта для бинарных портов инстансов кластера |
| first_http_port | 18001 | начальный номер порта для http-портов инстансов кластера |
| first_pg_port | 15001 | начальный номер порта для PostgreSQL-протокола инстансов кластера. Значение `0` выключает поддержку протокола PostgreSQL |
| pg_ssl | false | признак использования протокола SSL при подключении к Picodata |
| listen_address | `{{ansible_fqdn}}` | Jinja-шаблон для определения адреса сервера. Для IP можно указать `{{ansible_default_ipv4.address}}` |
| pg_address | `{{ansible_fqdn}}` | Jinja-шаблон для определения адреса сервера для подключения по PostgreSQL-протоколу. Для IP можно указать `{{ansible_default_ipv4.address}}`. Обычно совпадает с `listen_address` и используется для разделения внутреннего и внешнего трафика по разным сетевым интерфейсам |

### Резервное копирование {: #backup }

| Имя | Значение по умолчанию | Описание |
| ---      | ---      | ---      |
| backup_dir | /var/lib/picodata/backups | директория для размещения локальных резервных копий |
| backup_fetch_dir | backups | каталог для размещения резервных копий, скачанных с серверов кластера  |
| backup_fetch | true | необходимость скачивания резервных копий с серверов; при значении `false` копии сохраняются только локально на серверах. Используется также и при восстановлении |
| restore_dir | | директория для восстановления кластера, в формате `YYYYMMDDhhmmss`. Если не указана, то будет использована последняя из существующих |

### Прочие {: #misc }

| Имя | Значение по умолчанию | Описание |
| ---      | ---      | ---      |
| shredding | false | режим безопасного удаления рабочих файлов инстанса путем многократной перезаписи специальными битовыми последовательностями |
| purge | true | при выставлении этой переменной в `false` при удалении кластера будут оставлены файлы с данными, конфигурационные файлы и файлы журнала |
| fd_uniq_per_instance | false | позволяет разворачивать репликасет из нескольких реплик на одном сервере. Используйте только для локальной отладки! |
| debug | false | вывод отладочной информации |
| serial_host_restart | 100 | количество серверов для одновременного перезапуска |
| extra_vars | | словарь с дополнительными переменными окружения для всего кластера |
| sigkill | false | принудительно отправить сигнал `SIGKILL` во все процессы `picodata` (помогает остановить кластер, если он сломался по какой-либо причине) |


## Переменные для тиров {: #tier_vars }

| Имя | Значение по умолчанию | Описание |
| ---      | ---      | ---      |
| replicaset_count | 1 | количество репликасетов в тире |
| instances_per_server | 1 | количество инстансов тира на каждом сервере. Если параметр не задан, то количество будет рассчитано автоматически. Данный параметр более приоритетен, чем `replicaset_count` |
| replication_factor | 1 | фактор репликации |
| can_vote | true | возможность инстансов участвовать в голосовании на выборах raft-лидера |
| config | | словарь для настройки инстансов тира, например указание размера инстанса. См. [подробнее](config.md) |
| extra_vars | | словарь с дополнительными переменными окружения для конкретного тира |
| db_config | | словарь с [параметрами конфигурации кластера](db_config.md) для тира |
| bucket_count | 30000 | количество бакетов в тире |
| can_vote | true | возможность инстансов тира участвовать в голосовании на выборах raft-лидера |

В переменных `extra_vars` можно использовать литерал `<INSTANCE_NUM>` для подстановки номера инстанса на сервере в значение переменной, пример:

```yaml
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` и так далее.

### Группировка хостов {: #host_groups }

Групп хостов может быть несколько:

```
host_groups:
- STORAGES
```

Если раздел `host_groups` не определен, то инстансы будут раскатаны на каждом сервере.

Переменная `host_group` должна быть определена в списке серверов.


## Переменные для хостов {: #host_vars }

Пример настройки хостов:

```
DC1:                                # имя датацентра 1
  hosts:
    server-1-1:                     # имя сервера 1
      ansible_host: 192.168.19.21   # адрес сервера 1
      host_group: 'ARBITERS'         # группа хостов

DC2:                                # имя датацентра 2
  hosts:
    server-2-1:                     # имя сервера 2
      ansible_host: 192.168.19.22   # адрес сервера 2
      host_group: 'STORAGES'        # группа хостов

DC3:                                # имя датацентра 3
  hosts:
    server-3-1:                     # имя сервера 3
      ansible_host: 192.168.19.23   # адрес сервера 3
      host_group: 'STORAGES'        # группа хостов
```

## Переменные для плагинов {: #plugin_vars }

| Имя | Значение по умолчанию | Описание |
| ---      | ---      | ---      |
| path |  | путь к пакету с плагином на локальном хосте |
| config |  | путь к конфигурационному файла плагина на локальном хосте (опционально) |
| plugin_timeout | 300 | время ожидания окончания выполнения команд при установки плагина |
| migration_context | | переменные для подстановки в миграциях (опционально) |
| migration_timeout | 300 | время ожидания окончания выполнения миграций |
| do_not_run_plugin_install_sql | false | не выполнять SQL-инструкции по включению и настройке плагина (используется для отладки) |
| do_not_enable_plugin | false | выполнить все SQL-инструкции настройке плагина, кроме его включения |
| services | | словарь с настройками для служб плагина (пока поддерживаются только тиры) |
