Funciones de instalar y desinstalar postgres

Clase 40 de 43Curso de Programación en Bash Shell

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 psql para 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 -S para 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 postgres ejecutando 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-get y 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 ... fi para decidir instalar o no.
  • Lectura silenciosa de contraseñas: read -s -p para 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 update y apt-get -y install/purge remove. Instalación de postgresql y postgresql-contrib.
  • Administración del servicio con systemctl: enable, start, stop para controlar postgresql.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 -rf en /etc/postgresql y /var/lib/postgresql, más userdel y groupdel si aplica.
  • Pausa interactiva: read -n 1 -s -r -p para 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.