Manage the routing of additional prefixes on VMs
This commit is contained in:
parent
e41806ae48
commit
0d9ba4deef
|
@ -85,7 +85,8 @@ fi
|
|||
# Fonction d'aide
|
||||
usage() {
|
||||
printf "Usage: ./creationRoutesVM.sh <VM_ID>\n"
|
||||
printf "VM_ID est l'id d'une VM dans PROXMOX, un entier supérieur à zéro\n"
|
||||
printf "VM_ID est l’id d’une VM dans PROXMOX, un entier supérieur à"
|
||||
printf "zéro\n"
|
||||
printf "option : \t-h, --help Affiche ce message d’aide\n"
|
||||
}
|
||||
|
||||
|
@ -138,7 +139,8 @@ else
|
|||
FEED_CACHE=1
|
||||
fi
|
||||
|
||||
# Mise du TOKEN dans une variable et retrait des éventuelles guillemets ajoutées lors de la récupération via jq
|
||||
# Mise du TOKEN dans une variable et retrait des éventuelles guillemets ajoutées
|
||||
# lors de la récupération via jq
|
||||
if [ ${FEED_CACHE} = 1 ]; then
|
||||
write_log DEBUG 'Getting token'
|
||||
TOKEN=$(echo ${RES_AUTHENT} | jq -r '.data.token')
|
||||
|
@ -191,13 +193,15 @@ MAC=$(grep 'vmbr1$' /etc/pve/nodes/*/qemu-server/${VM_ID}.conf | \
|
|||
|
||||
# Pour chaque subnet V4
|
||||
for ID_RANGE_V4 in ${ID_RANGES_V4}; do
|
||||
# Récupération des informations V4 en cache pour cet ID de subnet si le fichier de cache associé existe
|
||||
# Récupération des informations V4 en cache pour cet ID de subnet si le
|
||||
# fichier de cache associé existe
|
||||
if [ ! -f "${CHEMIN_CACHE}/${ID_RANGE_V4}" ]; then
|
||||
write_log FATAL "File not found: ${CHEMIN_CACHE}/${ID_RANGE_V4}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
VM_IPV4=$(jq -r ".data[] | select(.custom_vm_id==\"${VM_ID}\") | .ip" ${CHEMIN_CACHE}/${ID_RANGE_V4})
|
||||
ADD_IPV4=$(jq -r ".data[] | select(.custom_vm_id==\"${VM_ID}\") | .custom_add_range" ${CHEMIN_CACHE}/${ID_RANGE_V4})
|
||||
|
||||
# Wait for the migration to finish
|
||||
sleep 5
|
||||
|
@ -218,11 +222,17 @@ for ID_RANGE_V4 in ${ID_RANGES_V4}; do
|
|||
# En cas d'echec, on continue de parcourir les autres RANGES
|
||||
write_log WARN 'Empty value or doen’t correspond to an IPv4'
|
||||
fi
|
||||
|
||||
if [ -n "${ADD_IPV4}" ]; then
|
||||
# Don’t know why bird needs “onlink” to learn the route…
|
||||
ip route add ${ADD_IPV4} via ${VM_IPV4} dev ${IFACE} onlink
|
||||
fi
|
||||
done
|
||||
|
||||
# Pour chaque subnet V6
|
||||
for ID_RANGE_V6 in ${ID_RANGES_V6}; do
|
||||
# Récupération des informations V6 en cache pour cet ID de subnet si le fichier de cache associé existe
|
||||
# Récupération des informations V6 en cache pour cet ID de subnet si le
|
||||
# fichier de cache associé existe
|
||||
if [ ! -f "${CHEMIN_CACHE}/${ID_RANGE_V6}" ]; then
|
||||
write_log FATAL "File not found: ${CHEMIN_CACHE}/${ID_RANGE_V4}"
|
||||
exit 1
|
||||
|
@ -231,6 +241,7 @@ for ID_RANGE_V6 in ${ID_RANGES_V6}; do
|
|||
# Recherche des informations correspondants à la VM_ID
|
||||
VM_IPV6=$(jq -r ".data[] | select(.custom_vm_id==\"${VM_ID}\") | .subnet" ${CHEMIN_CACHE}/${ID_RANGE_V6})
|
||||
VM_NH=$(jq -r ".data[] | select(.custom_vm_id==\"${VM_ID}\") | .\"Next-hop\"" ${CHEMIN_CACHE}/${ID_RANGE_V6})
|
||||
ADD_IPV6=$(jq -r ".data[] | select(.custom_vm_id==\"${VM_ID}\") | .custom_add_range" ${CHEMIN_CACHE}/${ID_RANGE_V6})
|
||||
# Si la valeur n'est pas vide et correspond à un range IPV6
|
||||
if [ -n "${VM_IPV6}" ]; then
|
||||
if [ ${VM_NH} = 'null' ]; then
|
||||
|
@ -266,6 +277,10 @@ for ID_RANGE_V6 in ${ID_RANGES_V6}; do
|
|||
# En cas d'echec, on continue de parcourir les autres RANGES
|
||||
echo "Valeur vide ou ne correspond pas à un range IPV6"
|
||||
fi
|
||||
|
||||
if [ -n "${ADD_IPV6}" ]; then
|
||||
ip -6 route add ${ADD_IPV6} via ${VM_NH} dev ${IFACE}
|
||||
fi
|
||||
done
|
||||
|
||||
write_log INFO 'Script ended'
|
||||
|
|
Loading…
Reference in a new issue