From e22f3d4e67a17b3b6301933881b013678c168339 Mon Sep 17 00:00:00 2001 From: GnomeZworc Date: Sat, 24 May 2025 14:16:51 +0200 Subject: [PATCH] add public_ip Signed-off-by: GnomeZworc --- lib/prime/vm.sh | 4 +++- lib/qemu.sh | 8 +++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/prime/vm.sh b/lib/prime/vm.sh index 95c534c..494fdb7 100644 --- a/lib/prime/vm.sh +++ b/lib/prime/vm.sh @@ -25,6 +25,7 @@ function start_vm { DEFINE_string 'subnet_name' '-' 'SUBNET NAME' 's' DEFINE_string 'vm_name' '-' 'VM NAME' 'm' DEFINE_string 'vm_ip' '-' 'VM CIDR' 'p' + DEFINE_string 'public_ip' '-' 'VM Public ip' 'u' DEFINE_string 'volume_id' '-' 'Volume backend file' 'o' DEFINE_string 'ssh_key' '-' 'pub ssh Key' 'k' DEFINE_boolean 'dryrun' false 'Enable dry-run mode' 'd' @@ -54,13 +55,14 @@ function start_vm { print_in_color "${COLOR_SYAN}" " ip: ${vm_ip}" print_in_color "${COLOR_SYAN}" " volume backing file: ${FLAGS_volume_id}" print_in_color "${COLOR_SYAN}" " sshkey: ${FLAGS_ssh_key}" + print_in_color "${COLOR_SYAN}" " public_ip: ${FLAGS_public_ip}" print_in_color "${COLOR_SYAN}" "#############################################" echo echo create_vpc "${FLAGS_vpc_name}" create_subnet "${FLAGS_vpc_name}" "${FLAGS_subnet_name}" "${FLAGS_vxlan_id}" "${local_ip}" "${gateway_ip}" "${subnet}" - qemu_start_vm "${FLAGS_vm_ip}" "${FLAGS_subnet_name}" "${FLAGS_vpc_name}" "${FLAGS_vm_name}" "${FLAGS_volume_id}" "${FLAGS_ssh_key}" "${FLAGS_gateway_ip}" + qemu_start_vm "${FLAGS_vm_ip}" "${FLAGS_subnet_name}" "${FLAGS_vpc_name}" "${FLAGS_vm_name}" "${FLAGS_volume_id}" "${FLAGS_ssh_key}" "${FLAGS_gateway_ip}" "${local_ip}" "${FLAGS_public_ip}" } function stop_vm { diff --git a/lib/qemu.sh b/lib/qemu.sh index 546da6c..20886d2 100644 --- a/lib/qemu.sh +++ b/lib/qemu.sh @@ -4,6 +4,7 @@ . ./lib/colors.sh . ./lib/db.sh . ./lib/metadata.sh +. ./lib/public_ip.sh function check_qemu_exist { local vm_name="${1}" @@ -34,6 +35,8 @@ function qemu_start_vm { local volume_path="${5}" local ssh_key="${6}" local gateway_ip="${7}" + local local_ip="${8}" + local public_ip="${9}" local tap_id="$(generate_random_id 10)" local metadata_port="$(generate_random_number)" local subnet_id="$(echo "${subnet_name}" | cut -d\- -f2)" @@ -46,7 +49,7 @@ function qemu_start_vm { } || \ { print_in_color "${COLOR_GREEN}" "Create tap tap${tap_id}" - add_in_db "vm" "${vm_name}" "${subnet_name}" "${tap_id}" "${metadata_port}" "${ip}" + add_in_db "vm" "${vm_name}" "${subnet_name}" "${tap_id}" "${metadata_port}" "${ip}" "${public_ip}" create_tap "${tap_id}" "br-${subnet_id}" "${vpc_name}" metadata_start "${vpc_name}" "${gateway_ip}" "${metadata_port}" "${vm_name}" "${ssh_key}" ip netns exec "${vpc_name}" iptables -t nat -A PREROUTING -s "${ip}/32" -d "169.254.169.254/32" -p tcp -m tcp --dport 80 -j DNAT --to-destination "${gateway_ip}:${metadata_port}" @@ -65,6 +68,7 @@ function qemu_start_vm { -netdev "tap,id=net0,ifname=tap${tap_id},script=no,downscript=no" \ -device "virtio-net-pci,netdev=net0,mac=${mac}" \ -daemonize + add_public_ip "${vpc_name}" "${public_ip}" "${ip}" "${local_ip}" } } @@ -75,6 +79,7 @@ function qemu_stop_vm { local tap_id="$(echo "${vm_def}" | cut -d\; -f 3)" local metadata_port="$(echo "${vm_def}" | cut -d\; -f 4)" local ip="$(echo "${vm_def}" | cut -d\; -f 5)" + local public_ip="$(echo "${vm_def}" | cut -d\; -f 6)" local subnet_def=$(get_from_db "subnet" "${subnet_name}") local vpc_name="$(echo "${subnet_def}" | cut -d\; -f 2)" local gateway_ip="$(echo "${subnet_def}" | cut -d\; -f 5 | cut -d\/ -f 1)" @@ -90,6 +95,7 @@ function qemu_stop_vm { ip -n "${vpc_name}" link del dev "tap${tap_id}" metadata_stop "${vpc_name}" "${gateway_ip}" "${metadata_port}" + delete_public_ip "${vpc_name}" "${public_ip}" "${ip}" delete_in_db "vm" "${vm_name}" print_in_color "${COLOR_GREY}" "Try to delete ${subnet_name}"