test

#!/bin/bash set -e # CONFIGURATION VM_COUNT=3 BASE_IMG="/var/lib/libvirt/images/ubuntu-2004-base.qcow2" RAM_MB=8192 VCPUS=8 DISK_SIZE_GB=32 NETWORK_PREFIX="10.10.10" GATEWAY="10.10.10.1" DNS="8.8.8.8" START_VNC_PORT=5900 declare -a VM_INFO for i in $(seq 1 $VM_COUNT); do VM_NAME="vm${i}" STATIC_IP="${NETWORK_PREFIX}.$((100 + i))" LINKED_IMG="/var/lib/libvirt/images/${VM_NAME}.qcow2" CI_ISO="/var/lib/libvirt/images/${VM_NAME}-cidata.iso" MAC_ADDR=$(printf '52:54:00:%02x:%02x:%02x' $((RANDOM % 256)) $((RANDOM % 256)) $((RANDOM % 256))) VNC_PORT=$((START_VNC_PORT + i)) echo "[+] Creating linked image for $VM_NAME..." qemu-img create -f qcow2 -b "$BASE_IMG" -F qcow2 "$LINKED_IMG" echo "[+] Creating cloud-init ISO for $VM_NAME..." mkdir -p /tmp/${VM_NAME}-cloudinit cat > /tmp/${VM_NAME}-cloudinit/user-data <<EOF #cloud-config hostname: ${VM_NAME} manage_etc_hosts: true users: - name: ubuntu ssh-authorized-keys: - $(cat ~/.ssh/id_rsa.pub) sudo: ['ALL=(ALL) NOPASSWD:ALL'] shell: /bin/bash package_update: true package_upgrade: true packages: - qemu-guest-agent runcmd: - systemctl enable qemu-guest-agent EOF cat > /tmp/${VM_NAME}-cloudinit/meta-data <<EOF instance-id: ${VM_NAME} local-hostname: ${VM_NAME} EOF cat > /tmp/${VM_NAME}-cloudinit/network-config <<EOF version: 2 ethernets: ens3: dhcp4: false addresses: [${STATIC_IP}/24] gateway4: ${GATEWAY} nameservers: addresses: [${DNS}] EOF genisoimage -quiet -output "$CI_ISO" -volid cidata -joliet -rock \ /tmp/${VM_NAME}-cloudinit/user-data \ /tmp/${VM_NAME}-cloudinit/meta-data \ /tmp/${VM_NAME}-cloudinit/network-config rm -rf /tmp/${VM_NAME}-cloudinit echo "[+] Defining VM $VM_NAME with MAC $MAC_ADDR, IP $STATIC_IP, VNC port $VNC_PORT..." virt-install \ --name "${VM_NAME}" \ --ram "$RAM_MB" \ --vcpus "$VCPUS" \ --disk path="$LINKED_IMG",format=qcow2,bus=virtio \ --disk path="$CI_ISO",device=cdrom \ --os-variant ubuntu20.04 \ --graphics vnc,listen=0.0.0.0,port=$VNC_PORT \ --network network=default,model=virtio,mac="$MAC_ADDR" \ --import \ --noautoconsole VM_INFO+=("$VM_NAME $STATIC_IP $MAC_ADDR VNC:$VNC_PORT") done echo "" echo "=========================================" echo "✅ VM Creation Complete. Summary:" echo "=========================================" printf "%-10s %-15s %-20s %-10s\n" "VM Name" "IP Address" "MAC Address" "VNC Port" for entry in "${VM_INFO[@]}"; do printf "%-10s %-15s %-20s %-10s\n" $entry done

Comments

Popular posts from this blog

Modern Tamil Boy Names | மாடர்ன் ஆண் குழந்தை பெயர்கள் | Baby Names Tamil | TOP TRENDING

ஆண் குழந்தை பெயர்கள் | ப வரிசை| Tamil Names For Boys | P, B

ஆண் குழந்தை பெயர்கள் | க வரிசை| Tamil Names For Boys | K,G

Tamil Baby Boy Names | ஆண் குழந்தை பெயர்கள் | Baby Names Tamil

ஆண் குழந்தை பெயர்கள் | ச வரிசை| Tamil Names For Boys | S, C