Миграция позволяет перенести настройки и оборудование из панели управления DCImanager 5 в платформу DCImanager 6. Миграция выполняется в полуавтоматическом режиме из консоли сервера с DCImanager 6. Возможна миграция из одной или нескольких панелей управления DCImanager 5.

Если у DCImanager 5 настроена интеграция с BILLmanager, тарифы и услуги выделенных серверов будут автоматически переведены на обработчик DCImanager 6.

Этапы миграции:

  1. Подготовка ПО — DCImanager 5, DCImanager 6, IPmanager 5, BILLmanager.
  2. Перенос адресного пространства — используемых IP-адресов, пулов и сетей.
  3. Перенос объектов DCImanager 5 — пользователей, оборудования, настроек подключения, VLAN, складов.
  4. Изменение настроек BILLmanager.

Обратите внимание!

При миграции:

  • не будут перенесены:
    • тестовые коммутаторы и PDU с типом Dummy;
    • коммутаторы и PDU с пользовательскими обработчиками;
    • пользователи с ролью "Оператор";
  • для каждого сервера будет создано только одно подключение к PDU.

Подготовка ПО


DCImanager 5

  1. В настройках всех серверов укажите стойки и юниты, в которых эти серверы расположены.
  2. В настройках всех блейд-серверов укажите юниты шасси, в которых эти серверы расположены.
  3. Создайте временного пользователя для интеграции. При создании выберите уровень доступа — Администратор.
  4. Сформируйте одноразовый ключ для авторизации:
    1. Подключитесь к серверу с DCImanager 5 по SSH с правами суперпользователя.
    2. Выполните команду:

      /usr/local/mgr5/sbin/mgrctl -m dcimgr session.newkey username=<integration_user> key=<secret_key>
      CODE

      <integration_user> — пользователь для интеграции

      <secret_key> — ключ для авторизации — случайная комбинация длиной не менее 16 символов

    3. Сохраните значение ключа.

      Обратите внимание!

      По этому ключу можно авторизоваться только один раз. Для повторной миграции ключ нужно сформировать заново.

  5. Создайте временного пользователя БД и разрешите ему доступ к таблице пользователей: 

    1. Откройте доступ к MySQL.
      Команды для ОС CentOS 7:

      firewall-cmd --new-zone=migration-mysql --permanent
      CODE
      firewall-cmd --reload
      CODE
      firewall-cmd --zone=migration-mysql --add-source=<IP address> --permanent
      CODE
      firewall-cmd --zone=migration-mysql --add-port=3306/tcp --permanent
      CODE
      firewall-cmd --reload
      
      CODE

      <IP address> — IP-адрес, с которого разрешён доступ

    2. Создайте временного пользователя с доступом только для чтения:

      1. Зайдите в консоль базы данных: 

        mysql
        CODE
      2. Выполните команды:

        CREATE USER '<user>'@'localhost' IDENTIFIED BY '<password>';
        CODE
        CREATE USER '<user>'@% IDENTIFIED BY '<password>';
        CODE
        GRANT SELECT, SHOW VIEW ON dcimgr.users TO '<user>'@'localhost';
        CODE
        GRANT SELECT, SHOW VIEW ON dcimgr.users TO '<user>'@'%';
        CODE
        FLUSH PRIVILEGES;
        CODE

        <user> — имя временного пользователя

        <password> — пароль временного пользователя

DCImanager 6

  1. Создайте резервную копию платформы.

  2. Создайте и настройте локацию.
  3. Загрузите необходимые шаблоны ОС.
  4. Установите и настройте необходимые модули.

