diff --git a/installer/ogboot_installer.sh b/installer/ogboot_installer.sh index 9a9ba2c..398fc38 100644 --- a/installer/ogboot_installer.sh +++ b/installer/ogboot_installer.sh @@ -23,6 +23,10 @@ function globalSetup() { BRANCH=${1:-"main"} + if (( $# > 1 )); then + CLIENTS=("${@:2}") + fi + GIT_REPO="ssh://git@ognproject.evlt.uma.es:21987/opengnsys/ogboot.git" # Directorios de instalación y destino de OpenGnsys. @@ -94,7 +98,44 @@ local DEPENDENCIES=( tftpd-hpa xinetd build-essential - g++-multilib + g++-multilibgenerate_ipxe_script() { + + echo "Generando script IPXE..." + ip_address_server=$(ifconfig eth0 | awk '/inet / {print $2}') + template="etc/dhcp_boot.ipxe.tmpl" + + ipxe_output="/opt/opengnsys/tftpboot/ipxe_scripts/dhcp_boot.ipxe" + + # Reemplazar SERVERIP con la dirección IP en la plantilla y guardarla en el archivo de salida + sed "s/SERVERIP/$ip_address_server/g" "$template" > "$ipxe_output" + + template_default="tftpboot/ipxe_scripts/default.ipxe" + + default_output="/opt/opengnsys/tftpboot/ipxe_scripts/default.ipxe" + + mac_script_template="etc/mac_script.ipxe.tmpl" + + sed "s/SERVERIP/$ip_address_server/g" "$template_default" > "$default_output" + echo "Creando ficheros MAC script" + for client_declaration in "${CLIENTS[@]}"; do + # Evaluar la cadena para reconstruir el array asociativo del cliente + eval "$client_declaration" + + hostname="${CLIENT[hostname]}" + mac_address="${CLIENT[mac_address]}" + ip_address="${CLIENT[ip_address]}" + mac_address_lower=$(echo "$mac_address" | tr '[:upper:]' '[:lower:]') + filename="01-${mac_address_lower}" + sed "s/SERVERIP/$ip_address_server/g; s/IP_ADDRESS/$ip_address/g; s/HOSTNAME/$hostname/g; s/MAC_ADDRESS/$mac_address/g" $mac_script_template > "/opt/opengnsys/tftpboot/ipxe_scripts/$filename" + echo "Archivo $filename creado con los parámetros modificados." + done + + + echo "Archivos creados correctamente." + + + +} wget curl graphviz @@ -397,6 +438,45 @@ function copyServerFiles() { popd || return } +generate_ipxe_script() { + + echo "Generando script IPXE..." + ip_address_server=$(ifconfig eth0 | awk '/inet / {print $2}') + template="etc/dhcp_boot.ipxe.tmpl" + + ipxe_output="/opt/opengnsys/tftpboot/ipxe_scripts/dhcp_boot.ipxe" + + # Reemplazar SERVERIP con la dirección IP en la plantilla y guardarla en el archivo de salida + sed "s/SERVERIP/$ip_address_server/g" "$template" > "$ipxe_output" + + template_default="tftpboot/ipxe_scripts/default.ipxe" + + default_output="/opt/opengnsys/tftpboot/ipxe_scripts/default.ipxe" + + mac_script_template="etc/mac_script.ipxe.tmpl" + + sed "s/SERVERIP/$ip_address_server/g" "$template_default" > "$default_output" + echo "Creando ficheros MAC script" + for client_declaration in "${CLIENTS[@]}"; do + # Evaluar la cadena para reconstruir el array asociativo del cliente + eval "$client_declaration" + + hostname="${CLIENT[hostname]}" + mac_address="${CLIENT[mac_address]}" + ip_address="${CLIENT[ip_address]}" + mac_address_lower=$(echo "$mac_address" | tr '[:upper:]' '[:lower:]') + filename="01-${mac_address_lower}" + sed "s/SERVERIP/$ip_address_server/g; s/IP_ADDRESS/$ip_address/g; s/HOSTNAME/$hostname/g; s/MAC_ADDRESS/$mac_address/g" $mac_script_template > "/opt/opengnsys/tftpboot/ipxe_scripts/$filename" + echo "Archivo $filename creado con los parámetros modificados." + done + + + echo "Archivos creados correctamente." + + + +} + function tftpConfigure() {