Alt-packer

Материал из ALT Linux Wiki
Версия от 18:40, 3 февраля 2025; Elena Mishina (обсуждение | вклад) (Новая страница: «{{Stub}} Alt packer содержит определения Packer для создания образов для загрузки ALT Linux в виртуальных средах, таких как KVM, VirtualBox и т. д. Alt packer позволяет подготовить базовый («золотой») образ ВМ для OpenUDS, который содержит предустановленную операционную систему, OpenUD...»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.


Alt packer содержит определения Packer для создания образов для загрузки ALT Linux в виртуальных средах, таких как KVM, VirtualBox и т. д.

Alt packer позволяет подготовить базовый («золотой») образ ВМ для OpenUDS, который содержит предустановленную операционную систему, OpenUDS actor, зарегистрированный на сервере OpenUDS, необходимые приложения и настройки.

Подготовка машины сборки

Предварительная настройка:

  1. Обновить ядро:
    # update-kernel
    
    И перезагрузить компьютер, чтобы воспользоваться новыми пакетами ядра.
  2. Установить следующие пакеты и их зависимости:
    # apt-get install make jq curl wget qemu-kvm packer
    
  3. Добавить необходимый модуль ядра в список модулей для загрузки:
    • для Intel:
      # echo kvm_intel >> /etc/modules-load.d/kvm.conf
      
    • для AMD:
      # echo kvm_amd >> /etc/modules/kvm.conf
      
  4. Добавить пользователя в группу vmusers для QEMU:
    # gpasswd -a <имя пользователя> vmusers
    
  5. Перезагрузить машину.

Склонировать ветку cloud из репозитория https://github.com/alt-cloud/alt-packer.git:

$ git clone --branch=cloud  https://github.com/alt-cloud/alt-packer.git

Перейти в каталог alt-packer:

$ cd alt-packer

Создать каталог packer_cache (или символическую ссылку на него) и загрузить в него необходимые ISO.

$ mkdir packer_cache
$ wget -P packer_cache/ http://ftp.altlinux.org/pub/distributions/ALTLinux/p10/images/server/x86_64/alt-server-10.2-x86_64.iso
Примечание: Если в каталоге packer_cache нет нужного ISO-образа, он будет туда скачан при создании образа.


Сборка образа для OpenUDS

Команда создания образа для OpenUDS:

$ make image target=<дистрибутив> BASE_VERSION=<версия> TARGET_VERSION=<версия> VM_TYPE=openuds-actor OPENUDS_HOST=<IP-адрес>

Допустимые параметры:

  • target — целевой дистрибутив (возможные значения: alt-server, alt-workstation, alt-kworkstation)
  • VM_TYPE — тип образа (по умолчанию qemu);
  • BASE_VERSION — версия исходного образа;
  • TARGET_VERSION — версия целевого образа;
  • OPENUDS_ACTOR_SSL_VALIDATION — уровень безопасности для связи с сервером OpenUDS (по умолчанию no);
  • OPENUDS_HOST — IP-адрес сервера OpenUDS;
  • OPENUDS_AUTHENTICATOR — аутентификатор, которому принадлежит пользователь-администратор (по умолчанию admin);
  • OPENUDS_USERNAME — имя пользователя, имеющего права администратора в среде OpenUDS (по умолчанию root);
  • OPENUDS_PASSWORD — пароль пользователя (по умолчанию udsmam0);
  • OPENUDS_ACTOR_LOG_LEVEL — уровень журналирования (по умолчанию error).

Пример команды для создания образа:

$ make image target=alt-workstation BASE_VERSION=10.2 TARGET_VERSION=10.2 VM_TYPE=openuds-actor OPENUDS_HOST=192.168.0.53

В данном примере при создании образа будет использоваться ISO-образ alt-workstation-10.2-x86_64.iso и будут выполнены следующие настройки:

  • OpenUDS Actor будет установлен и зарегистрирован на сервере OpenUDS (192.168.0.53);
  • создан пользователь test с паролем 123;
  • настроен сервер XRDP;
  • для пользователя root установлен пароль 123;
  • отключен SSH-доступ по паролю.

Добавление дополнительных шагов

Примечание: Если вы решили каким-либо образом дополнить существующий шаблон виртуальной машины, то вам следует выполнить деперсонализацию еще раз.


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

  1. Добавить дополнительные действия в скрипт scripts/steps/setup_openuds_actor.
  2. Создать дополнительный скрипт в каталоге scripts/steps/, затем добавить его в scripts/vm_setup.

Пример скрипта, который добавляет установку веб-браузера chromium:

  1. Создать файл scripts/steps/setup_chromium:
    #! /bin/sh
    set -euo pipefail
    echo "Install Chromium"
    apt-get -y install chromium
    
  2. Добавить права на запуск скрипта:
    # chmod +x scripts/steps/setup_chromium
    
  3. Добавить созданный скрипт в список шагов для openuds-actor (файл scripts/vm_setup):
    if test "${VM_TYPE}" == "openuds-actor"; then
    	${STEP_DIR}/setup_remove_cdroms_repos
    	${STEP_DIR}/setup_apt
    	if test "${CLOUDINIT}" == "1"; then
    		${STEP_DIR}/setup_cloudinit
    	fi
    	${STEP_DIR}/setup_agent
    	${STEP_DIR}/setup_network
    	${STEP_DIR}/setup_root
    	${STEP_DIR}/setup_test_user
    	${STEP_DIR}/setup_restore_sshd_config
    	${STEP_DIR}/setup_ssh
    	${STEP_DIR}/setup_prepare_new_instance
    	${STEP_DIR}/setup_ansible
    	${STEP_DIR}/setup_chromium
    	${STEP_DIR}/setup_openuds_actor
    fi
    

Пример скрипта, который устанавливает и настраивает сервер X2GO:

  1. Создать файл scripts/steps/setup_x2go:
    #! /bin/sh
    set -euo pipefail
    echo "Install x2goserver" 
    apt-get -y install x2goserver
    systemctl enable --now x2goserver
    # echo "Enabled sshd-password"
    control sshd-password-auth enabled
    
  2. Добавить права на запуск скрипта:
    # chmod +x scripts/steps/setup_x2go
    
  3. Добавить созданный скрипт в список шагов для openuds-actor (файл scripts/vm_setup):
    if test "${VM_TYPE}" == "openuds-actor"; then
    	${STEP_DIR}/setup_remove_cdroms_repos
    	${STEP_DIR}/setup_apt
    	if test "${CLOUDINIT}" == "1"; then
    		${STEP_DIR}/setup_cloudinit
    	fi
    	${STEP_DIR}/setup_agent
    	${STEP_DIR}/setup_network
    	${STEP_DIR}/setup_root
    	${STEP_DIR}/setup_test_user
    	${STEP_DIR}/setup_restore_sshd_config
    	${STEP_DIR}/setup_ssh
    	${STEP_DIR}/setup_prepare_new_instance
    	${STEP_DIR}/setup_ansible
    	${STEP_DIR}/setup_x2go
    	${STEP_DIR}/setup_openuds_actor
    fi
    

Расположение и наименование образов

Все созданные образы находятся в каталоге ./images. По умолчанию к имени образа добавляются текущая дата и тег git. Если тега нет, добавляется хеш текущего коммита, например:

alt-workstation-10.2-openuds-actor-20250203-4f20feb-x86_64.qcow2

При необходимости тег, хеш и дату можно переопределить с помощью переменных среды GIT_TAG, GIT_HASH, GIT_DATE:

$ make image target=alt-server BASE_VERSION=10 TARGET_VERSION=10 VM_TYPE=cloud GIT_TAG=1.0.1 GIT_DATE=20250123

Разворачивание образа в PVE

Процедура разворачивания образа:

  1. Скопировать образ на машину PVE.
  2. На машине PVE импортировать образ. Команда импорта:
     qm importdisk <vmid> <source> <storage> [OPTIONS]
    
    Импорт диска в хранилище local, для ВМ с ID 207:
    # qm importdisk 207 /home/user/alt-workstation-10.2-openuds-actor-20250203-4f20feb-x86_64.qcow2 local --format qcow2
    …
    Successfully imported disk as 'unused0:local:207/vm-207-disk-0.qcow2'
    
  3. Привязать диск к ВМ:
    # qm set 207 --scsi0 local:207/vm-207-disk-0.qcow2
    

Загрузка образа с помощью NBD

Загрузить образ можно также с помощью NBD.

На машине сборки:

  1. Установить пакет nbd-server:
    # apt-get install nbd-server
    
  2. Экспортировать образ QCOW2 с помощью NBD (на порту 12345):
    $ nbd-server 12345 /home/user/alt-packer/images/alt-server-10.2-openuds-actor-20250203-4f20feb-x86_64.qcow2
    
    На клиенте:
    # Установить пакет {{pkgL|nbd-client}}:
    #:<syntaxhighlight lang="bash"># apt-get install nbd-client
    
  3. Загрузить драйвер для NBD:
    # modprobe nbd
    
  4. Выполнить команду для подключения к серверу NBD (предполагается, что IP-адрес сервера 192.168.0.175):
    # nbd-client 192.168.0.175 12345
    
  5. Проверить, что образ QCOW2 смонтирован, с помощью этих команд:
    # file -s /dev/nbd0
    /dev/nbd0: QEMU QCOW Image (v3), 5368709120 bytes (v3), 5368709120 bytes
    
    или:
    # qemu-img info /dev/nbd0
    image: /dev/nbd0
    file format: qcow2
    virtual size: 5 GiB (5368709120 bytes)
    disk size: 0 B
    cluster_size: 65536
    Format specific information:
        compat: 1.1
        compression type: zlib
        lazy refcounts: false
        refcount bits: 16
        corrupt: false
        extended l2: false
    
  6. Перенести образ на блочное устройство:
    # qemu-img dd bs=1M if=/dev/nbd0 of=/var/lib/vz/images/208/vm-208-disk-0.qcow2
    
    Это может занять довольно много времени из-за передачи большого файла.
  7. Отключить клиент:
    # nbd-client -d /dev/nbd0
    
  8. Привязать диск к ВМ:
    # qm set 208 --scsi0 local:208/vm-208-disk-0.qcow2
    

Остановить NBD-сервер:

$ pkill nbd-server

Убедиться, что порт освободился:

$ ss -ntlup |grep 12345

Устранение неполадок

В случае проблем с автоустановщиком добавьте параметр instdebug в параметры загрузки ядра.

В случае ошибок типа No space left on device при использовании каталога /tmp — следует установить переменную TMPDIR на другой каталог.