# План добавления SSL preread map в роль nginx

## Описание задачи
Добавить поддержку создания stream-конфигураций с `ssl_preread` и `map` для маршрутизации TLS-трафика на основе SNI.

## Текущая структура
- `tasks/nginx-stream.yml` - импортирует конфигурацию stream
- `templates/nginx-stream.j2` - шаблон stream-конфигурации
- `defaults/main.yml` - переменная `nginx_streams` с примерами

## План реализации

### 1. Обновить шаблон `templates/nginx-stream.j2`
Добавить поддержку двух типов stream-конфигураций:
- **Обычный proxy** (текущий функционал)
- **SSL preread map** (новый функционал)

#### Для SSL preread map потребуется:
- `map` блок для сопоставления SNI-имён с upstream-ами
- `upstream` блоки для каждого target
- `server` блок с `ssl_preread on` и `proxy_pass $name`

### 2. Обновить `defaults/main.yml`
Добавить пример stream-конфигурации с ssl_preread:
```yaml
nginx_streams:
  - stream: HTTPS_ssl_preread
    listen_port: 443
    type: ssl_preread
    ssl_preread:
      server_names:
        - storagecat.ru: ocserv
      default_target: https
    upstreams:
      - name: https
        servers:
          - 127.0.0.1:8443
      - name: ocserv
        servers:
          - 127.0.0.1:9443
    proxy_timeout: 4s
    proxy_responses: 1
```

### 3. Обновить `tasks/nginx-stream.yml` (при необходимости)
Проверить, что задача корректно обрабатывает оба типа stream-конфигураций.

## Пример выходной конфигурации
```
# Ansible Managed: DO NOT EDIT
# Конфигурация для HTTPS_ssl_preread

map $ssl_preread_server_name $name {
    storagecat.ru ocserv;
    default https;
}

upstream https {
    server 127.0.0.1:8443;
}

upstream ocserv {
    server 127.0.0.1:9443;
}

server {
    listen 443;
    ssl_preread on;
    proxy_protocol on;
    proxy_pass $name;
    proxy_timeout 4s;
    proxy_responses 1;
}
```

## Шаги реализации
1. Создать новый шаблон `templates/nginx-stream-ssl-preread.j2`
2. Обновить `templates/nginx-stream.j2` для поддержки обоих типов
3. Добавить пример в `defaults/main.yml`
4. Протестировать на примере из `playbooks/vm-balancer.yml`

## Вопросы для уточнения
- [x] Формат данных: расширить текущую структуру nginx_streams
- [x] Обязательные параметры: server_names, upstream_name, default_target
- [x] Дополнительные параметры: proxy_timeout, proxy_responses, proxy_bind, proxy_connect_timeout