IPmanager 5

  1. Убедитесь, что IPmanager 5 использует СУБД MySQL или MariaDB. Если IPmanager 5 использует СУБД SQLite, перейдите на использование СУБД MySQL. Подробнее см. в статье Использование MySQL в качестве СУБД документации IPmanager. 

    Обратите внимание!

    Рекомендуемая версия MySQL/MariaDB – не ниже 5.5.x. Для более ранних версий успешный импорт ВМ не гарантируется.

  2. Откройте доступ к cерверу MySQL со стороны DCImanager 6. Для этого разрешите подключения на порты 3306/TCP, 3306/UDP и удалённое подключение к БД:
    1. Подключитесь к серверу IPmanager 5 по SSH с правами суперпользователя.
    2. Проверьте текущие настройки файрвола:

      firewall-cmd --list-all
      CODE
    3. Откройте порты 3306/TCP, 3306/UDP:

      firewall-cmd --permanent --add-port=3306/tcp
      CODE
      firewall-cmd --permanent --add-port=3306/udp
      CODE
    4. Перезапустите сервис файрвола:

      service firewalld restart
      CODE
    5. Откройте конфигурационный файл MySQL /etc/my.cnf. В раздел [mysqld] добавьте параметр bind-address=<IP-адрес сервера с IPmanager 5> и закомментируйте строку с параметром skip-networking.

    6. Подключитесь к сервису mysql:

      mysql -u root
      CODE
      use mysql;
      CODE
    7. Разрешите пользователю удалённое подключение к MySQL:

      GRANT ALL PRIVILEGES ON <db_name> . * TO '<db_user>'@'<remote_ip>' IDENTIFIED BY '<db_password>';
      CODE

      <db_name> — имя базы данных

      <db_user> — имя пользователя, которому разрешено удалённое подключение

      <remote_ip> — IP-адрес сервера, с которого будет удалённое подключение

      <db_password> — пароль пользователя, которому разрешено удалённое подключение

      FLUSH PRIVILEGES;
      CODE

BILLmanager

  1. Создайте обработчик услуг DCImanager 6.
  2. Создайте временного пользователя для настройки интеграции. При создании включите опцию Полный доступ

    Обратите внимание!

    Не используйте для настройки интеграции учётную запись root.

  3. Сформируйте одноразовый ключ для авторизации:
    1. Подключитесь к серверу с BILLmanager по SSH с правами суперпользователя.
    2. Выполните команду:

      /usr/local/mgr5/sbin/mgrctl -m billmgr session.newkey user=<integration_user> key=<secret_key>
      CODE

      <integration_user> — пользователь для интеграции

      <secret_key> — ключ для авторизации — случайная комбинация длиной не менее 16 символов

    3. Сохраните значение ключа.

      Обратите внимание!

      По этому ключу можно авторизоваться только один раз. Для повторной миграции ключ нужно сформировать заново.

  4. Создайте резервную копию BILLmanager.
  5. Если в BILLmanager есть услуги с опцией По типу сервера, их нужно отключить. Для этого:
    1. Подключитесь к серверу с BILLmanager по SSH с правами суперпользователя.
    2. Зайдите в консоль базы данных: 

      mysql
      CODE
    3. Выберите базу данных billmgr: 

      USE billmgr;
      CODE
    4. Определите id обработчика DCImanager 5: 

      SELECT id FROM processingmodule WHERE name='<DCI5_processing_module_name>';
      CODE

      <DCI5_processing_module_name> — имя обработчика услуг DCImanager 5

    5. Определите, есть ли у модуля обработки услуги с опцией По типу сервера

      SELECT id FROM processingparam pp WHERE pp.processingmodule=<DCI5_processing_module_id> AND pp.intname='use_configuration' AND pp.value='on';
      CODE
      <DCI5_processing_module_id> — id обработчика услуг DCImanager 5
    6. Если ответ на предыдущую команду содержит id услуг, отключите опцию: 

      UPDATE processingparam pp SET pp.value='off' WHERE pp.processingmodule=<DCI5_processing_module_id> AND pp.intname='use_configuration' AND pp.value='on';
      CODE

      <DCI5_processing_module_id> — id обработчика услуг DCImanager 5

Перенос адресного пространства


Для управления адресным пространством DCImanager 5 и DCImanager 6 используют разное ПО:

  • DCImanager 5 — панель управления IPmanager 5;
  • DCImanager 6 — встроенный модуль IPmanager 6.

Для проведения миграции нужно импортировать адресное пространство из IPmanager 5 в IPmanager 6.

IPmanager 6 поддерживает режим эмуляции API IPmanager 5. Если вы используете другие программные продукты, которым требуется интеграция с IPmanager 5 (например, BILLmanager, VMmanager 5, ISPmanager), вы сможете перенастроить их на работу с IPmanager 6.

