Ansible

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

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

apt install -y ansible tar wget

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

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

Следует устанавливать Docker Compose версии v1. Работоспособность MITIGATOR с Docker Compose версии v2 не гарантируется.

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

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

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

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

wget https://docs.mitigator.ru/v22.08/ansible/mitigator.tar -O- | tar -x
wget https://docs.mitigator.ru/v22.08/ansible/config.yml -O mitigator/config.yml

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

---
mitigator_arch: "nehalem"
mitigator_nic_driver: vfio-pci
mitigator_nics:
- "0b:00.0"
- "13:00.0"
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: ""
  • mitigator_arch: микроархитектура процессора, для которой будет загружена оптимизированная сборка обработчика пакетов: nehalem или haswell (указания по выбору).

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

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

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

    • 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 безопасно исполнять повторно в случае проблем.

Дополнение

1. Задания в роли ансибла разделены на 4 «тега»: checks, system, hugepages, mitigator.

Задания под тегом, соответственно, предназначены для проверки конфигурации, настройки системы, настройки hugepages и настройки непосредственно MITIGATOR. При необходимости перезапустить роль и перенастроить установку только частично, можно запустить playbook с необходимым набором тегов, например:

ansible-playbook --become --ask-become-pass \
    --tags "system,hugepages" \
    -i mitigator.local, mitigator/mitigator.yml

После установки и запуска настроить систему для её стабильной и безопасной работы.