Funciones de instalar y desinstalar postgres
Clase 40 de 43 • Curso de Programación en Bash Shell
Contenido del curso
Programación Shell Básica
Script Interactivos
Condicionales
Iteración
Archivos
Empaquetamiento
Funciones
Cierre del curso
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.