Пример управления адресным пространством

Импорт данных

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

  1. Создайте на сервере с IPmanager 5 пользователя для интеграции. Пользователю должны быть доступны все типы адресов, которые нужно перенести. Подробнее о типах адресов см. в статье Управление группами IP-адресов.
  2. Подключитесь к серверу с DCImanager 6 по SSH с правами суперпользоваеля.

  3. Выполните команду:

    docker exec -it dci_ipmgr_1 /opt/ispsystem/ipmgr/bin/mgr5import --dbhost <db_ip> --dbname <db_name> --dbuser <db_user> --dbpassword <db_pass> --user <ipmgr_user>
    CODE

    <db_ip> — IP-адрес БД IPmanager

    <db_name> — имя БД IPmanager. Значение по умолчанию — ipmgr

    <db_user> — имя пользователя БД IPmanager. Значение по умолчанию — root

    <db_pass> — пароль пользователя БД IPmanager

    <ipmgr_user> — имя пользователя IPmanager, созданного для интеграции

    Обратите внимание!

    Вы можете не использовать параметр --user. В этом случае IPmanager 6 выполнит импорт всей БД IPmanager 5 и создаст пулы IP-адресов вида USERNAME_GROUPNAME, где USERNAME — имя пользователя IPmanager 5, GROUPNAME — имя группы адресов IPmanager 5.

    --noip — не конвертировать IP-адреса

    --nohistory — не конвертировать историю IP-адресов

    --debug — вывод лога команды в stdout

    Пример вывода команды

Логи команды записываются в файл /var/log/ipmgr5_import.log в контейнере dci_ipmgr_1 на сервере с DCImanager 6.

Интеграция панелей управления с IPmanager 6

Чтобы панели управления, которые были интегрированы с IPmanager 5, переключились на работу с IPmanager 6:

  1. Создайте в DCImanager 6 учётную запись администратора с именем ipmgr5@example.com.

    Обратите внимание!

    ipmgr5@example.com — не пример, а точное имя, которое нужно указать при создании учётной записи.

  2. Если подключаемая панель управления должна иметь доступ только к определённому пулу IP-адресов, создайте в DCImanager 6 пул с суффиксом public. Например, DCI5_public.
  3. В подключаемой панели управления:
    1. Перейдите в ИнтеграцияIPmanager.
    2. Укажите настройки для интеграции:
      1. URLhttps://domain.com/api/ipmgr5/v3/ipmgr.

        domain.com — доменное имя или IP-адрес сервера с DCImanager 6

      2. Имя пользователя:

        • чтобы панель управления имела доступ только к определённому пулу IP-адресов, укажите pool_XXX;

          XXX — префикс пула в DCImanager 6. Например, для пула DCI5_public укажите имя пользователя pool_DCI5.

        • чтобы панель управления имела доступ ко всему адресному пространству, укажите произвольное имя пользователя.
      3. Пароль — пароль пользователя ipmgr5@example.com.
    3. Нажмите Ok.

Синхронизация PTR-записей

Если у DCImanager 6 настроена интеграция с PowerDNS, то после создания адресного пространства необходимо синхронизировать PTR-записи с DNS-сервером. Для этого:

  1. Удалите модуль "Интеграция с PowerDNS": НастройкиМодулиИнтеграция с PowerDNSУдалить модульУдалить модуль.
  2. Повторно установите и настройте модуль интеграции. Подробнее см. в статье Модуль "Интеграция с PowerDNS".

Логи синхронизации записываются в файл /var/log/dns_proxy_integration.log в контейнере dci_dns_proxy_1 на сервере с DCImanager.

Перенос объектов DCImanager 5


Перенос состоит из двух этапов:

  1. Экспорт данных из DCImanager 5 в файл формата json.
  2. Импорт данных из файла в платформу DCImanager 6.

Вы можете перенести все объекты DCImanager 5 вместе или каждый тип по отдельности. Для каждого типа объектов при миграции создаётся отдельный файл. Например, для серверов создаётся файл server.json. Это позволяет в случае каких-либо проблем исправить данные в файле вручную и повторить миграцию. 

Обратите внимание!

Перед каждым запуском скрипта миграции нужно заново создавать ключ для авторизации в DCImanager 5.

Если вы переносите каждый тип объектов по отдельности, выполняйте миграцию в следующем порядке:

  1. Пользователи.
  2. Оборудование:
    1. Стойки и платформы.
    2. Коммутаторы, PDU, UPS.
    3. Шасси.
    4. Серверы.
  3. Пользовательские VLAN.
  4. Склады:
    1. Поставщики и поставки.
    2. Коммутаторы, PDU, UPS, типы оборудования, серверы.
    3. Комплектующие.

Имена пользователей при миграции будут изменены:

  • если у DCImanager 5 настроена интеграция с BILLmanager, имя пользователя будет заменено на email владельца сервера;
  • если интеграция с BILLmanager не настроена, к имени пользователя будет добавлено @dci5.imported. Это изменение связано с ограничениями платформы DCImanager 6. В качестве ID пользователя обязателен формат адреса электронной почты. 

Запуск миграции

Чтобы запустить миграцию:

  1. Подключитесь к серверу с DCImanager 6 по SSH с правами суперпользоваеля.
  2. Зайдите в контейнер migrator: 

    docker exec -it migrator bash
    CODE
  3. Перейдите в директорию сервиса:

    cd /opt/ispsystem/migrate
    CODE
  4. Создайте конфигурационные файлы для миграции на основе шаблонов export_settings.example.yaml и import_settings.example.yaml.

    Пример файла для экспорта

    action: export
    platform: dci5
    data: 
      - user
      - rack
      - platform
      - switch
      - server
      - server_connection_bmc
      - server_connection_switch
      - vlan
    transport:
      - type: dci5_http
        address: https://10.1.1.1:1500
        key: my_secret_key
      - type: dci5_db
        host: 10.1.1.1
        port: 3306
        user: migrator
        password: migrator_password
        db: dcimgr
    format: json
    debug: false
    log_file: /var/log/migrate.log
    report_file: export_report_{datetime}.txt
    report_view: plain
    
    YML

    Пример файла для импорта

    action: import
    platform: dci6
    data:
      - all
    transport:
      - type: dci6_http
      - type: dci6_auth_http
    location: 1
    format: json
    debug: false
    log_file: /var/log/migrate.log
    report_file: import_report_{datetime}.txt
    report_view: plain
    YML
    • action — тип конфигурационного файла. Возможные значения:
      • export — файл экспорта данных из DCImanager 5;
      • import — файл импорта данных в DCImanager 6;
    • platform — версия DCImanager. Возможные значения:
      • dci5 — DCImanager 5. Используется для файла экспорта;
      • dci6 — DCImanager 6. Используется для файла импорта;
    • data — список объектов для миграции. Возможные значения:
      • группы объектов:
        • all — все объекты;
        • warehouse_only — все объекты склада;
        • except_warehouse — все объекты, кроме объектов склада;
      • объекты платформы:
        • user — пользователи;
        • rack — стойки;
        • platform — платформы;
        • pdu — PDU;
        • switch — коммутаторы;
        • ups — ИБП;
        • chassis — шасси;
        • server — серверы;
        • server_connection_bmc — подключения серверов к BMC;
        • server_connection_pdu — подключения серверов к PDU;
        • server_connection_switch — подключения серверов к коммутаторам;
        • server_connection_intelamt — подключения серверов к Intel AMT;
        • vlan — список VLAN;
      • объекты склада:
        • wh_supplier — поставщики;
        • wh_supply — поставки;
        • wh_pdu — PDU;
        • wh_ups — ИБП;
        • wh_switch — коммутаторы;
        • wh_device_type — типы оборудования;
        • wh_server — серверы;
        • wh_cpu — CPU;
        • wh_ram — RAM;
        • wh_pci — PCI-устройства;
        • wh_storage — устройства хранения данных;
        • wh_other — прочие устройства;
    • transport — данные для подключения к DCImanager:
      • для экспорта из DCImanager 5 укажите настройки:
        • подключения по HTTPS:
          • type — dci5_http;
          • address — URL панели управления в формате https://192.0.2.1:1500;
          • key — одноразовый ключ для авторизации в DCImanager 5;
        • подключения к базе данных:
          • type — dci5_db;
          • host — IP-адрес панели управления;
          • port — 3306;
          • user — имя временного пользователя БД, созданного для интеграции;
          • password — пароль временного пользователя БД;
          • db — dcimgr;
      • для импорта в DCImanager 6 укажите настройки:
        • type — dci6_http;
        • type — dci6_auth_http;
    • location — id локации. Опциональный параметр для экспорта и обязательный для импорта;
    • format — формат файлов для миграции. В текущей версии доступен только формат json;
    • debug — отображение отладочной информации при запуске скрипта. Возможные значения:
      • true — отображать;
      • false — не отображать;
    • log_file — путь к лог-файлу миграции. Значение по умолчанию — /var/log/migrate.log;
    • report_file — имя файла отчёта. Если параметр не задан, данные отчёта будет отображены только в терминале. Чтобы к имени файла добавлялись дата и время миграции, используйте макрос {datetime};

    • report_view — формат отчёта. Значение по умолчанию — plain. Возможные значения:
      • plain — обычный текст;
      • json — json с отступами и переносами строк;
      • compact_json — json без отступов и переносов строк.


  5. Запустите скрипт для экспорта данных: 

    python3 migrator.py -p export_settings.yaml
    BASH

    export_settings.yaml — имя конфигурационного файла для экспорта

  6. Если данные были экспортированы успешно, запустите скрипт для импорта данных: 

    python3 migrator.py -p import_settings.yaml
    BASH

    import_settings.yaml — имя конфигурационного файла для импорта

