Перейти к содержанию

Спецификация на готовый скрипт Вебмониторэкс cloud-init

Если вы следуете подходу Infrastructure as Code (IaC), вам может потребоваться скрипт cloud-init, чтобы развернуть ноду Вебмониторэкс в публичном облачном сервисе. Начиная с версии 4.0, облачные образы Вебмониторэкс поставляются вместе с готовым скриптом cloud-init.py. Этот документ описывает работу скрипта cloud-init.py.

Обзор скрипта cloud-init.py

Скрипт cloud-init доступен в файловой системе облачного образа Вебмониторэкс для AWS по пути /usr/share/wallarm-common/cloud-init.py. Скрипт выполняет первоначальную и расширенную настройку инстанса в AWS.

Основные действия скрипта:

  • Запускает ноду Вебмониторэкс в инстансе AWS. Для запуска скрипт запрашивает токен ноды, предварительно зарегистрированной в Вычислительном кластере Вебмониторэкс.

  • Настраивает ноду Вебмониторэкс.

  • Выполняет проверку работоспособности кластера балансировки нагрузки.

Скрипт cloud-init запускается только один раз, при первоначальном старте инстанса. При перезапуске инстанса скрипт не вызывается. Принцип работы скрипта описан более подробно в документации AWS.

Запуск скрипта cloud-init.py

Вы можете запустить скрипт cloud-init.py следующим образом:

  • Запустить отдельный инстанс и задать настройки скрипта cloud-init.py в метаданных инстанса

  • Создать шаблон для запуска инстанса (Launch Template) со скриптом cloud-init.py и затем создать auto scaling group на его основе

Пример вызова скрипта для запуска ноды Вебмониторэкс в виде прокси-сервера для httpbin.org:

#!/bin/bash
set -e

### Prevent NGINX from running without
### Вебмониторэкс enabled, it is not recommended to
### run health check before all things get done
###
systemctl stop nginx.service

/usr/share/wallarm-common/cloud-init.py \
    -t xxxxx-base64-registration-token-from-wallarm-cloud-xxxxx \
    -p proxy \
    -m monitoring \
    --proxy-pass https://httpbin.org

systemctl restart nginx.service

echo Вебмониторэкс Node successfuly configured!

Справка о скрипте cloud-init.py

usage: /usr/share/wallarm-common/cloud-init.py [-h] -t TOKEN [-H HOST] [--skip-register] [-p {proxy,mirror,custom}]
                                                      [-m {off,monitoring,safe_blocking,block}] [--proxy-pass PROXY_PASS]
                                                      [--libdetection] [--global-snippet GLOBAL_SNIPPET_FILE]
                                                      [--http-snippet HTTP_SNIPPET_FILE] [--server-snippet SERVER_SNIPPET_FILE]
                                                      [-l LOG_LEVEL]

Runs the Вебмониторэкс node with the specified configuration in the PaaS cluster. https://docs.wallarm.com/installation/cloud-
platforms/cloud-init/

optional arguments:
  -h, --help            show this help message and exit
  -t TOKEN, --token TOKEN
                        Вебмониторэкс node token copied from the Вебмониторэкс Console UI.
  -H HOST, --host HOST  Вебмониторэкс API server specific for the Вебмониторэкс Cloud being used: https://docs.wallarm.com/about-wmx-
                        waf/overview/#cloud. By default, api.wallarm.com.
  --skip-register       Skips the stage of local running the node created in the Вебмониторэкс Cloud (skips the register-node script
                        execution). This stage is crucial for successful node deployment.
  -p {proxy,mirror,custom}, --preset {proxy,mirror,custom}
                        Вебмониторэкс node preset: "proxy" for the node to operate as a proxy server, "mirror" for the node to process
                        mirrored traffic, "custom" for configuration defined via NGINX snippets only.
  -m {off,monitoring,safe_blocking,block}, --mode {off,monitoring,safe_blocking,block}
                        Traffic filtration mode: https://docs.wallarm.com/admin-en/configure-parameters-en/#wallarm_mode.
  --proxy-pass PROXY_PASS
                        Proxied server protocol and address. Required if "proxy" is specified as a preset.
  --libdetection        Whether to use the libdetection library during the traffic analysis: https://docs.wallarm.com/about-wmx-
                        waf/protecting-against-attacks.md#library-libdetection.
  --global-snippet GLOBAL_SNIPPET_FILE
                        Custom configuration to be added to the NGINX global configuration.
  --http-snippet HTTP_SNIPPET_FILE
                        Custom configuration to be added to the "http" configuration block of NGINX.
  --server-snippet SERVER_SNIPPET_FILE
                        Custom configuration to be added to the "server" configuration block of NGINX.
  -l LOG_LEVEL, --log LOG_LEVEL
                        Level of verbosity.

This script covers a few most popular configurations for AWS, GCP, Azure and other PaaS. If you need a more powerful configuration,
you are welcome to review Вебмониторэкс node public documentation: https://docs.wallarm.com.