DCImanager 6

Миграция с DCImanager 5 в DCImanager 6

Миграция позволяет перенести настройки и оборудование из панели управления 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 с пользовательскими обработчиками;
  • пользователи с ролью "Оператор".

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

DCImanager 5

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

      /usr/local/mgr5/sbin/mgrctl -m dcimgr session.newkey username=<integration_user> key=<secret_key>
      Пояснения к команде
    3. Сохраните значение ключа.

      Обратите внимание!
      По этому ключу можно авторизоваться только один раз. Для повторной миграции ключ нужно сформировать заново.
  5. Создайте временного пользователя БД и разрешите ему доступ к таблице пользователей: 

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

      firewall-cmd --new-zone=migration-mysql --permanent
      firewall-cmd --reload
      firewall-cmd --zone=migration-mysql --add-source=<IP address> --permanent
      firewall-cmd --zone=migration-mysql --add-port=3306/tcp --permanent
      firewall-cmd --reload
      
      Пояснения к командам
    2. Создайте временного пользователя с доступом только для чтения:

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

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

        CREATE USER '<user>'@'localhost' IDENTIFIED BY '<password>';
        CREATE USER '<user>'@'%' IDENTIFIED BY '<password>';
        GRANT SELECT, SHOW VIEW ON dcimgr.users TO '<user>'@'localhost';
        GRANT SELECT, SHOW VIEW ON dcimgr.users TO '<user>'@'%';
        FLUSH PRIVILEGES;
        Пояснения к командам

DCImanager 6

  1. Создайте резервную копию платформы.
  2. Создайте и настройте локацию.
  3. Загрузите необходимые шаблоны ОС.
  4. Установите и настройте необходимые модули.
  5. Если в платформе установлен, но не настроен модуль "Интеграция с IPmanager 6", удалите его.

IPmanager 5

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

    Обратите внимание!
    Рекомендуемая версия MySQL/MariaDB – не ниже 5.5.x. Для более ранних версий успешный импорт ВМ не гарантируется.
  2. Откройте доступ к серверу MySQL со стороны DCImanager 6. Для этого разрешите подключения на порты 3306/TCP, 3306/UDP и удалённое подключение к БД:
    1. Подключитесь к серверу IPmanager 5 по SSH с правами суперпользователя.
    2. Проверьте текущие настройки файрвола:

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

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

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

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

      GRANT ALL PRIVILEGES ON <db_name> . * TO '<db_user>'@'<remote_ip>' IDENTIFIED BY '<db_password>';
      Пояснения
      FLUSH PRIVILEGES;

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>
      Пояснения к команде
    3. Сохраните значение ключа.

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

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

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

      SELECT id FROM processingmodule WHERE name='<DCI5_processing_module_name>';
      Пояснения
    5. Определите, есть ли у модуля обработки услуги с опцией По типу сервера

      SELECT id FROM processingparam pp WHERE pp.processingmodule=<DCI5_processing_module_id> AND pp.intname='use_configuration' AND pp.value='on';
      Пояснения
    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';
      Пояснения

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

Для управления адресным пространством 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.

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

Если у DCImanager 6 настроена интеграция с внешним IPmanager 6, то данные нужно импортировать в платформу, выполняющую роль мастера. Подробнее см. в статье Модуль "Интеграция с IPmanager 6".

Если роль мастера выполняет VMmanager 6, импортируйте данные по инструкции из документации VMmanager 6. Если в VMmanager 6 используется модуль "Интеграция с DNSmanager 6", устанавливать аналогичный модуль в DCImanager 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>
    Пояснения к команде
    Необязательные параметры команды

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

    Имена контейнеров могут отличаться в зависимости от используемой версии Docker Compose. Вместо символа подчёркивания в именах контейнеров может использоваться дефис.

Логи команды записываются в файл /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. URL — https://domain.com/api/ipmgr5/v3/ipmgr.

        Пояснения к URL
      2. Имя пользователя:

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

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

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

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

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

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

Имена контейнеров могут отличаться в зависимости от используемой версии Docker Compose. Вместо символа подчёркивания в именах контейнеров может использоваться дефис.

Перенос объектов 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 пользователя обязателен формат адреса электронной почты. 

Модели жёстких дисков

На основе модели жёсткого диска из DCImanager 5 будет создана модель накопителей с аналогичным названием в справочнике DCImanager 6. На основе поля "Тип" будут сформированы поля "Псевдоним для конфигурации" и "Объём, GB". Если название модели в DCImanager 5 не указано, то в качестве названия будет использоваться значение из поля "Тип".

Модели RAM

На основе модели RAM из DCImanager 5 будет создана модель оперативной памяти с аналогичным названием в справочнике DCImanager 6. На основе поля "Тип" будут сформированы поля "Объём памяти" и "Частота". Единица измерения объёма памяти будет изменена из мебибайта в гигабайт. Если название модели в DCImanager 5 не указано, то в качестве названия будет использоваться значение из поля "Тип".

id оборудования

Чтобы перенести id оборудования из DCImanager 5, добавьте к нужным типам оборудования в DCImanager 6 собственный параметр с именем old_id. При миграции id оборудования будут записаны в созданный параметр. Подробнее о создании параметра см. в статье Собственные параметры оборудования.

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

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

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

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

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

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

    Пример файла для экспорта
    action: export
    platform: dci5
    data: 
      - user
      - rack
      - platform
      - switch
      - server
    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
    location: 1
    format: json
    debug: false
    log_file: /var/log/migrate.log
    report_file: export_report_{datetime}.txt
    report_view: plain
    
    Пример файла для импорта
    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
    Пояснения

     

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

    python3 migrator.py -p export_settings.yaml
    Пояснения
  6. Если данные были экспортированы успешно, запустите скрипт для импорта данных: 

    python3 migrator.py -p 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.

Если в BILLmanager есть услуги размещения серверов (colocation), то при миграции:

  1. К тарифным планам размещения серверов будет подключён обработчик DCImanager 6.
  2. Во всех открытых и остановленных услугах размещения серверов будут изменены:
    • имя пользователя — на email пользователя из BILLmanager;
    • id сервера и стойки — на id из DCImanager 6;

      Поиск сервера в DCImanager 6 будет выполняться по его имени из услуги в BILLmanager, а не по id.
    • обработчик услуги —  на DCImanager 6.
  3. Владельцем сервера в DCImanager 6 станет пользователь, у которого email совпадает с email пользователя из BILLmanager. Если такого пользователя нет, он будет создан автоматически со случайным паролем.
  4. У тарифных планов размещения серверов будет отключён обработчик DCImanager 5.

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

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

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

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

    cd /opt/ispsystem/migrate
  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
    Пояснения
  5. Чтобы проверить возможность миграции, запустите скрипт в режиме "только чтение": 

    python3 bill_migrator.py -p bill_migrate.yaml -r
    Пояснения

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

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

    python3 bill_migrator.py -p bill_migrate.yaml
    Пояснения

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

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

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

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

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

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

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

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

      SELECT id FROM processingmodule WHERE name='<DCI5_processing_module_name>';
      Пояснения
    5. Удалите привязку IP-адресов к IPmanager и обработчику DCImanager 5:

      UPDATE ip SET ipmgr=NULL, processingmodule=NULL WHERE processingmodule=<DCI5_processing_module_id>;
      Пояснения
    6. Удалите обработчик в интерфейсе BILLmanager.