Contenido del curso
Programación Shell Básica
Script Interactivos
Condicionales
Iteración
Archivos
Empaquetamiento
Funciones
Cierre del curso
Funciones de instalar y desinstalar postgres
Resumen
Automatiza tareas críticas de base de datos con seguridad y confianza. Aquí verás cómo crear un script en Bash para instalar y desinstalar PostgreSQL en Ubuntu, validando la instalación, gestionando contraseñas con sudo y controlando servicios con systemctl. Todo basado en un flujo práctico y reproducible.
¿Cómo automatizar la instalación de PostgreSQL en Ubuntu con Bash?
La estrategia parte de un nuevo script (basado en uno previo) que agrupa verificación, instalación y puesta en marcha del servicio. La lógica central: comprobar si existe el binario psql; si no, pedir contraseñas y ejecutar los comandos con privilegios.
¿Cómo verificar la instalación con which y códigos de salida?
- Usar
which psqlpara validar si PostgreSQL está en el PATH. - Interpretar
$?: 0 si hubo éxito, distinto de 0 si no se encontró. - Mostrar un mensaje si ya está instalado; de lo contrario, iniciar instalación.
# Verificación de instalación verify_install=$(which psql >/dev/null 2>&1) if [ $? -eq 0 ]; then echo "PostgreSQL ya se encuentra instalado en el equipo." else echo -e "Verificar instalación de PostgreSQL..." # aquí continúa el flujo de instalación fi
¿Cómo pedir contraseñas de sudo y Postgres de forma segura?
- Solicitar la contraseña del superusuario con lectura silenciosa.
- Pedir la contraseña que se asignará al usuario
postgres.
read -s -p "Ingresar contraseña de sudo: " password; echo read -s -p "Ingresar contraseña a utilizar en Postgres: " pg_password; echo
- Enviar la contraseña a sudo por pipe con
-Spara no repetirla en cada comando.
echo "$password" | sudo -S apt update echo "$password" | sudo -S apt-get -y install postgresql postgresql-contrib
¿Cómo configurar el usuario y habilitar el servicio?
- Cambiar la contraseña del usuario
postgresejecutando psql como ese usuario. - Habilitar y levantar el service con systemctl.
# Cambio de contraseña del usuario postgres echo "$password" | sudo -S -u postgres psql -c "ALTER USER postgres WITH PASSWORD '${pg_password}';" # Habilitar y arrancar el servicio echo "$password" | sudo -S systemctl enable postgresql.service echo "$password" | sudo -S systemctl start postgresql.service # Pausa para continuar echo after_msg="[Presione Enter para continuar]" read -n 1 -s -r -p "$after_msg"; echo
¿Cómo detener y desinstalar PostgreSQL por completo?
El proceso inverso apaga el servicio, purga paquetes y elimina directorios, usuario y grupo asociados a PostgreSQL. Todo mediante el mismo patrón: contraseña única, pipe a sudo y comandos idempotentes.
- Bajar el servicio antes de remover paquetes.
- Purgar con
apt-gety eliminar archivos de configuración y datos. - Remover usuario y grupo si persisten.
# Contraseña de sudo read -s -p "Ingresar contraseña de sudo: " password; echo # Detener el servicio echo "$password" | sudo -S systemctl stop postgresql.service # Purga total de paquetes echo "$password" | sudo -S apt-get -y purge remove 'postgres*' # Eliminación de directorios de configuración y datos echo "$password" | sudo -S rm -rf /etc/postgresql echo "$password" | sudo -S rm -rf /var/lib/postgresql # Limpieza de cuentas del sistema (puede variar según la distro) echo "$password" | sudo -S userdel -r postgres 2>/dev/null || true echo "$password" | sudo -S groupdel postgres 2>/dev/null || true
Nota: la ubicación de archivos puede variar entre distribuciones. Aquí se trabaja con Ubuntu, donde esta estructura es habitual.
¿Qué prácticas y comandos clave debes recordar?
Para crear scripts confiables y reutilizables, se aplican estas ideas y keywords en secuencia lógica:
- Validación con which y $?: comprobar binarios en PATH y usar códigos de salida para el flujo.
- Condicional if:
if [ $? -eq 0 ]; then ... fipara decidir instalar o no. - Lectura silenciosa de contraseñas:
read -s -ppara proteger credenciales. - Elevación con sudo -S y pipe:
echo "$password" | sudo -S <comando>para ejecutar como superusuario sin pedir contraseña cada vez. - Gestión de paquetes con APT:
apt updateyapt-get -y install/purge remove. Instalación depostgresqlypostgresql-contrib. - Administración del servicio con systemctl:
enable,start,stoppara controlarpostgresql.service. - Configuración de Postgres con psql:
sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD '...'"para definir la contraseña. - Limpieza de archivos y cuentas:
rm -rfen/etc/postgresqly/var/lib/postgresql, másuserdelygroupdelsi aplica. - Pausa interactiva:
read -n 1 -s -r -ppara esperar confirmación del usuario.
¿Te gustaría que publiquemos una variante del script con menús interactivos o validaciones extra? Deja tus dudas y comentarios para seguir mejorando el flujo.