Ansible

Playbook работает для Debian 9 и 10, Ubuntu 16.04+, CentOS 7.2. Необходим доступ от целевой машины к репозитариям дистрибутива

1. Установить Ansible (пример для Debian/Ubuntu):

sudo apt-get --yes install ansible tar wget

2. Установить Docker и Docker-Compose:

Следуя официальной документации по установке для вашей ОС:

Если в системе отсутствует /etc/docker/daemon.json, будет установлен следующий:

{
    "log-driver": "json-file",
    "log-opts": {
      "max-size": "50m",
      "max-file": "2"
    }
}

Существующий файл изменен не будет, в этом случае следует совместить конфигурации вручную.

3. Скачать и распаковать необходимые файлы:

wget https://docker.mitigator.ru/ansible/mitigator.tar -O- | tar -x
wget https://docker.mitigator.ru/ansible/config.yml -O mitigator/config.yml

4. Отредактировать mitigator/config.yml (параметры по умолчанию годятся для минимальной конфигурации):

---
mitigator_arch: "nehalem"
mitigator_nic_driver: uio_pci_generic
mitigator_nics:
- pci_address: "0000:0b:00.0"
  lcore: 1
- pci_address: "0000:13:00.0"
  lcore: 2
mitigator_cpus: "3"
mitigator_nr_addrs: 131072
mitigator_nr_conns: 1048576
mitigator_hugepage_size: "2M"
mitigator_hugepage_nr: 1536
mitigator_nr_policies: 100

#mitigator_version: latest

#mitigator_registry_user: guest
#mitigator_registry_pass: mitigator
#mitigator_pull_images: y

#mitigator_http_proxy: ""
#mitigator_https_proxy: ""
#mitigator_no_proxy: ""

#docker_http_proxy: ""
#docker_https_proxy: ""
#docker_no_proxy: ""
  • mitigator_arch: микроархитектура процессора, для которой будет загружена оптимизированная версия обработчика пакетов. Варианты: nehalem (самый старый), sandybridge, haswell.

  • mitigator_nic_driver: драйвер сетевой карты для DPDK (подробнее о выборе).

  • Настройки обработчика пакетов:

    • mitigator_nics: сетевые порты с указанием PCI-адресов и ядер процессора. Подразумевается, что они перечислены в порядке ext0, int0, ext1, int1 и т. д. Портов может быть нечетное количество и даже один.

    • mitigator_cpus: список ядер, применяющих контрмеры (workers).

    • mitigator_nr_addrs, mitigator_nr_conns: размеры таблиц проверенных адресов и отслеживаемых соединений.

  • Настройки больших страниц:

    • mitigator_hugepage_size: размер страницы (2M или 1G);
    • mitigator_hugepage_nr: количество страниц.
  • mitigator_nr_policies: максимальное количество политик защиты.

  • Можно указать версию Mitigator´а (latest по умолчанию).

  • При первом запуске и при mitigator_pull_images: y будет выполнена загрузка образов Mitigator´а, для чего нужно задать логин и пароль: mitigator_registry_user и mitigator_registry_pass.

  • Можно настроить прокси для Docker´а и компонент Mitigator´а.

5. Развернуть Mitigator на целевую машину mitigator.local, куда есть доступ по SSH:

ansible-playbook --become --ask-become-pass \
    -i mitigator.local, mitigator/mitigator.yml

Запятая после имени хоста — не опечатка. Если имя пользователя SSH отличается от локального, например, login, добавляется параметр -u login.

--become и --ask-become-pass используются для повышения привилегий, когда подключение осуществляется не напрямую через пользователя root (необходимо для выполнения части задач в процессе инсталяции).

В конце установки машина перезагрузится.

Playbook безопасно исполнять повторно в случае проблем.