From a74fc072d323a80febf8402615e1add7fa930836 Mon Sep 17 00:00:00 2001 From: Mauro Rosero P Date: Sun, 1 Dec 2024 15:36:59 -0500 Subject: [PATCH] =?UTF-8?q?[MODIFIED]=20Inclusi=C3=B3n=20de=20nuevas=20lib?= =?UTF-8?q?rerias=20e=20instalaci=C3=B3n=20de=20herramientas=20-=20Se=20in?= =?UTF-8?q?stalar=C3=A1n=20los=20paquetes:=20git,=20curl=20y=20wget=20-=20?= =?UTF-8?q?Adiciona=20nuevas=20librerias=20bash=20para=20ampliar=20funcion?= =?UTF-8?q?alidades?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 +- bin/bootstrap.sh | 41 +++++++++--- bin/lib/base.lib | 134 +++++++++++++++++++++++++++++++++++++++ bin/lib/bootstrap.lib | 78 +++++++++++++++++++++++ bin/lib/containers.lib | 54 ++++++++++++++++ bin/lib/odoo.lib | 40 ++++++++++++ bin/lib/requirements.txt | 6 ++ bin/msg/bootstrap.es | 22 +++++++ bin/msg/head.es | 26 ++++++++ bin/msg/packages.es | 21 ++++++ 10 files changed, 415 insertions(+), 11 deletions(-) create mode 100644 bin/lib/base.lib create mode 100755 bin/lib/bootstrap.lib create mode 100755 bin/lib/containers.lib create mode 100644 bin/lib/odoo.lib create mode 100644 bin/lib/requirements.txt create mode 100644 bin/msg/bootstrap.es create mode 100644 bin/msg/head.es create mode 100644 bin/msg/packages.es diff --git a/README.md b/README.md index f77971f..349aa0d 100644 --- a/README.md +++ b/README.md @@ -11,9 +11,9 @@ (Pendiente) -#### Instalación de herramientas para gestión de contenedores +#### Instalación de herramientas básicas y de gestión de contenedores -Se utiliza para instalar los paquetes de gestión de contenedores (docker o podman) y otras herramientas requeridas. +Instalará wget, curl, git, python3 + python3-pip (si no están instalados previamente) y podman (si no está previamente instalado o docker) $ ./bin/bootstrap.sh diff --git a/bin/bootstrap.sh b/bin/bootstrap.sh index 8039df3..85ef9e8 100755 --- a/bin/bootstrap.sh +++ b/bin/bootstrap.sh @@ -1,6 +1,7 @@ #!/bin/bash -#bootstrap.sh # +# bootstrap.sh +# Modified: 2024/12/01 15:27:00 # Derechos de Autor (C) [2024] [Mauro Rosero P. ] # # Este programa es software libre: usted puede redistribuirlo y/o modificarlo @@ -21,7 +22,6 @@ DEVSTEAM=odoo BIN_HOME=$HOME/$DEVSPATH/$DEVSTEAM BIN_MESG=bin/msg BIN_LIBS=bin/lib -PYTHON_PACKAGE=python3 # CHECK SHELL LANGUAGE BIN_LANG=${LANG:0:2} @@ -50,26 +50,49 @@ install() { local MESSAGES=$3 local INSTALL_LANG=$4 + local PYTHON_PACKAGE=python3 + local GIT_PACKAGE=git + local CURL_PACKAGE=curl + local WGET_PACCKAGE=wget + # Load base bash library source $BIN_PATH/$LIBRARY/base.lib - # Load bootstrap bash library source $BIN_PATH/$LIBRARY/bootstrap.lib # Load bootstrap messages load_bootstrap_msg $BIN_PATH $MESSAGES $INSTALL_LANG - # Install or Update python from OS Packages - command_installed $PYTHON_PACKAGE - if [ $? -eq 0 ] + # Install wget from OS Packages + command_installed $WGET_PACKAGE + if [ $? -ne 0 ] + then + os_pkgs_install $WGET_PACKAGE + fi + + # Install curl from OS Packages + command_installed $CURL_PACKAGE + if [ $? -ne 0 ] + then + os_pkgs_install $CURL_PACKAGE + fi + + # Install git from OS Packages + command_installed $GIT_PACKAGE + if [ $? -ne 0 ] + then + os_pkgs_install $GIT_PACKAGE + fi + + # Install python from OS Packages + command_installed $PYTHON_PACKAGE + if [ $? -ne 0 ] then - os_update - else python3_install fi - # Check for container management installed + # Check for container management installed and install podman container_mode if [ $? -eq 255 ] then diff --git a/bin/lib/base.lib b/bin/lib/base.lib new file mode 100644 index 0000000..3e54400 --- /dev/null +++ b/bin/lib/base.lib @@ -0,0 +1,134 @@ +#!/bin/bash +# +# Library: base.lib +# Modified: 2024/11/30 15:27:00 +# Derechos de Autor (C) [2024] [Mauro Rosero P. ] +# +# Este programa es software libre: usted puede redistribuirlo y/o modificarlo +# bajo los términos de la Licencia Pública Affero General de GNU tal como +# lo publica la Free Software Foundation, ya sea la versión 3 de la licencia, +# o (a su elección) cualquier versión posterior. +# +# Este programa se distribuye con la esperanza de que sea útil, +# pero SIN NINGUNA GARANTÍA; sin siquiera la garantía implícita de +# COMERCIABILIDAD o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Consulte la +# Licencia Pública Affero General de GNU para obtener más detalles. +# +# Debería haber recibido una copia de la Licencia Pública Affero General +# junto con este programa. Si no la recibió, consulte . + + +# Test library +function baselib_test() { + echo "Base Library loaded!" +} + +# Load messages +function load_messages() { + local BIN_PATH=$1 + local MSG_PATH=$2 + local LANGUAGE=$3 + local MSG_FILE=$4 + + if [ -f $BIN_PATH/$MSG_PATH/$MSG_FILE.$LANGUAGE ] + then + source $BIN_PATH/$MSG_PATH/$MSG_FILE.$LANGUAGE + else + source $BIN_PATH/$MSG_PATH/$MSG_FILE.es + fi +} + +function display_text_header() { + local PROJECT=$1 + local tittle=$2 + + clear + echo "$(cat < $PROJECT/config/project.head) $tittle" + echo "==========================================================" +} + +# Verify if your program or command is installed +function command_installed() { + local PROGRAM=$1 + + if command -v $PROGRAM &> /dev/null; then + return 0 + fi + + # No program or command is installed + return 1 +} + +function os_pkgs_install() { + + local PACKAGE=$1 + + echo "${pkg_install_begin} ${PACKAGE}" + if [ "$(uname)" == "Darwin" ]; then + # En macOS, a través de Homebrew + /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" + brew install $PACKAGE + elif [ -f /etc/debian_version ] || [ -f /etc/os-release ]; then + # En sistemas Debian y derivados, a través de apt + apt update + apt install -y $PACKAGE + elif [ -f /etc/redhat-release ]; then + # En sistemas Red Hat y derivados, a través de dnf + dnf install -y $PACKAGE + elif [ -f /etc/arch-release ]; then + # En Arch Linux, a través de pacman + pacman -Sy --noconfirm $PACKAGE + elif [ -f /etc/rc.conf ]; then + # En BSD, a través de pkg + pkg install -y $PACKAGE + else + echo "${os_nofound}" + exit 1 + fi + echo "${pkg_install_success} ${PACKAGE}" + +} + +# Update or upgrade OS Packages +function os_update() { + + if [ "$(uname)" == "Darwin" ]; then + echo "$os_update (BREW)" + brew upgrade + elif [ -f /etc/debian_version ] || [ -f /etc/os-release ]; then + echo "$os_update (APT)" + apt update && apt upgrade -y + elif [ -f /etc/redhat-release ]; then + echo "$os_update (DNF)" + dnf update -y + elif [ -f /etc/arch-release ]; then + echo "$os_update (PACMAN)" + pacman -Syu + elif [ -f /etc/rc.conf ]; then + echo "$os_update (PKG)" + pkg update && pkg upgrade + else + echo "${os_nofound}" + exit 1 + fi + +} + +function container_mode() { + + command_installed "podman" + if [ $? -eq 0 ] + then + return 0 + else + command_installed "docker" + if [ $? -eq 0 ] + then + return 1 + fi + fi + + # Exit with code 255 if not docker or podman installed + return 255 + +} diff --git a/bin/lib/bootstrap.lib b/bin/lib/bootstrap.lib new file mode 100755 index 0000000..feec5a8 --- /dev/null +++ b/bin/lib/bootstrap.lib @@ -0,0 +1,78 @@ +#!/bin/bash +# +# Library: bootstrap.lib +# Modified: 2024/11/30 15:27:00 +# Derechos de Autor (C) [2024] [Mauro Rosero P. ] +# +# Este programa es software libre: usted puede redistribuirlo y/o modificarlo +# bajo los términos de la Licencia Pública Affero General de GNU tal como +# lo publica la Free Software Foundation, ya sea la versión 3 de la licencia, +# o (a su elección) cualquier versión posterior. +# +# Este programa se distribuye con la esperanza de que sea útil, +# pero SIN NINGUNA GARANTÍA; sin siquiera la garantía implícita de +# COMERCIABILIDAD o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Consulte la +# Licencia Pública Affero General de GNU para obtener más detalles. +# +# Debería haber recibido una copia de la Licencia Pública Affero General +# junto con este programa. Si no la recibió, consulte . + +# Install Python +function python3_install() { + + echo "${pymsg_001}" + if [ "$(uname)" == "Darwin" ]; then + # En macOS, instalamos o actualizamos Python a través de Homebrew + /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" + brew install python python-pip + elif [ -f /etc/debian_version ] || [ -f /etc/os-release ]; then + # En sistemas Debian y derivados, instalamos o actualizamos Python a través de apt + apt update + apt install -y python3 python3-pip + elif [ -f /etc/redhat-release ]; then + # En sistemas Red Hat, instalamos o actualizamos Python a través de yum + dnf install -y python3 python3-pip + elif [ -f /etc/arch-release ]; then + # En Arch Linux, instalamos o actualizamos Python a través de pacman + pacman -Sy --noconfirm python + elif [ -f /etc/rc.conf ]; then + # En BSD, instalamos o actualizamos Python a través de pkg + pkg install -y python3 python3-pip + else + echo "${os_nofound}" + exit 1 + fi + echo "${pymsg_003}" + +} + +# Install Podman +function podman_install() { + + echo "${pdmsg_001}" + if [ "$(uname)" == "Darwin" ]; then + # En macOS, instalamos o actualizamos Python a través de Homebrew + /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" + brew tap containers/podman + brew install podman + elif [ -f /etc/debian_version ] || [ -f /etc/os-release ]; then + # En sistemas Debian y derivados, instalamos o actualizamos Python a través de apt + apt update + apt install -y podman podman-compose + elif [ -f /etc/redhat-release ]; then + # En sistemas Red Hat, instalamos o actualizamos Python a través de dnf + dnf install -y epel-release + dnf install -y podman podman-compose + elif [ -f /etc/arch-release ]; then + # En Arch Linux, instalamos o actualizamos Python a través de pacman + pacman -Sy --noconfirm podman podman-compose fuse-overlayfs + elif [ -f /etc/rc.conf ]; then + # En BSD, instalamos o actualizamos Python a través de pkg + pkg install -y podman-suite + else + echo "${os_nofound}" + exit 1 + fi + echo "${pdmsg_003}" + +} diff --git a/bin/lib/containers.lib b/bin/lib/containers.lib new file mode 100755 index 0000000..c22b79e --- /dev/null +++ b/bin/lib/containers.lib @@ -0,0 +1,54 @@ +#!/bin/bash +#bootstrab.lib +# +# Derechos de Autor (C) [2024] [Mauro Rosero P. ] +# +# Este programa es software libre: usted puede redistribuirlo y/o modificarlo +# bajo los términos de la Licencia Pública Affero General de GNU tal como +# lo publica la Free Software Foundation, ya sea la versión 3 de la licencia, +# o (a su elección) cualquier versión posterior. +# +# Este programa se distribuye con la esperanza de que sea útil, +# pero SIN NINGUNA GARANTÍA; sin siquiera la garantía implícita de +# COMERCIABILIDAD o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Consulte la +# Licencia Pública Affero General de GNU para obtener más detalles. +# +# Debería haber recibido una copia de la Licencia Pública Affero General +# junto con este programa. Si no la recibió, consulte . + +# Función para iniciar una instancia de odoo en contenedor (podman o docker) +start_instance() { + local env_file=$1 + # Verificar si Docker está instalado + if command -v docker &> /dev/null; then + docker-compose --env-file ${env_file} up -d + return $? + fi + # Verificar si Podman está instalado + if command -v podman &> /dev/null; then + podman-compose --env-file ${env_file} up -d + return $? + fi + + echo "\n\nVisite http://localhost:101${odoo_port}" + # Ninguno de los dos está instalado + return 100 +} + +# Función para detener una instancia de odoo en contenedor (podman o docker) +stop_instance() { + local env_file=$1 + # Verificar si Docker está instalado + if command -v docker &> /dev/null; then + docker-compose --env-file ${env_file} down + return $? + fi + # Verificar si Podman está instalado + if command -v podman &> /dev/null; then + podman-compose --env-file ${env_file} down + return $? + fi + + # Ninguno de los dos está instalado + return 100 +} diff --git a/bin/lib/odoo.lib b/bin/lib/odoo.lib new file mode 100644 index 0000000..9fd8d04 --- /dev/null +++ b/bin/lib/odoo.lib @@ -0,0 +1,40 @@ +#!/bin/bash +#odoo.lib +# +# Derechos de Autor (C) [2024] [Mauro Rosero P. ] +# +# Este programa es software libre: usted puede redistribuirlo y/o modificarlo +# bajo los términos de la Licencia Pública Affero General de GNU tal como +# lo publica la Free Software Foundation, ya sea la versión 3 de la licencia, +# o (a su elección) cualquier versión posterior. +# +# Este programa se distribuye con la esperanza de que sea útil, +# pero SIN NINGUNA GARANTÍA; sin siquiera la garantía implícita de +# COMERCIABILIDAD o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Consulte la +# Licencia Pública Affero General de GNU para obtener más detalles. +# +# Debería haber recibido una copia de la Licencia Pública Affero General +# junto con este programa. Si no la recibió, consulte . + +# Función para crear la estructura de archivos para proyecto de desarrollo local Odoo - Contenedores +odoo_structure() { + if [[ ! -f "${POSTGRES_PATH}" ]] + then + mkdir -p "${POSTGRES_PATH}" + fi + + if [[ ! -f "${POSTGRES_INIT}" ]] + then + mkdir -p "${POSTGRES_INIT}" + fi + + if [[ ! -f "${ODOO_DATA}" ]] + then + mkdir -p "${ODOO_DATA}" + fi + + if [[ ! -f "${ODOO_BACKUPS}" ]] + then + mkdir -p "${ODOO_BACKUPS}" + fi +} diff --git a/bin/lib/requirements.txt b/bin/lib/requirements.txt new file mode 100644 index 0000000..f2098ca --- /dev/null +++ b/bin/lib/requirements.txt @@ -0,0 +1,6 @@ +curl +lsof +wget +unzip +jq +dialog diff --git a/bin/msg/bootstrap.es b/bin/msg/bootstrap.es new file mode 100644 index 0000000..b63c299 --- /dev/null +++ b/bin/msg/bootstrap.es @@ -0,0 +1,22 @@ +#!/usr/bin/env bash +#bash script : bootstrap.es +#apps : Personal Developer Utilities +#description : Bootstrap Translate Messages (es) +#author : MRP/mrp - Mauro Rosero P. +#company email : mauro@rosero.one +#personal email : mauro.rosero@gmail.com +#date : 20240201 +#version : 1.0.2 +#notes : +#============================================================================== +#============================================================================== + +bomsg_000="Bootstrap" + +pymsg_001="Instalando Python3" +pymsg_003="Python instalado satisfactoriamente" + +pdmsg_001="Instalando Podman..." +pdmsg_003="Podman fue instalado satisfactoriamente" + +domsg_005="----> Docker previamente instalado, desinstale para poder instalar PODMAN o utilice DOCKER" diff --git a/bin/msg/head.es b/bin/msg/head.es new file mode 100644 index 0000000..f409c96 --- /dev/null +++ b/bin/msg/head.es @@ -0,0 +1,26 @@ +#!/usr/bin/env bash +#bash script : head.es +#apps : MRosero Personal Developer Utilities +#description : Head Translate Messages (es) +#author : MRP/mrp - Mauro Rosero P. +#company email : mauro@rosero.one +#personal email : mauro.rosero@gmail.com +#date : 20240201 +#version : 1.0.2 +#notes : +#============================================================================== +#============================================================================== + +head_000="(MRDEVOPS TOOLS)" +head_001="El comando 'dialog' no está instalado. Por favor, ejecute bootstrap.sh." +head_installing="Instalando" +head_info="INFO" +head_warning="ADVERTENCIA" +head_error="ERROR" +head_unknow="UNKNOW" + +os_update="Actualizando sistema operativo " +os_nofound="Sistemas operativos soportados: Ubuntu, Debian, Arch Linux, Fedora, Redhat, AlmaLinux, Rocky, Oracle Linux, FreeBSD, MacOS" + +pkg_install_begin="Instalando paquete(s):" +pkg_install_success="Instalación satisfactoria de paquete(s):" diff --git a/bin/msg/packages.es b/bin/msg/packages.es new file mode 100644 index 0000000..c1b6183 --- /dev/null +++ b/bin/msg/packages.es @@ -0,0 +1,21 @@ +#!/usr/bin/env bash +#bash script : packages.es +#apps : MRosero Personal Developer Utilities +#description : Packages Translate Messages (es) +#author : MRP/mrp - Mauro Rosero P. +#company email : mauro@rosero.one +#personal email : mauro.rosero@gmail.com +#date : 20240201 +#version : 1.0.2 +#notes : +#============================================================================== +#============================================================================== + +pkmsg_000="INSTALDOR DE PAQUETES" +pkmsg_001="Instalando o actualizando la última versión del paquete..." +pkmsg_003="Desea instalar seleecciòn de paquetes MRosero Personal Devops? " +pkmsg_004="Operación Camcelada. No se pudo determinar el sistema operativo." +pkmsg_005="Operación Cancelada. Lista de paquetes a instalar no definida (~/requirements.txt)" +pkmsg_006="Operación cancelada por el operador" +pkmsg_end="Todos los paquetes instalados/actualizados correctamente!" +