Сервер

Эта инструкция описывает системные требования и порядок развёртывания сервера подсистемы топологии.

Системные требования

Для развёртывания сервера подсистемы топологии требуется один узел с характеристиками не ниже указанных:

Параметр Значение

Количество ядер CPU

4

Объём оперативной памяти, ГБ

16

Дисковое пространство, ГБ

40

Скорость работы сетевого интерфейса, ГБит/с

1

Операционные системы

Узел для развёртывания подсистемы топологии должен работать под управлением ОС из этого списка:

  • Альт 8 СП c10f2.2;

  • Альт 8 СП c10f1.

Установка

Чтобы развернуть сервер подсистемы топологии:

  1. Загрузите на узел файл установщика foliage-new-26W23HF06-3.run.

  2. Сделайте файл установщика исполняемым:

    chmod +x foliage-new-26W23HF06-3.run
  3. Запустите установщик и дождитесь завершения его работы:

    ./foliage-new-26W23HF06-3.run

Настройка конфигурации

Чтобы настроить конфигурацию подсистемы топологии:

  1. Перейдите в директорию /opt/foliage/build/configs/.

    cd /opt/foliage/build/configs/
  2. Заполните конфигурационные файлы, соблюдая следующие требования:

    • Файлы должны иметь кодировку UTF-8.

    • Структура файлов формата JSON должна полностью соответствовать предоставленному шаблону.

    • Параметры указывайте в соответствии с данными, содержащимися в инсталляционной карте (ИК).

/opt/foliage/build/configs/common/nats/nats-machine.json

В конфигурационном файле nats-machine.conf:

  • В значении параметра jetstream.domain укажите название пространства (REALM), созданного в IAM.

  • При необходимости в секции authorization укажите учётные данные для подключения к сторонней службе NATS.

Пример заполнения файла nats-machine.conf
# ...
jetstream {
  store_dir: /data/jetstream
  max_file_store: 40G
  domain: "GENOME"
}
# ...
authorization {
  users = [
    {
      user: "nats-user",
      password: "********"
    }
  ]
}

/opt/foliage/build/configs/machine/main_config.json

В конфигурационном файле main_config.json в блоке oob_connectors укажите параметры подключения:

  • oob_connectors.basis_dynamix — к Basis Dynamix;

  • oob_connectors.dso — к дисковым полкам;

  • oob_connectors.eso — к коммутаторам;

  • oob_connectors.nmrd — к NRMD;

  • oob_connectors.snmrd.vision — к подсистеме мониторинга.

При необходимости в секции external_services укажите параметры сервиса, ссылку на который нужно добавить на главную страницу топологии нужного ПАК.

Пример заполнения файла main_config.json
{
  // ...
  "oob_connectors": {
    "basis_dynamix": {
      "repeat_interval_sec": 30
    },
    "dso": {
      "repeat_interval_sec": 30,
      "snmp_community_string": "public"
    },
    "eso": {
      "repeat_interval_sec": 40,
      "snmp_community_string": "public"
    },
    "nnmrd": {
      "repeat_interval_sec": 30
    },
    "snmrd": {
      "repeat_interval_sec": 30,
      "vision": {
        "url": "http://<monitoring>:8080/vision/api/v1/object/",
        "auth": {
          "bearer_token": "<token>"
        }
      }
    }
  },
  // ...
  "external_services": [
    {
      "name": "Service Name",
      "remote_url": "https://mbdp-service.example.com",
      "type": "cmdb",
      "hss_id": "МБД.П-001"
    }
  ]
}

Здесь:

  • <monitoring> — IP-адрес или доменное имя сервера подсистемы мониторинга;

  • <token> — токен, созданный на этапе Генерация токена.

/opt/foliage/build/docker-compose-machine.yaml

В конфигурационном файле docker-compose-machine.yaml настройте порты контейнеров сервисов:

Пример заполнения файла docker-compose-machine.yaml
---
services:
  nats-machine:
    image: ${SKALA_COMPOSE_IMAGE_PREFIX:-}library/nats:2.12.4
    networks:
      - backend_network
      - frontend_network
    restart: always
    command: -c /etc/nats/nats.conf
    ports:
      - "4223:4222"
      - "6223:6222"
      - "7423:7422"
      - "8223:8222"
      - "11443:443"
    volumes:
      - ./configs/common/nats/nats-machine.conf/:/etc/nats/nats.conf
      - ../data/nats/machine:/data/jetstream

/opt/foliage/build/configs/common/nmrd/networks.json

В конфигурационный файл networks.json добавьте сведения о сетях ПАК.

