Last active
December 21, 2021 16:44
-
-
Save imharvol/bce8065d3b38547e0415a788558a5ff8 to your computer and use it in GitHub Desktop.
Script de setup para la práctica 4 de IC con OpenMP y OpenMPI
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Puede ser necesario desactivar el firewall o si estás usando máquinas en redes distintas entre los ordenadores, abrir puertos | |
# Añadimos las IPs de todas las máquinas que queramos preparar, separadas por espacios | |
instance_ips=( 0.0.0.0 0.0.0.0 ) | |
instance_username="" | |
repo="[email protected]:imharvol/2021-ic-practica-4.git" | |
# Aqui hay que pegar la clave que se genera en ~/.ssh/id_rsa al hacer ssh-keygen | |
id_rsa_file=$(mktemp) | |
cat<<'EOF' >> ${id_rsa_file} | |
-----BEGIN OPENSSH PRIVATE KEY----- | |
... | |
-----END OPENSSH PRIVATE KEY----- | |
EOF | |
# Aqui hay que pegar la clave que se genera en ~/.ssh/id_rsa.pub al hacer ssh-keygen | |
id_rsa_pub_file=$(mktemp).pub | |
cat<<'EOF' >> ${id_rsa_pub_file} | |
ssh-rsa ... | |
EOF | |
for instance_ip in "${instance_ips[@]}" | |
do | |
echo "Setting up $instance_ip" | |
# Añadimos la IP a known hosts para no tener problemas al conectarnos por SSH | |
ssh-keyscan -H ${instance_ip} >> ~/.ssh/known_hosts | |
# Añadimos la clave pública a ~/.ssh/authorized_hosts para no tener que introducir la contraseña al conectarnos por SSH | |
ssh-copy-id -i ${id_rsa_pub_file} ${instance_username}@${instance_ip} | |
# Copiamos la clave pública y privada, así nos podemos conectar de cualquier ordenador a cualquier ordenador y por lo tanto cualquiera puede ser el "coordinador" | |
scp ${id_rsa_file} ${instance_username}@${instance_ip}:~/.ssh/id_rsa | |
scp ${id_rsa_pub_file} ${instance_username}@${instance_ip}:~/.ssh/id_rsa.pub | |
# Ejeculamos el siguiente script en la máquina remota | |
ssh -T ${instance_username}@${instance_ip} <<'EOF' | |
git_branch=pmc91 | |
hosts="0.0.0.0\n0.0.0.0" # Esto hay que actualizarlo con las ips de todas las máquinas que queremos preparar separadas por un \n | |
# Descomentar si no tiene nada instalado | |
#sudo apt-get update -y && sudo apt-get upgrade -y | |
#sudo apt-get install vim git screen tmux htop -y | |
#sudo apt-get install gcc g++ make -y cmake | |
#sudo apt-get install openmpi-bin openmpi-common openmpi-doc libopencv-dev -y | |
# Añadimos la IP de GitHub a known_hosts para no tener ningún problema al hacer git clone | |
ssh-keyscan -H github.com >> ~/.ssh/known_hosts | |
# rm -rf 2021-ic-practica-4* | |
# Clonamos el repositorio y nos vamos a la branch que queramos ejecutar | |
git clone $repo | |
cd $repo_name | |
git fetch origin $repo_branch | |
git checkout $repo_branch | |
# Compilamos | |
./get_dataset.sh | |
cd build | |
# Creamos el archivo de los hosts y los añadimos | |
touch hosts.txt | |
chmod 600 hosts.txt | |
echo -e $hosts > hosts.txt | |
# Añadimos todos los ordenadores a known_hosts para no tener problemas al conectarse los unos a los otros | |
instance_ips=( 0.0.0.0 0.0.0.0 ) # Lo mismo que hemos hecho al principio | |
for instance_ip in "${instance_ips[@]}" | |
do | |
ssh-keyscan -H ${instance_ip} >> ~/.ssh/known_hosts | |
done | |
#sudo reboot now | |
EOF | |
echo "Finished setting up $instance_ip" | |
done | |
# Para ejecutar: | |
# interfaz_red="enp2s0" \ | |
# numero_nodos="5" \ | |
# mpirun -mca plm_rsh_no_tree_spawn 1 -mca btl_tcp_if_include $interfaz_red --hostfile hosts.txt -pernode -n $numero_nodos ./cv | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment