From 55c66085db257e1a666fc1af8504a3bf13549004 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B8=D0=BA=D1=82=D0=BE=D1=80?= <78488229+viktor138irk@users.noreply.github.com> Date: Wed, 6 May 2026 19:24:11 +0900 Subject: [PATCH] Add first test VM creation script --- scripts/create_test_vm.sh | 71 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 scripts/create_test_vm.sh diff --git a/scripts/create_test_vm.sh b/scripts/create_test_vm.sh new file mode 100644 index 0000000..08c864b --- /dev/null +++ b/scripts/create_test_vm.sh @@ -0,0 +1,71 @@ +#!/usr/bin/env bash +set -euo pipefail + +VM_NAME="${1:-test-alpine}" +ISO_URL="${VIRTUALITY_TEST_ISO_URL:-https://dl-cdn.alpinelinux.org/alpine/v3.20/releases/x86_64/alpine-standard-3.20.3-x86_64.iso}" +ISO_PATH="/var/lib/virtuality/iso/alpine-standard.iso" +DISK_PATH="/var/lib/virtuality/images/${VM_NAME}.qcow2" +BRIDGE="${VIRTUALITY_BRIDGE:-br0}" +MEMORY="${VIRTUALITY_TEST_VM_MEMORY:-1024}" +VCPUS="${VIRTUALITY_TEST_VM_VCPUS:-1}" +DISK_SIZE="${VIRTUALITY_TEST_VM_DISK_SIZE:-8}" + +if [[ "$EUID" -ne 0 ]]; then + echo "Ошибка: запусти через sudo: sudo bash scripts/create_test_vm.sh" + exit 1 +fi + +if ! command -v virt-install >/dev/null 2>&1; then + echo "Ошибка: virt-install не найден. Запусти install_virtuality_node.sh" + exit 1 +fi + +if ! command -v virsh >/dev/null 2>&1; then + echo "Ошибка: virsh не найден. Запусти install_virtuality_node.sh" + exit 1 +fi + +if ! ip link show "$BRIDGE" >/dev/null 2>&1; then + echo "Ошибка: bridge $BRIDGE не найден. Сначала настрой br0." + ip -br a + exit 1 +fi + +mkdir -p /var/lib/virtuality/iso /var/lib/virtuality/images + +if virsh dominfo "$VM_NAME" >/dev/null 2>&1; then + echo "Виртуальная машина $VM_NAME уже существует." + virsh list --all + exit 0 +fi + +if [[ ! -f "$ISO_PATH" ]]; then + echo "Скачиваю тестовый ISO: $ISO_URL" + wget -O "$ISO_PATH" "$ISO_URL" +fi + +virsh pool-refresh virtuality-iso >/dev/null 2>&1 || true +virsh pool-refresh virtuality-images >/dev/null 2>&1 || true + +echo "Создаю тестовую VM: $VM_NAME" +virt-install \ + --name "$VM_NAME" \ + --memory "$MEMORY" \ + --vcpus "$VCPUS" \ + --disk "path=${DISK_PATH},size=${DISK_SIZE},format=qcow2,bus=virtio" \ + --cdrom "$ISO_PATH" \ + --os-variant generic \ + --network "bridge=${BRIDGE},model=virtio" \ + --graphics vnc,listen=0.0.0.0 \ + --noautoconsole + +echo + echo "VM создана." +virsh list --all + +echo + echo "VNC display:" +virsh vncdisplay "$VM_NAME" || true + +echo + echo "Открыть в Cockpit: https://SERVER_IP:9090 → Virtual machines → ${VM_NAME}"