Настройка элементов окружения#

Зачастую точные настройки профиля и сервисов зависят от той среды, в которой данный профиль будет разворачиваться, соответственно для того, чтобы иметь возможность подставлять нужные значения. Для этого необходимо параметризовать конфигурационные файлы и подготовить файл с теми значениями параметров, которые необходимо поставить.

Например, доступен профиль override_error, и в нем необходимо параметризовать список серверов группы server_groups_back_1:

profile: override_error
version: 2.0.3
system:
  wrk_count: 1
  conn_count: 4096
  optional:
    log_level: debug
service:
 service_http_proxy:
   - id: rewrite_service
     name: service_2
     url:  ^/bye
     upstream_group_id:  back_1
     upstream_groups:
      - id: back_1
        servers:
#jinja2: lstrip_blocks: True
{% for server_group in server_groups_back_1 %}
          - server: {{ server_group.server }}
{% endfor %}
        rewrite_uri:
         - from: /
           to: /notFound
     allowed_queries:
       - method: get
     listen:
       - port: 11102
     postprocessors:
       postprocessor_error:
         code:
          - 404
         custom_pattern_file:  templates/pattern.json
         rules_file: rules/postrules.yml
         content_type: application/json;charset=UTF-8
         handle_upstream_errors: true

Необходимо создать файл с переменными env.yml, содержащий группу узлов балансировки:

server_groups_back_1:
  - { server: '127.0.0.1:10002', weight: '1' }
  - { server: '127.0.0.1:10003', weight: '1' }

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

[sowacfg@tkle-ish0038 proxies]$ sowa-config --config override_error.yml --environment env.yml
Profile override_error is running. Are you sure that you want to reconfigure? [y/n] y
Profile "override_error" was successfully configured.
[sowacfg@tkle-ish0038 proxies]$ sowa-config --restart override_error
Profile "override_error" was successfully stopped.
Profile "override_error" was successfully started.

Повторно отправить запрос к сервису Bye и проверить его работоспособность:

[sowacfg@tkle-ish0038 proxies]$ curl -v http://localhost:11102/bye
* About to connect() to localhost port 11102 (#0)
*   Trying 127.0.0.1...
* Connected to localhost (127.0.0.1) port 11102 (#0)
> GET /bye HTTP/1.1
> User-Agent: curl/7.29.0
> Host: localhost:11102
> Accept: */*
>
< HTTP/1.1 500 Internal Server Error
< Date: Wed, 07 Apr 2021 12:24:48 GMT
< Content-Type: application/json; charset=UTF-8
< Content-Length: 117
< Connection: keep-alive
< Server: SOWA
{
     "На стороне запрашиваемого сервера произошла ошибка"
* Connection #0 to host localhost left intact