Пример заполнения файла networks.json
{
  "1": {
    "role": "client",
    "subnet": "101.53.19.0/24",
    "vlan_name": "vlan1"
  },
  "100": {
    "role": "mgmt",
    "subnet": "116.43.18.0/24",
    "vlan_name": "vlan100"
  },
  "102": {
    "role": "intrcn",
    "subnet": "10.73.74.0/24",
    "vlan_name": "vlan102"
  }
}
Таблица 1. Источники данных в инсталляционной карте
Атрибут Лист ИК Поля в ИК Пример Комментарий

vlan_id

L3 interfaces

Столбец "H"

100

Идентификатор VLAN

vlan_id.role

L3 interfaces

Столбец "P"

mgmt

Роль сети

vlan_id.subnet

IP map

Столбец "L"/Столбец "K"

116.43.18.0/24

Подсеть с маской

vlan_id.vlan_name

 — 

 — 

vlan100

Название VLAN

vlan_name заполните по своему усмотрению. Например, может быть использована конструкция vlan_<id>.

/opt/foliage/build/configs/common/nmrd/virtual_location.json

В конфигурационном файле virtual_location.json укажите сведения о размещении узлов в серверных стойках.

Пример заполнения файла virtual-location.json
{
  "sites": [
    {
      "name": "B4",
      "rooms": [
        {
          "name": "30H8"
        },
        {
          "name": "30H9"
        }
      ]
    },
    {
      "name": "A2",
      "rooms": [
        {
          "name": "10A1"
        }
      ]
    }
  ],
  "racks": [
    {
      "name": "E010",
      "description": null,
      "height_ru": 48,
      "power_limit": 8000,
      "total_power": 4767,
      "total_max_power": 9590,
      "total_BTU_hr": 32721.08,
      "total_C14_plugs": 24,
      "total_C20_plugs": 0
    },
    {
      "name": "E011",
      "description": null,
      "height_ru": 48,
      "power_limit": 8000,
      "total_power": 4767,
      "total_max_power": 9590,
      "total_BTU_hr": 32721.08,
      "total_C14_plugs": 24,
      "total_C20_plugs": 0
    }
  ],
  "devices": [
    {
      "name": "SWGenom2",
      "description": "PG-1 - BS access switch 2",
      "type": "switch",
      "location": {
        "site": "B4",
        "room": "30H8",
        "row": null,
        "rack": "E010",
        "units": [48]
      }
    },
    {
      "name": "srv1.eu-west-1.domain.name",
      "description": "PG-1 - DB service node 1",
      "type": "server",
      "location": {
        "site": "B4",
        "room": "30H8",
        "row": null,
        "rack": "E010",
        "units": [15, 16]
      }
    },
    {
      "name": "mock-disk-shelf-1",
      "description": "PG-1 - BS backup shelf 1",
      "type": "storage",
      "location": {
        "site": "B4",
        "room": "30H8",
        "row": null,
        "rack": "E010",
        "units": [1, 4]
      }
    }
  ]
}
Таблица 2. Источники данных в инсталляционной карте
Атрибут Лист ИК Поля в ИК Пример Комментарий

sites.name

Racks

Столбец "A"

ADM2

Название площадки (venue)

sites.rooms.name

Racks

Столбец "B"

D6.02

Комната

racks.name

Racks

Столбец "C"

F09

Название стойки с оборудованием

racks.description

Racks

Столбец "D"

null

Описание стойки с оборудованием, может быть не заполнено (null)

racks.height_ru

Racks

Столбец "E"

48

Высота стойки в юнитах

racks.power_limit

Racks

Столбец "F"

8000

 — 

racks.total_power

Racks

Столбец "G"

1645

 — 

racks.total_max_power

Racks

Столбец "H"

4900

 — 

racks.total_BTU_hr

Racks

Столбец "I"

15319,88

 — 

racks.total_C14_plugs

Racks

Столбец "J"

10

 — 

racks.total_C20_plugs

Racks

Столбец "K"

0

 — 

devices.name

Devices

Столбец "A"

p1-m1-node1

Имя узла

devices.description

Devices

Столбец "E"

null

Описание узла, может быть не заполнено (null)

devices.type

Devices

Столбец "F"

server

Тип узла

devices.location.site

Devices

Столбец "G"

ADM2

 — 

devices.location.room

Devices

Столбец "H"

D6.02

 — 

devices.location.row

 — 

 — 

null

Не используется

devices.location.rack

Devices

Столбец "I"

F09

 — 

/opt/foliage/build/configs/common/nmrd/tatlin_mgmt_ports_macs.json

Если в состав ПАК входит СХД Tatlin, укажите сведения о MAC-адресах её сетевых портов в конфигурационном файле tatlin_mgmt_ports_macs.json.

