Files
kvm-cloudimage/vm_install.sh

89 lines
2.5 KiB
Bash
Executable File

#!/bin/env bash
VM_BASE_DIR=${VM_BASE_DIR:-"${HOME}/vms"}
VM_USER="user"
VM=$1
VM_IP=''
SCRIPT=''
VM_DISTRO=''
VM_VERSION=''
usage() {
cat << EOF
USO: $0 VM
Este script instala algunos programas en la VM seleccionada
EOF
}
# Función para obtener la dirección IP de la máquina virtual
get_vm_ip_address() {
local VM="$1"
# Obtener la dirección MAC de la interfaz de red
MAC_VM=$(virsh domiflist "$VM" | awk '{ print $5 }' | tail -2 | head -1)
if [[ -z "$MAC_VM" ]]; then
echo "Error: No se pudo encontrar la dirección MAC para '$VM'"
return 1
fi
# Obtener la dirección IP a partir de la dirección MAC
VM_IP_ADDRESS=$(arp -a | grep "$MAC_VM" | awk '{ print $2 }' | sed 's/[()]//g')
if [[ -z "$VM_IP_ADDRESS" ]]; then
echo "Error: No se pudo encontrar la dirección IP para la dirección MAC '$MAC_VM'"
return 1
fi
echo "$VM_IP_ADDRESS"
}
obtener_info_vm() {
# Obtener el ID del sistema operativo
# Obtener el ID del sistema operativo
OS_ID=$(grep -o 'id="[^"]*"' "$1" | tr -d '"' | awk '{print $1}')
# Eliminar el protocolo y el dominio del ID
OS_ID=$(echo "$OS_ID" | cut -d '/' -f 2-)
echo $OS_ID
# Convertir la URL a un nombre de distribución y versión
VM_DISTRO=$(echo "$OS_ID" | awk -F '/' '{print $3}')
VM_VERSION=$(echo "$OS_ID" | awk -F '/' '{print $4}')
}
# Obtener el nombre del host de la máquina virtual
VM="$1"
if [[ -z "$VM" ]]; then
usage
exit 1
fi
# Obtener la dirección IP de la máquina virtual
VM_IP=$(get_vm_ip_address "$VM")
obtener_info_vm ${VM_BASE_DIR}/xml/${VM}.xml
while true; do
read -r -p $'Select software to install:\n 1.Docker\n 2.Gitlab CE\n 3.Gitlab runner\n 4.Kubernetes Single cluster\n' -n1 answer
case $answer in
[1]* )
if [[ "$VM_DISTRO" == "debian" ]]; then
SCRIPT='../vm_example_scripts/docker_debian.sh'
elif [[ "$VM_DISTRO" == "ubuntu" ]]; then
SCRIPT='../vm_example_scripts/docker_ubuntu.sh'
fi
break;;
[2]* ) SCRIPT='../vm_example_scripts/gitlab_ce.sh'
break;;
[3]* ) SCRIPT='../vm_example_scripts/gitlab_runner.sh'
break;;
[4]* ) cd ../vm_example_scripts/
./k8s.sh $VM
break;;
* ) echo "Please answer 1,2,3 or 4.";;
esac
done
if [[ -z "$SCRIPT" ]]; then
exit 0
else
ssh -i ${VM_BASE_DIR}/ssh/${VM} -l${VM_USER} ${VM_IP} "bash -s" -- < ${SCRIPT}
fi