Для улучшения работы сайта мы используем файлы cookies. Оставаясь на сайте, вы соглашаетесь с политикой обработки персональных данных.

Автоматизированная подготовка узлов для установки платформы

Скрипт node-bootstrap.sh автоматизирует подготовку узлов к установке Nova Container Platform (Nova). Скрипт приводит систему в состояние, полностью соответствующее требованиям платформы.

1. Предварительные требования

Перед запуском скрипта убедитесь, что выполнены следующие условия:

  • Права доступа: запуск от root (sudo или su)

  • Оболочка: POSIX-совместимая (sh, bash, dash, zsh)

  • Необходимые утилиты: sed, grep, awk, cut, tr, date, printf, test, ssh-keygen, systemctl, ss/netstat, lsmod, modprobe, sysctl, grub2-mkconfig/grub-mkconfig, useradd, usermod

2. Быстрый старт

  1. Скачайте скрипт на целевой сервер:

    curl -O https://repo/node-bootstrap.sh
    chmod +x node-bootstrap.sh
  2. Создайте файл конфигурации node_config.env:

    cat > node_config.env << 'EOF'
    DEPLOY_METHOD=0 (1)
    INFRA_PROVIDER=2 (2)
    PLATFORM_VERSION_NCP=7.6.0 (3)
    USER_CHOICE_PORTS_FREE=yes
    USER_CHOICE_KERNEL_MODULES_LOAD=yes
    USER_CHOICE_PACKAGES_INSTALL=yes
    USER_CHOICE_PACKAGES_UPDATE_REPOS=yes
    USER_CHOICE_SERVICES_FIX=yes
    USER_CHOICE_TIME_SYNC_CONFIGURE=yes
    USER_CHOICE_TIME_SYNC_UPDATE_REPOS=yes
    USER_CHOICE_TIMEZONE_CHANGE=yes
    USER_CHOICE_TIMEZONE_SELECTED=UTC
    USER_CHOICE_TIMEZONE_CONFIRM=yes
    USER_CHOICE_IPV6_ENABLE=yes
    USER_CHOICE_SECURITY_DISABLE=yes
    USER_CHOICE_CLOUD_INIT_CONFIGURE=yes
    USER_CHOICE_OS_NETWORK_CONFIGURE=yes
    USER_CHOICE_CREATE_USER=yes
    USER_CHOICE_USERNAME=demo-user (4)
    USER_CHOICE_GECOS=demo-user
    USER_CHOICE_USER_SSH_KEY_MODE=2
    USER_CHOICE_USER_SSH_KEYS=ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMDSr2jDFz9LVhMxYjRMLntw64UMXmnFZjk6UhQoRNOa demo (5)
    USER_CHOICE_CLEANUP_PERFORM=yes
    USER_CHOICE_CONFIG_FILE_DELETE=yes
    USER_CHOICE_REBOOT=3 (6)
    EOF
    1 DEPLOY_METHOD — метод развертывания: 0 — IPI, 1 — UPI.
    2 INFRA_PROVIDER — тип инфраструктуры: 0 — bare metal, 1 — vSphere, 2 — zVirt, 3 — k2Cloud.
    3 PLATFORM_VERSION_NCP — версия Nova.
    4 USER_CHOICE_USERNAME — имя пользователя для установки Nova.
    5 USER_CHOICE_USER_SSH_KEYS — открытый ключ SSH.
    6 USER_CHOICE_REBOOT — действие после выполнения скрипта: 1 — перезагрузить, 2 — выключить, 3 — без действий.

    Замените значения переменных на соответствующие вашей среде.

  3. Запустите скрипт:

    sudo ./node-bootstrap.sh -c node_config.env

3. Режимы работы и конфигурация

Скрипт поддерживает два режима работы.

3.1. Интерактивный режим (по умолчанию)

В интерактивном режиме скрипт задает вопросы по мере выполнения. Все ответы сохраняются в файл ./node_config.env.

  1. Запустите скрипт:

    sudo ./node-bootstrap.sh -c node_config.env
  2. Выберите метод развертывания Nova:

    --== Nova Container Platform Node Preparation Script ==--
    
    Select deployment method:
    [0 ] IPI
    [1 ] UPI
  3. Выберите тип инфраструктуры, в которой развертывается Nova:

    Select the type of infrastructure provider:
    [0 ] None (Baremetal)
    [1 ] vSphere
    [2 ] zVirt
    [3 ] k2Cloud
  4. Укажите версию Nova для развертывания:

    Enter Nova Container Platform version (format: X.Y.Z, example: 7.6.1):
    Supported versions:
      1.x: 1.1.0, 1.2.0
      7.x: 7.5.0, 7.6.0, 7.6.1
    >