Для получения сведений о MAC-адресах авторизуйтесь в веб-интерфейсе СХД Tatlin и перейдите в раздел Настройки  Порты.
Пример заполнения файла tatlin_mgmt_ports_macs.json
{
  "mgmt_ports_macs": [
    {
      "p30_address": "14:52:90:02:4d:18",
      "mgmt_address": "a0:c5:f2:13:b4:4c"
    },
    {
      "p30_address": "14:52:90:02:4d:98",
      "mgmt_address": "a0:c5:f2:13:5e:a6"
    }
  ]
}

Здесь:

MAC Описание

a0:c5:f2:13:b4:4c

Порт управления SP-0

a0:c5:f2:13:4e:a6

Порт управления SP-1

14:52:90:02:4d:18

Порт Ethernet SP-0 p30

14:52:90:02:4d:98

Порт Ethernet SP-1 p30

/opt/foliage/build/configs/machine/genome_metamodel.yaml

Конфигурационный файл genome_metamodel.yaml заполните по образцу:

---
version: v1
kind: GenomeInstallationMap

# Конфигурационные единицы
ci:
  # Конфигурационная единица Геном
  - id: ci-001
    type: genome
    props:
      name: Геном
      version: "2.0.1"
      deployId: dep-20260630-001
      deployTimestamp: "2026-06-30T10:00:00Z"

  # Прочие конфигурационные единицы
  # ...

# Связи между конфигурационными единицами
rel:
  - id: rel-001
    type: consists_of
    fromId: ci-001
    toId: platform

Все конфигурационные единицы заполняйте по образцу:

  • id — уникальный идентификатор.

  • type — тип конфигурационной единицы:

    • genome — Геном.

      Конфигурационная единица с типом genome должна быть единственной.
    • subsystem — подсистема.

    • component — компонент.

    • instance — экземпляр компонента.

  • props — свойства конфигурационной единицы. Список полей зависит от значения, указанного в поле type.

Возможные значения props для типа genome:

  • deployId — идентификатор развёртывания;

  • deployTimestamp — метка времени развёртывания в формате ISO 8601;

  • name — название системы;

  • version — версия системы.

Возможные значения props для типа subsystem:

  • deployId — идентификатор развёртывания;

  • deployTimestamp — метка времени развёртывания в формате ISO 8601;

  • name — название системы;

  • version — версия системы.

Возможные значения props для типа component:

  • name — название компонента;

  • type — тип компонента:

    • agent — агент;

    • cluster — кластерный компонент (из нескольких узлов);

    • proxy — прокси;

    • single — одноузловой компонент.

Возможные значения props для типа instance:

  • hostname — сетевое имя узла.

  • ipAddresses — список IP-адресов узла.

    Значения в этом поле должны быть указаны в виде корректного списка в формате YAML:

    # ...
    ci:
      # ...
      - id: platform-postgres-01
        type: instance
        props:
          hostname: platform-postgres-01
          ipAddresses:
            - 10.10.20.11
            - 10.10.120.11
          type: node

    Также допускается сокращённая запись:

    # ...
    ci:
      # ...
      - id: platform-postgres-01
        type: instance
        props:
          hostname: platform-postgres-01
          ipAddresses: [ 10.10.20.11, 10.10.120.11 ]
          type: node
  • type — тип экземпляра:

    • node — только если родительский компонент имеет тип cluster;

    • standalone — если родительский компонент имеет тип agent, proxy или single.

Связи указывайте в следующем формате:

rel:
  - id: rel-001 (1)
    type: consists_of (2)
    fromId: ci-001 (3)
    toId: platform (4)

Здесь:

1 Идентификатор связи.

Идентификаторы связей указывайте в формате rel-XYZ, где XYZ — счётчик, начинающийся с 001.

Корректные идентификаторы: rel-001, rel-002, …​, rel-201.

2 Тип связи.

Единственный допустимый тип связи — consists_of.

3 Идентификатор родительского объекта.
4 Идентификатор дочернего объекта.

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

fromId toId Описание

genome

subsystem

Система содержит подсистемы

subsystem

component

Подсистема содержит компоненты

component

instance

Компонент содержит экземпляры

/pot/foliage/build/configs/machine/.env

В конфигурационном файле .env:

  • В значении параметра OSM_APP_HUB_DOMAIN укажите название пространства, созданного в IAM.

  • Укажите учётные данные и параметры подключения к соответствующим службам:

    • Arenadata Cluster Manager:

      • ADCM_ADMIN_password — пароль;

      • ADCM_ADMIN_username — название учётной записи.

    • Basis.Dynamix:

      • DYNAMIX_API_KEY — ключ доступа к API Basis.Dynanix;

      • DYNAMIX_API_URL — URL конечной точки доступа к API Basis.Dynamix;

      • DYNAMIX_APP_ID — идентификатор приложения для авторизации в Basis.Dynamix;

      • DYNAMIX_SSO_URL — URL конечной точки доступа для SSO Basis Dynamix;

      • NATS_URL — строка подключения к NATS.

    • Хранилище S3:

      • MICROVAULT_REALM1_SECRET_ID — секрет S3 REALM;

      • MICROVAULT_REALM1_PASSWORD_SECRET_ID — пароль пользователя S3 REALM.

