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://docs.mitigator.ru/ansible/mitigator.tar -O- | tar -x
wget https://docs.mitigator.ru/ansible/config.yml -O mitigator/config.yml

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

---
mitigator_arch: "nehalem"
mitigator_nic_driver: vfio-pci
mitigator_nics:
- pci_address: "0000:0b:00.0"
  lcore: 1
- pci_address: "0000:13:00.0"
  lcore: 2
mitigator_nr_addrs: 131072
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, sandybridge или haswell (указания по выбору).

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

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

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

    • mitigator_nr_addrs: размер таблицы проверенных адресов для контрмер DNS, HTTP, ATLS. Должен быть степенью двойки. Для физических машин рекомендуется 16777216 (224).

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

    • 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

2. Конфигурацию GRUB2 под UEFI на RHEL/CentOS необходимо дополнительно перегенерировать вручную:

grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg

Для CentOS redhat заменить на centos