use metadata binarie #4

Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
This commit is contained in:
GnomeZworc 2026-01-06 22:55:25 +01:00
commit 899840bfd6
Signed by: nicolas.boufideline
GPG key ID: 4406BBBF8845D632
3 changed files with 13 additions and 55 deletions

View file

@ -1,65 +1,24 @@
#!/bin/bash
function metadata_service() {
cp ./files/metadata.service /etc/systemd/system/metadata@.service
cp ./files/metadata.sh /usr/local/bin/run-metadata-in-netns.sh
chmod +x /usr/local/bin/run-metadata-in-netns.sh
}
function metadata_config() {
vm_name="${1}"
meta_def="${2}"
ssh_key="${3}"
PASSWORD="\$6\$LD5z9v/s2b170Twj\$pl1B/Mz0w8PCr7JhFcclQpBSxUQTDOiuPko8yf4LntEo8FrIo2yKVeHR6fb5VQpxX9NP2k9yhXdsp671Sc56u1"
VENDOR_DATA=$(
cat <<END | sed -e ':a;N;$!ba;s/\n/\\n/g' | sed -e 's/"/\\"/g'
#cloud-config
users:
- name: syonad
lock_passwd: false
gecos: alpine Cloud User
groups: [adm, wheel]
doas:
- permit nopass syonad
sudo: ["ALL=(ALL) NOPASSWD:ALL"]
shell: /bin/ash
passwd: "${PASSWORD}"
ssh_authorized_keys:
- ${ssh_key}
END
)
cat <<END > "/opt/metadata/${meta_def}.conf"
{
"meta-data": "instance-id: ${vm_name}\nlocal-hostname: ${vm_name}\n",
"user-data": "#!/bin/sh\npasswd -d root\n",
"network-config": "version: 2\nethernets:\n eth0:\n dhcp4: true\n",
"vendor-data": "${VENDOR_DATA}"
}
END
}
function metadata_start() {
local vpc="${1}"
local ip="${2}"
local port="${3}"
local vm_name="${4}"
local ssh_key="${5}"
local vm="${6}"
PASSWORD="\$6\$LD5z9v/s2b170Twj\$pl1B/Mz0w8PCr7JhFcclQpBSxUQTDOiuPko8yf4LntEo8FrIo2yKVeHR6fb5VQpxX9NP2k9yhXdsp671Sc56u1"
metadata_config "${vm_name}" "${vpc}_${ip}-${port}" "${ssh_key}"
systemctl start "metadata@${vpc}_${ip}-${port}.service"
/opt/two/bin/meta --start --vm_name "${vm}" \
--ip "${ip}" \
--key "${ssh_key}" \
--pass "${PASSWORD}" \
--port "${port}" \
--vpc_name "${vpc}"
}
function metadata_stop() {
vpc="${1}"
ip="${2}"
port="${3}"
vm="${1}"
systemctl stop "metadata@${vpc}_${ip}-${port}.service"
rm -f "/opt/metadata/${vpc}_${ip}-${port}.conf"
/opt/two/bin/meta --stop --vm_name "${vm}"
}

View file

@ -41,6 +41,5 @@ function config_kvm {
brctl stp "br-public" off
ip link set up dev "br-public"
metadata_service
systemctl daemon-reload
}

View file

@ -51,7 +51,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}" "${public_ip}"
create_tap "${tap_id}" "br-${subnet_id}" "${vpc_name}"
metadata_start "${vpc_name}" "${gateway_ip}" "${metadata_port}" "${vm_name}" "${ssh_key}"
metadata_start "${vpc_name}" "${gateway_ip}" "${metadata_port}" "${vm_name}" "${ssh_key}" "${vm_name}"
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}"
print_in_color "${COLOR_GREEN}" "Start vm ${vm_name}"
@ -94,7 +94,7 @@ function qemu_stop_vm {
print_in_color "${COLOR_RED}" "Delete tap${tap_id}"
ip -n "${vpc_name}" link del dev "tap${tap_id}"
metadata_stop "${vpc_name}" "${gateway_ip}" "${metadata_port}"
metadata_stop "${vm_name}"
delete_public_ip "${vpc_name}" "${public_ip}" "${ip}"
delete_in_db "vm" "${vm_name}"