Пример заполнения файла .env
OSM_APP_HUB_DOMAIN=GENOME

ADCM_ADMIN_username=admin
ADCM_ADMIN_password=admin

MICROVAULT_REALM1_SECRET_ID=6QNDN...JVU7
MICROVAULT_REALM1_PASSWORD_SECRET_ID=P@ss*****0rD

DYNAMIX_API_KEY="5a********COGQD"
DYNAMIX_API_URL="https://dynamix.example.com/"
DYNAMIX_APP_ID="29sX********0d9pF"
DYNAMIX_SSO_URL="https://sso-dynamix.example.com/v1/oauth/access_token"

/opt/foliage/build/configs/modules/seeder/ik/s3_realms.yml

При использовании ПАК МХД.О в файле s3_realms.yml укажите параметры подключения к хранилищу S3.

В поле items создайте записи для каждого REALM, используемого в ПАК.

  • iam_realm — название REALM в IAM;

  • api_url — URL точки доступа к API Спектр S3. Заполняйте по шаблону:

    http://spectrum-s3.example.com:6006/s3gateway/api
  • client_id — идентификатор клиента IAM;

  • client_secret_ref — название ключа в Microvault, в котором хранится секрет клиента IAM;

  • iam_url — URL IAM Спектр S3. Заполняйте по шаблону:

    http://spectrum-s3.example.com:8443/
  • password_ref — название ключа в Microvault, в котором хранится пароль для доступа к IAM;

  • tls_check — проверка TLS-сертификатов при подключении к IAM:

    • true — включена;

    • false — выключена.

  • username — название учётной записи администратора IAM.

Пример заполнения s3_realms.yml
---
type: ik-realm
root_id: scala_hlm_seeder_root
items:
  - iam_realm: spectre
    api_url: http://spectrum-s3.example.com:6006/s3gateway/api
    client_id: admin-cli
    client_secret_ref: MICROVAULT_REALM1_SECRET_ID
    iam_url: http://spectrum-s3.example.com:8443
    password_ref: MICROVAULT_REALM1_PASSWORD_SECRET_ID
    tls_check: false
    username: admin

В значениях полей client_secret_ref и password_ref укажите названия переменных, существующих в файле .env.

/opt/foliage/build/configs/modules/seeder/ik/arenadata.yml

При использовании ПАК МБД.Х в файле arenadata.yml укажите параметры подключения к Basis Virtual Security.

В блоке items создайте записи, в которых укажите параметры подключения к БД:

  • id — сетевое имя узла, на котором развёрнут ADCM.

    Если ИК представлена в виде электронной таблицы, нужное значение возьмите с листа spec из колонки hostname.

    Если ИК представлена в виде YAML-файла, найдите блок с полем Description, в значении которого указано ADCM.

  • cred_ref — название ключа в MicroVault, в котором хранится название учётной записи ADCM.

  • hostname — доменное имя или IP-адрес мастера соответствующего кластера.

  • label — название кластера, отображаемое на страницах топологии.

  • url — URL для доступа к API ADCM кластера.

Пример заполнения arenadata.yml
---
type: ik_arenadata
root_id: arenadata
items:
  - id: adcm-mbdg
    cred_ref: ADCM_ADMIN_MBDG
    hostname: adcm-mbdg
    label: ADCM MBD.G
    url: http://adcm-mbdg.example.com:8000

  - id: adcm-mbdh
    cred_ref: ADCM_ADMIN_MBDH
    hostname: adcm-mbdh
    label: ADCM MBD.H
    url: http://adcm-mbdh.example.com:8000

Развёртывание

После заполнения конфигурационных файлов:

  1. Примените изменения:

    cd /opt/foliage && ./start.sh --prod --machine --ui
  2. Чтобы не допустить утечки конфиденциальных данных, переместите файл /opt/foliage/build/configs/machine/.env в надёжное место.

Проверка корректности

Проверьте статусы контейнеров:

docker ps

Проверка считается успешной, если:

  • сервис NATS слушает порт 4223;

  • интерфейс мониторинга NATS слушает порт 8223;

  • для JetStream настроено пространство (REALM);

  • данные подсистемы топологии отображаются в веб-интерфейсе подсистемы мониторинга.