Логи миграции записываются в файл /var/log/migrate.log в контейнере migrator на сервере с DCImanager 6. Отчёт по миграции сохраняется в файл, указанный в параметре report_file конфигурационного файла миграции.

Повторная миграция

Если миграция завершилась с ошибкой или за время переноса конфигурация DCImanager 5 изменилась, вы можете выполнить миграцию повторно:

  1. Восстановите DCImanager 6 из резервной копии.
  2. Создайте одноразовый ключ для авторизации в DCImanager 5.
  3. Исправьте конфигурационные файлы экспорта и импорта.
  4. Запустите скрипт миграции.

Действия после миграции

  1. Изучите отчёт и убедитесь, что миграция прошла успешно.
  2. Откройте интерфейс платформы и проверьте корректность:
    1. Переноса всех объектов платформы.
    2. Выделения IP-адресов серверам.
    3. Взаимодействия с коммутаторами и PDU.
    4. Настроек подключений к коммутаторам и PDU.

Изменение настроек BILLmanager


Если у DCImanager 5 настроена интеграция с BILLmanager, вы можете перенести услуги на обработчик DCImanager 6. Во время миграции:

  1. Для всех тарифных планов, которые работают на выбранном обработчике DCImanager 5, будет включён обработчик DCImanager 6 и изменена внутренняя конфигурация для заказа.
  2. Для каждого пользователя DCImanager 5 будет создана учётная запись в DCImanager 6:

    • имя пользователя — email, указанный в BILLmanager;

    • пароль — пароль, указанный в услуге выделенного сервера.

      Обратите внимание!

      Если пользователь после заказа сервера изменил пароль в DCImanager 5, то пароль восстановится на исходный. Пользователю останется доступен переход в DCImanager 6 через интерфейс BILLmanager. В дальнейшем пользователь сможет восстановить пароль через электронную почту.


  3. Во всех открытых и остановленных услугах выделенных серверов будут изменены:
    • имя пользователя — на email пользователя из DCImanager 6;
    • id сервера — на id из DCImanager 6;
    • обработчик услуги —  на DCImanager 6.

Запуск миграции

