Last active
February 27, 2024 20:38
-
-
Save Conkernel/8d954079443d35c35cb56b8ad5a1d858 to your computer and use it in GitHub Desktop.
Automatizar dotfiles (en construcción!!)
This file contains hidden or 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 | |
#set -x | |
# Antes de nada revisamos si tenemos permisos de sudo: | |
if [[ $EUID -ne 0 ]]; then | |
echo "[-] Este script debe ejecutarse con permisos de root. Saliendo..." | |
exit 1 | |
fi | |
##### @ Variables @ ##### | |
# Necesitamos saber la home del usuario real | |
if [ -z "$SUDO_USER" ] || [ "$SUDO_USER" == "root" ]; then | |
RUSER=root | |
HOME=/root | |
else | |
RUSER=(`sudo -u $SUDO_USER whoami`) | |
HOME=/home/$RUSER | |
fi | |
DOTFILES_DIR="$HOME/.config/dotfiles" | |
SSH_DIR=$HOME/.ssh | |
ID_RSA=$SSH_DIR/id_rsa_dotfiles | |
#... | |
############################################################################### | |
# Pruebas temporales | |
echo "El home del usuario actual ($RUSER) es :$HOME" | |
echo '$EUID'=$EUID | |
echo '$SUDO_USER'=$SUDO_USER | |
#... | |
############################################################################### | |
# Arbol de directorios necesarios para ejecutar este script: | |
# Revisamos si el directorio $SSH_DIR ya había sido creado. Si no, lo creamos. | |
if ! [[ -d $SSH_DIR ]]; then | |
mkdir -p $SSH_DIR | |
if [[ $? -eq 0 ]]; then | |
echo "[+] Creado el directorio personal para claves ssh en $SSH_DIR" | |
else | |
echo "[-] Algo ha salido mal. Saliendo..." | |
exit 1 | |
fi | |
else | |
echo "[+] El directorio $SSH_DIR ya estaba creado. Continuamos..." | |
fi | |
# Revisamos si el directorio $DOTFILES_DIR ya había sido creado. Si no, lo creamos. | |
if ! [[ -d $DOTFILES_DIR ]]; then | |
mkdir -p $DOTFILES_DIR | |
if [[ $? -eq 0 ]]; then | |
echo "[+] Creado el directorio $DOTFILES_DIR para guardar el material necesario del setup" | |
else | |
echo "[-] Algo ha salido mal. Saliendo..." | |
exit1 | |
fi | |
else | |
echo "[+] El directorio $DOTFILES_DIR ya estaba creado. Continuamos..." | |
fi | |
#... | |
############################################################################### | |
# Revisamos si existe ansible, y si no, lo instalamos: | |
if ! [[ -x "$(command -v ansible)" ]];then | |
echo "[+] Ansible no encontrado. Lo instalamos..." | |
sudo pacman -S ansible --noconfirm | |
if [[ $? -ne 0 ]]; then | |
echo "[-] Algo ha salido mal instalando ansible. Salimos." | |
exit 1 | |
else | |
echo "[+] Ansible ha sido instalado correctamente. Continuamos..." | |
fi | |
else | |
echo "[+] Ansible ya estaba instalado. Continuamos..." | |
fi | |
# Creamos las claves rsa para que use ansible | |
# ssh -i ~/.ssh/id_rsa_personal usuario@servidor_personal | |
if ! [[ -d SSH_DIR ]]; then | |
echo "[+] El fichero $SSH_DIR no existe. Lo creamos..." | |
mkdir -p $SSH_DIR | |
if [[ $? -ne 0 ]]; then | |
echo "[-] Algo ha ido mal creando el directorio $SSH_DIR. Saliendo." | |
exit 1 | |
else | |
chmod 700 $SSH_DIR | |
echo "[+] Directorio $SSH_DIR creado. Continuamos..." | |
fi | |
if ! [[ -f $ID_RSA ]]; then | |
echo "[-] El fichero $ID_RSA no existe. Lo creamos..." | |
ssh-keygen -b 4096 -t rsa -f $ID_RSA -N "" -C "$USER@HOSTNAME_dotfiles" | |
if [[ $? -ne 0 ]]; then | |
echo "[-] Algo ha ido mal creando la llave rsa en $ID_RSA. Saliendo." | |
exit 1 | |
else | |
echo "[+] Llave RSA creada en $ID_RSA. Ahora la añadimos a las authorized_keys para que ansible se pueda conectar sin problemas..." | |
fi | |
cat $ID_RSA.pub >> $SSH_DIR/authorized_keys | |
if [[ $? -ne 0 ]]; then | |
echo "[-] Algo ha salido mal añadiendo las claves RSA en $SSH_DIR/authorized_keys. Revisa permisos. Salimos." | |
else | |
echo "[+] La llave ha sido agregada correctamente. Continuamos dándole permisos 600 para mayor seguridad..." | |
fi | |
chmod 600 $SSH_DIR/authorized_keys | |
if [[ $? -ne 0 ]]; then | |
echo "[-] Algo ha salido mal dando permisos 600 a $SSH_DIR/authorized_keys. Revisa permisos. Salimos." | |
else | |
echo "[+] Asignados permisos 600 al fichero $SSH_DIR/authorized_keys. Continuamos..." | |
fi | |
else | |
grep "dotfiles" $ID_RSA | |
fi | |
else | |
... | |
fi | |
# Parte de Ansible. Todavía en bragas... | |
#Verificamos la existencia del requirements.yml | |
if [[ -f "$DOTFILES_DIR/requirements.yml" ]]; then | |
cd "$DOTFILES_DIR" | |
echo "Fichero "requirements.yml" encontrado. Ejecutando ansible-galaxy..." | |
ansible-galaxy install -r requirements.yml | |
else | |
echo "Fichero "$DOTFILES_DIR/requirements.yml" no encontrado. Saliendo..." | |
exit 1 | |
fi | |
ansible-playbook --diff "$DOTFILES_DIR/main.yml" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment