DCImanager 6

Модификация контейнеров на сервере-локации

Для настройки докер-контейнеров на сервере-локации платформа использует конфигурационный файл /opt/ispsystem/dci/etc/location.yaml. Для описания конфигурации используется формат Docker Compose.

Вы можете изменить конфигурацию с помощью механизма патчей (модификаций). Патчи позволяют добавить в докер-контейнеры файлы, переменные окружения и дополнительные сервисы.

Пример создания патча

В примере рассматривается изменение переменной окружения IMPITOOL_PATH. После выполнения этих действий в докер-контейнере eservice_handler для запуска утилиты ipmitool будет использоваться файл /usr/bin/ipmitool_1.8.19.

  1. Подключитесь к серверу-локации по SSH.
  2. Создайте файл патча patch.yaml следующего содержания:

    patch.yaml
    version: "3.5"
    
    services:
      eservice_handler:
        environment:
          IPMITOOL_PATH: "/usr/bin/ipmitool_1.8.19"
  3. Закодируйте содержимое файла patch.yaml по стандарту Base64: 

    echo -ne "patch.yaml" | base64

    Сохраните вывод команды. 

    Пример вывода
    cGF0Y2gueWFtbA==
  4. Получите токен авторизации:
    curl -k -X POST -H "accept: application/json" -H "Content-Type: application/json" 'https://example.com/api/auth/v4/public/token' -d '{"email": "admin_email", "password": "admin_pass"}'
    Пояснения к команде

    В ответ придёт сообщение вида:

    Пример ответа в JSON
    {
      "confirmed": true,
      "expires_at": null,
      "id": "6",
      "token": "4-e9726dd9-61d9-2940-add3-914851d2cb8a"
    }

    Сохраните полученное значение параметра token — токен авторизации.

  5. Выполните API-запрос: 

    curl -k -# -d '{"patches":[{"name":"<patch_name>","patch":"<patch_base64>"}]}' -H "Cookie: ses6=<token>" -H "x-xsrf-token: <token>" -o- "https://domain.com/dci/v3/location/<location_id>/setup"
    Пояснения к команде

    DCImanager 6 запустит настройку локации с учётом созданного патча.

Управление патчами

Вы можете управлять патчами через API-запросы.

Добавить патчи
curl -k -# -d '{"patches":[{"name":"<patch1_name>","patch":"<patch1_base64>"},{"name":"<patch2_name>","patch":"<patch2_base64>"},{"name":"<patch3_name>","patch":"<patch3_base64>"}]}' -H "Cookie: ses6=<token>" -H "x-xsrf-token: <token>" -o- "https://domain.com/dci/v3/location/<location_id>/setup"
Если к локации уже были применены патчи, укажите их в списке patches. Патчи, не указанные в списке, будут удалены с локации.
Получить список используемых патчей
curl -k -# -X GET -H "Cookie: ses6=<token>" -H "x-xsrf-token: <token>" -o- "https://domain.com/dci/v3/location/<location_id>"

Вывод команды будет содержать параметр patches с данными о патчах.

Удаление всех патчей
curl -k -# -d '{"patches":[]}' -H "Cookie: ses6=<token>" -H "x-xsrf-token: <token>" -o- "https://domain.com/dci/v3/location/<location_id>/setup"
Пояснения к запросам

Управление модифицированными контейнерами

Для запуска и остановки модифицированных контейнеров на сервере-локации используйте скрипт /opt/ispsystem/dci/etc/location_compose.sh. Платформа формирует скрипт автоматически и включает туда информацию обо всех патчах, которые нужно запустить на локации. Если не использовать скрипт, то при перезапуске контейнеров текущие патчи удалятся. 

Запуск всех сервисов
/opt/ispsystem/dci/etc/location_compose.sh up -d
Остановка всех сервисов
/opt/ispsystem/dci/etc/location_compose.sh down