3.2. Неинтерактивный (автоматизированный) режим

Если файл node_config.env существует и содержит все необходимые ответы, скрипт запускается автоматически и использует сохраненные значения. Этот режим подходит для автоматизированного развертывания.

4. Этапы работы скрипта

4.1. Этап 1. Проверка совместимости

Скрипт определяет операционную систему и сверяет ее версию, метод развертывания и тип инфраструктуры с матрицей совместимости Nova (подробнее).

Успешное выполнение:
[ INFO  ] Detected: Astra Linux (ID: astra), Version: 1.7.9
[ INFO  ] All compatibility checks passed.
Ошибка

При несовместимости скрипт завершает работу и выводит список поддерживаемых ОС и ссылку на документацию:

[ ERROR ] Operating system ALT Linux version 10.2.2 is NOT compatible
          with Nova Container Platform version 7.6.0.
          Supported combinations for Nova Container Platform 7.6.0:
            - AlmaLinux: 8.x,9.x
            - RED OS: 7.x.x,8.x.x,9.x.x
            - Astra Linux SE: 1.7.5,1.7.6,1.7.9,1.8.1,1.8.3
            ...
          For detailed compatibility information, please refer to
          the documentation:
          https://wiki.orionsoft.ru/nova/latest/reference/compatibility-matrix/

4.2. Этап 2. Аудит системы

Скрипт выполняет комплексную проверку системы без внесения изменений и формирует отчет о несоответствиях (статус WARNING):

          --== STAGE 2: AUDIT ==--

[WARNING] Ports: 2 port(s) in use (53/tcp, 80/tcp)
[WARNING] Kernel modules: 1 module(s) not loaded (overlay)
[WARNING] Packages: 5 package(s) missing (cloud-init, cloud-guest-utils,
          curl, network-manager, qemu-guest-agent)
[WARNING] Services: 3 service(s) required to be ENABLED
          (cloud-init-local, cloud-config, cloud-final)
[WARNING] Services: 1 service(s) required to be DISABLED (ufw)
[WARNING] Time sync: Service chrony is not properly configured
[ INFO  ] Timezone: Europe/Moscow
[WARNING] IPv6: Currently disabled (required to be enabled)
[WARNING] Security: APPARMOR is enabled (required to be disabled)
[WARNING] Cloud-init: Requires configuration for IPI deployment
[WARNING] OS specific settings: Requires configuration for Astra Linux SE
[WARNING] Cleanup: Required for ZVIRT IPI deployment
[WARNING] GRUB parameters missing: crashkernel=auto selinux=0 apparmor=0

[WARNING] Total issues found: 8

4.3. Этап 3. Исправление и настройка

