Настройка модуля установки ОС

В комплект поставки модуля установки ОС входит предустановленный пример конфигурации, позволяющий выполнять установку ОС Astra SE 1.7.5.9 с использованием медианосителя. Наименование способа развертывания примера — «Установка Astra Linux 1.7.5.9 c загрузочного образа».

Чтобы настроить модуль установки ОС, выполните шаги:

  1. Создайте дистрибутив ОС, используя группу API-методов /v1/installation_distros.

    Внешний источник файлов установочного ядра ОС и временной файловой системы (initrd) должен быть доступен по протоколу HTTP для устройств, на которые будет осуществляться установка ОС.
  2. Создайте шаблоны конфигурационных файлов, используя группу API-методов /v1/templates:

    1. Шаблон, содержащий iPXE-скрипт, который инициализирует сетевой интерфейс устройства и обращается к модулю установки ОС за iPXE-скриптом для конкретного устройства, указывая его MAC-адрес.

      Для создания укажите уникальное системное имя шаблона в url-ссылке метода (/v1/boot_loaders/ipxe/config?templateSlug={templateSlug}).

      URL-cсылка на скрипт start.ipxe указывается в конфигурации опций DHCP-сервера или DHCP-proxy. Дальнейший переход между iPXE-инструкциями происходит внутри iPXE-инструкций.

      Пример скрипта начального конфигурационного файла программы-загрузчика start-ipxe:

      #!ipxe
      
      isset ${ipxe-osmax-provisioner} || set ipxe-osmax-provisioner {{ osmax_provisioner_base_url }}
      
      :start
      # Механизм получения IP-адреса. В случае ошибки -- предлагает нажать "s" для запуска командной строки.
      # Иначе -- начать снова.
      dhcp && goto next || prompt --key s --timeout 1500 Press "s" for the iPXE command line... && shell || goto start
      :next
      # В случае успеха загрузить установочный скрипт с HTTP-сервера.
      # Формируется ссылка вида http://provisioning.wd2.local/v1/boot_loaders/ipxe/config?mac=xx:xx:xx:xx:xx:xx
      
      chain --replace ${ipxe-osmax-provisioner}/v1/boot_loaders/ipxe/config?mac=${net0/mac:hex}

      Пример скрипта начального конфигурационного файла программы-загрузчика start-ipxe с доверенной установкой:

      #!ipxe
      
      isset ${ipxe-osmax-provisioner} || set ipxe-osmax-provisioner {{ osmax_provisioner_base_url }}
      
      :start
      # Механизм получения IP-адреса. В случае ошибки -- предлагает нажать "s" для запуска командной строки.
      # Иначе -- начать снова.
      dhcp && goto next || prompt --key s --timeout 1500 Press "s" for the iPXE command line... && shell || goto start
      :next
      # В случае успеха загрузить установочный скрипт с HTTPS-сервера.
      # Формируется ссылка вида https://provisioning.wd2.local/v1/boot_loaders/ipxe/config?mac=xx:xx:xx:xx:xx:xx
      chain --replace  ${ipxe-osmax-provisioner}/v1/boot_loaders/ipxe/config?mac=${net0/mac:hex}
    2. Шаблон, содержащий скрипт с инструкциями для конкретного устройства.

      Пример шаблона скрипта конфигурационного файла программы-загрузчика boot.ipxe:

      #!ipxe
      
      {% set autoinstallScript = osmax_provisioner_base_url + unattended_install_file_url + '?mac=' %}
      
      :startboot
      echo Booting Astra-linux
      kernel {{ repository_url }}{{ kernel }} initrd=initrd.gz initrd=preseed.cfg auto-install/enable=true netcfg/choose_interface=auto {{ kernel_options }}
      initrd {{ repository_url }}{{ initrd }}
      initrd {{ autoinstallScript }}${netX/mac:hex} preseed.cfg
      boot

      Где:

      • ${os_distro} — дистрибутив устанавливаемой ОС согласно заданию на установку;

      • ${repository_url} — url репозитория, в котором размещается установочный дистрибутив, согласно заданию на установку.

        Пример шаблона скрипта конфигурационного файла программы-загрузчика boot.ipxe с доверенной установкой:

        # cat /osmax_provisioner_base_url/https/astra-linux/boot.ipxe
        #!ipxe
        
        {% set autoinstallScript = osmax_provisioner_base_url + unattended_install_file_url + '?mac=' %}
        
        :startboot
        echo Booting Astra-linux
        - kernel {{ repository_url }}{{ kernel }} initrd=initrd.gz initrd=preseed.cfg auto-install/enable=true netcfg/choose_interface=auto
        + kernel {{ repository_url }}{{ kernel }} initrd=initrd.gz initrd=preseed.cfg initrd=rootCA.crt initrd=c16a7ee9.0 initrd=debian-archive-keyring.gpg auto-install/enable=true netcfg/choose_interface=auto
        initrd {{ repository_url }}{{ initrd }}
        initrd {{ autoinstallScript }}${netX/mac:hex} preseed.cfg
        + initrd {{ repository_cert_url }}/certs/rootCA.crt /etc/ssl/certs/rootCA.crt
        + initrd {{ repository_cert_url }}/certs/c16a7ee9.0 /etc/ssl/certs/c16a7ee9.0
        + initrd {{ repository_url }}/astra-linux/debian-archive-keyring.gpg /usr/share/keyrings/debian-archive-keyring.gpg
        boot

        Где дополнительно указываются пути до файлов с сертификатами и ключами.

    3. Создайте шаблон скрипта пост-установки.

      Использование скрипта пост-установки является опциональным. Если вы предполагаете его использовать, загрузите соответствующий ему шаблон и пропишите вызов скрипта пост-установки в шаблоне файла автоответов.
    4. Создайте шаблон файла автоответов, используя API-метод POST /v1/templates.

      Если вы предполагаете использовать скрипт пост-установки, пропишите его вызов в скрипте автоответов.

      Пример:

       # вызов скрипта пост-установки
         in-target wget {{osmax_provisioner_base_url}}/v1/provisioning_scripts?machineId={{machine_id}} -O /tmp/post_install.sh; \
         in-target chmod +x /tmp/post_install.sh; \
         in-target /tmp/post_install.sh; \
  3. Обеспечьте доступность по HTTP-протоколу зеркал репозитория пакетов, планируемых к установке ОС для устройств. Эти зеркала прописаны в файлах автоответов в следующих настройках:

     d-i mirror/http/hostname
     d-i mirror/http/directory
  4. Обеспечьте наличие в шаблоне файла автоответов вызовов, обслуживающих регистрацию статуса установки ОС на стороне модуля установки ОС:

    # Регистрация старта установки (внутреннее использование)
    d-i    preseed/early_command string wget --method=put --body-data='{"status":"READY_TO_INSTALL"}' --header="content-type: application/json" -O- {{osmax_provisioner_base_url}}/v1/unprovisioned_machines/{{machine_id}}/status
    
    # Финальные действия при установке, для расширения шаблона можно добавлять любые кастомные действия перед командам "вызов скрипта пост-инсталляции" и "Регистрация установки"
    d-i preseed/late_command string \
    # Здесь размещается вызов скрипта постинсталляции если он используется
    # .. возможный вызов скрипта постинсталляции ..
    # Регистрация завершения установки (внутреннее использование)
        wget --method=put --body-data='{"status":"OS_INSTALLED"}' --header="content-type: application/json" -O- {{osmax_provisioner_base_url}}/v1/unprovisioned_machines/{{machine_id}}/status
  5. Создайте профиль установки, используя группу API-методов /v1/installation_profiles.

  6. Создайте план развертывания, используя группу API-методов v1/installation_recipes.

  7. Создайте загрузочный образ, используя группу API-методов /v1/bootable_images.

    Достаточно сформировать один загрузочный образ. Он является универсальным и подходит для всех способов развертывания.
  8. Создайте устройства, используя группу API-методов /v1/unprovisioned_machines или через пользовательский интерфейс «Кабинет Администратора».