# Роль install-stcp

Данная роль предназначена для автоматической установки STCP-сервера.

## Параметры 

Все параметры имеют значения по-умолчанию (указаны в скобках). Поддерживаемые значения перечислены в {таких скобках}

| Параметр | Описание |
| -------- | -------- |
| server_port | Начальный порт, на котором работает STCP-server (5006)
| links_number | Количество линков агрегации (8)
| link_start_ip_addr | Начальный адрес линков (192.168.56.2)
| link_ip_mask | Маска линков (255.255.255.252)
| ext_iface | Внешний интерфейс (eth0)
| stcp_level | Сетевой уровень, на котором работает сервер {(l3), l2}
| l2_bridge_name | Имя сетевого моста для уровня L2 (br_l2)
| l2_bridge_ipaddr | IP-адрес сетевого моста (10.100.0.1)
| l2_bridge_ipmask | IP-маска сетевого моста (255.255.255.0)
| l2_iface | Интерфейс, который включается в сетевой мост помимо stcp-tap (eth1)
| stcp_mode | Режим работы STCP-сервера {tun, tap, (tuntap)}
| stcp_runas | Имя пользователя, от которого запускается сервер 
| run_stcp | Стартовать ли сервер после деплоя {(yes), no}
| use_auth | Использование аутентификации {yes, (no)}
| use_client_logging | Использование логирования подключений {(yes), no} 
| tap_iface_ip_addr | IP-адрес TAP-интерфейса (10.10.1.1)
| tap_iface_ip_mask | IP-маска TAP-интерфейса (255.255.255.0)
| tun_iface_ip_addr | IP-адрес TUN-интерфейса (10.11.1.1)
| tun_iface_ip_mask | IP-маска TUN-интерфейса (255.255.255.0)

В директории defaults/ содержится ряд дополнительных параметров. В основном это пути расположения исполняемого файла STCP-сервера, скриптов запуска и т.п., а также настройки сервера по умолчанию, их можно переопределить:
```
# defaults file for install-stcp
stcp_base_dir: /opt/stcp
stcp_binary_path: '{{stcp_base_dir}}/multi_srv_raw'
stcp_instance_name: '{{ server_port }}_{{ server_port + links_number-1 }}'
stcp_instance_dir: '{{ stcp_base_dir }}/{{ stcp_instance_name }}'
loop_script_path: '{{stcp_base_dir}}/loop'
init_scripts_dir: /etc/init.d
clients_log_file_path: '{{ stcp_instance_dir }}/logc'
users_file_path: '{{ stcp_instance_dir }}/users.ini'

# default stcp conf settings
stcp_mtu_size: 1500
en_peer_to_peer: 1
en_print_info: 1
stcp_http_srv_addr: 127.0.0.1
stcp_http_srv_port: 1888
max_sessions_threshold: 8
min_sessions_threshold: 4
flush_sort_delay_max: 600000
flush_sort_delay_min: 200000
flush_sort_add_time: 100000
split_tcp_sessions: 2
```

## Применение

Пример ansible playbook, использующего эту роль приведён ниже. В данном случае создаётся два инстанса STCP-сервера в режиме TUNTAP c указаными параметрами.

```
- name: Install fully worked (I hope) STCP server
  hosts: 127.0.0.1
  connection: local
  become: yes

  roles:
    - role: install-stcp
      server_port: 5006
      link_start_ip_addr: 192.168.56.34
      ext_iface: eth0
      use_auth: no
      use_client_logging: yes

      stcp_mode: tuntap
      tun_iface_ip_addr: 10.11.1.1
      tun_iface_ip_mask: 255.255.255.0
      tap_iface_ip_addr: 10.10.1.1
      tap_iface_ip_mask: 255.255.255.0
```

## Зависимости

```
    python | netaddr
```