Чтобы запустить миграцию:

  1. Подключитесь к серверу с DCImanager 6 по SSH с правами суперпользоваеля.
  2. Зайдите в контейнер migrator: 

    docker exec -it migrator bash
    CODE
  3. Перейдите в директорию сервиса:

    cd /opt/ispsystem/migrate
    CODE
  4. Создайте конфигурационный файл для миграции на основе шаблона bill_migrate.example.yaml.

    Пример конфигурационного файла

    from_modules:
     - dci5_processing_module_1
     - dci5_processing_module_2
    to_module: dci6_processing_module
    admin_name: temp_admin
    transport:
     - type: dci6_http
     - type: dci6_auth_http
     - type: bill_http
       address: https://10.1.1.2:1500
       key: my_secret_key
    debug: false
    log_file: /var/log/bill_migrate.log
    report_file: bill_migrate_report_{datetime}.txt
    report_view: plain
    YML
    • from_modules — имена обработчиков услуг DCImanager 5, с которых выполняется миграция;
    • to_module — имя обработчика услуг DCImanager 6, на который выполняется миграция;
    • admin_name — временный пользователь для настройки интеграции;
    • transport — данные для подключения к DCImanager 6 и BILLmanager. Укажите:
      • type — dci6_http;
      • type — dci6_auth_http;
      • type — bill_http;
      • address — URL BILLmanager в формате https://192.0.2.1:1500;
      • key — одноразовый ключ для авторизации в BILLmanager;
    • debug — отображение отладочной информации при запуске скрипта. Возможные значения:
      • true — отображать;
      • false — не отображать;
    • log_file — путь к лог-файлу миграции. Значение по умолчанию — /var/log/bill_migrate.log;
    • report_file — имя файла отчёта. Если параметр не задан, данные отчёта будет отображены только в терминале. Чтобы к имени файла добавлялись дата и время миграции, используйте макрос {datetime};
    • report_view — формат отчёта. Значение по умолчанию — plain. Возможные значения:
      • plain — обычный текст;
      • json — json с отступами и переносами строк;
      • compact_json — json без отступов и переносов строк.
  5. Чтобы проверить возможность миграции, запустите скрипт в режиме "только чтение": 

    python3 bill_migrator.py -p bill_migrate.yaml -r
    CODE

    bill_migrate.yaml — имя конфигурационного файла

    В этом режиме скрипт не выполняет реальных действий, а только проверяет возможность миграции.

  6. Если отчёт не содержит ошибок, повторно сгенерируйте одноразовый ключ в BILLmanager и запустите реальную миграцию: 

    python3 bill_migrator.py -p bill_migrate.yaml
    CODE

    bill_migrate.yaml — имя конфигурационного файла

Логи миграции записываются в файл /var/log/bill_migrate.log в контейнере migrator на сервере с DCImanager 6. Отчёт по миграции сохраняется в файл, указанный в параметре report_file конфигурационного файла миграции.

Повторная миграция

Если миграция завершилась с ошибкой или за время переноса конфигурация BILLmanager изменилась, вы можете выполнить миграцию повторно:

  1. Создайте одноразовый ключ для авторизации в BILLmanager.
  2. Исправьте конфигурационный файл.
  3. Запустите скрипт миграции.

Действия после миграции

  1. Изучите отчёт и убедитесь, что миграция прошла успешно.
  2. Проверьте корректность конфигурации тарифов. Например, выполните тестовый заказ сервера.
  3. Проверьте, есть ли в DCImanager шаблоны ОС, используемые в тарифах.
  4. Удалите из DCImanager 6 всех временных пользователей с суффиксом @dci5.imported. Перед удалением убедитесь, что эти пользователи не являются владельцами серверов.
  5. Удалите обработчик DCImanager 5:
    1. Подключитесь к серверу с BILLmanager по SSH с правами суперпользоваеля.
    2. Зайдите в консоль базы данных: 

      mysql
      CODE
    3. Выберите базу данных billmgr: 

      USE billmgr;
      CODE
    4. Определите id обработчика DCImanager 5: 

      SELECT id FROM processingmodule WHERE name='<DCI5_processing_module_name>';
      CODE

      <DCI5_processing_module_name> — имя обработчика услуг DCImanager 5

    5. Удалите привязку IP-адресов к IPmanager и обработчику DCImanager 5:

      UPDATE ip SET ipmgr=NULL, processingmodule=NULL WHERE processingmodule=<DCI5_processing_module_id>;
      CODE
      <DCI5_processing_module_id> — id обработчика услуг DCImanager 5
    6. Удалите обработчик в интерфейсе BILLmanager.