На этом этапе скрипт предлагает исправить проблемы, обнаруженные на этапе AUDIT. Следуйте сообщениям в консоли:

  1. Автоматическое завершение процессов, занимающих требуемые порты.

    Do you want to attempt to free up the busy ports? [y/N]:
  2. Загрузка модулей ядра.

    [WARNING] The following kernel modules are not loaded:
              - overlay
              [!] Module is not configured for auto-load on boot
    
    Load ALL missing kernel modules now? [y/N]:
  3. Обновление репозиториев и установка пакетов:

    [ INFO  ] The following packages are missing:
              - cloud-init
              - cloud-guest-utils
              - curl
              - network-manager
              - qemu-guest-agent
    [ INFO  ] Package manager: apt
    
    Install the missing packages? [y/N]:
    
    Update package repositories before installation? [y/N]:
  4. Настройка служб: Включение требуемых и отключение конфликтующих служб (например, ufw, systemd-resolved).

    [WARNING] Services that required to be ENABLED:
              - cloud-init-local (currently disabled)
              - cloud-config (currently disabled)
              - cloud-final (currently disabled)
    [WARNING] Services that required to be DISABLED:
              - ufw (currently enabled)
    
    Fix service states? [y/N]:
  5. Настройка синхронизации времени.

    [ INFO  ] Time synchronization service is not properly configured.
              Required service: chrony
              Required package: chrony
    
    Configure time synchronization? [y/N]: y
  6. *Смена часового пояса.

    Change timezone? [y/N]: y
    Please enter the desired timezone.
    Examples: UTC, Europe/Moscow, America/New_York, Asia/Tokyo
    Available timezones: /usr/share/zoneinfo/
    (Press ENTER without input to use default: UTC)
  7. Включение IPv6.

    Enable IPv6? [y/N]: y
  8. Отключение модуля безопасности.

    [ INFO  ] APPARMOR is currently enabled on this system.
              For Nova Container Platform, apparmor required to be disabled.
              This requires adding GRUB parameter: apparmor=0
    
    Disable APPARMOR? [y/N]:
  9. Создание конфигурации Cloud-init.

    [ INFO  ] Cloud-init configuration is required for libvirt/KVM (NoCloud).
              Required actions:
                - Create /etc/cloud/cloud.cfg
                - Create /etc/cloud/cloud.cfg.d/90_node-bootstrap.cfg
                - Enable cloud-init service
    
    Configure cloud-init? [y/N]: y
  10. Настройка сетевых параметров в зависимости от ОС.

    Configure network settings? [y/N]: y
    [ INFO  ] Configuring Astra Linux network...
    [ INFO  ] Configuring /etc/network/interfaces...    [OK] Done.
    [ INFO  ] Creating /etc/NetworkManager/conf.d/managed.conf...    [OK] Done.
              Enabling service 'NetworkManager'...    [OK] enabled.
    [ INFO  ] Configuration Summary:
              ---------------------
              Operations succeeded: 3
              Operations failed: 0
              [OK] OS specific settings has been configured successfully.
              [!] IMPORTANT: A reboot may be required for changes to take full effect.
  11. Создание пользователя для развертывания NCP, ключей SSH.

    Create user for install Nova Container Platform? [y/N]:
    
    Default username [nova-install]: demo-user
    
    Enter GECOS (User description/full name) []: demo
    
    How would you like to configure SSH access for 'demo-user'?
  12. Удаление идендификаторов ОС, SSH-хост-ключей (только при подготовке шаблона виртуальной машины).

    [ INFO  ] System cleanup is required before creating VM image.
    [ INFO  ] This will remove:
              - Machine IDs and logs
              - DHCP leases and network state
              - SSH host keys
              - User history and temporary files
    
    [ INFO  ] Infrastructure: ZVIRT
              zVirt cleanup commands:
              - cloud-init clean
              - truncate machine-id and logs
              - remove udev persistent net rules
              - clear DHCP and NetworkManager state
              - remove netplan cloud-init configs
              - remove SSH host keys
              - reset hostname
    
    [WARNING] This will reset system identity. Continue only if creating VM image.
    
    Perform system cleanup? [y/N]:

4.4. Этап 4. Завершение

  1. Запрос на удаление файла node_config.env.

    Рекомендуется удалить файл в целях безопасности, если он не требуется для повторного использования.

              --== STAGE 4: COMPLETE ==--
    
    [ INFO  ] All configuration steps have been completed.
    [ INFO  ] Configuration saved to: ./node_config.env
    
    [ INFO  ] Configuration file: ./node_config.env
              This file contains answers and settings used during this run.
              For security reasons, the script may delete ./node_config.env
              after execution.
    
    Delete configuration file './node_config.env' and log? [y/N]:
  2. Выводится уведомление о параметрах, требующих перезагрузки (IPv6, GRUB, Cleanup).

    [ INFO  ] Some changes require a reboot to take effect:
              - IPv6 enable
              - GRUB kernel parameters updated
              - System cleanup (VM image preparation)
  3. Скрипт предложит повторно запустить этап 2, чтобы убедиться, что все предупреждения (WARNING) устранены:

    Press Enter to continue, or 'y' to re-run audit [y/N]:
  4. Выберите действие с системой: перезагрузка, выключение или выход в консоль:

    Select system power action
    [1] Reboot the system now
    [2] Shutdown the system now
    [3] Do not reboot (exit to shell)