[MODIFIED] Inclusión de nuevas librerias e instalación de herramientas
- Se instalarán los paquetes: git, curl y wget - Adiciona nuevas librerias bash para ampliar funcionalidades
This commit is contained in:
parent
a4190914b6
commit
a74fc072d3
10 changed files with 415 additions and 11 deletions
|
@ -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
|
||||
|
||||
|
|
|
@ -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. <mauro@roser.one>]
|
||||
#
|
||||
# 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
|
||||
|
|
134
bin/lib/base.lib
Normal file
134
bin/lib/base.lib
Normal file
|
@ -0,0 +1,134 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# Library: base.lib
|
||||
# Modified: 2024/11/30 15:27:00
|
||||
# Derechos de Autor (C) [2024] [Mauro Rosero P. <mauro@roser.one>]
|
||||
#
|
||||
# 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 <https://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
# 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
|
||||
|
||||
}
|
78
bin/lib/bootstrap.lib
Executable file
78
bin/lib/bootstrap.lib
Executable file
|
@ -0,0 +1,78 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# Library: bootstrap.lib
|
||||
# Modified: 2024/11/30 15:27:00
|
||||
# Derechos de Autor (C) [2024] [Mauro Rosero P. <mauro@roser.one>]
|
||||
#
|
||||
# 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 <https://www.gnu.org/licenses/>.
|
||||
|
||||
# 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}"
|
||||
|
||||
}
|
54
bin/lib/containers.lib
Executable file
54
bin/lib/containers.lib
Executable file
|
@ -0,0 +1,54 @@
|
|||
#!/bin/bash
|
||||
#bootstrab.lib
|
||||
#
|
||||
# Derechos de Autor (C) [2024] [Mauro Rosero P. <mauro@roser.one>]
|
||||
#
|
||||
# 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 <https://www.gnu.org/licenses/>.
|
||||
|
||||
# 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
|
||||
}
|
40
bin/lib/odoo.lib
Normal file
40
bin/lib/odoo.lib
Normal file
|
@ -0,0 +1,40 @@
|
|||
#!/bin/bash
|
||||
#odoo.lib
|
||||
#
|
||||
# Derechos de Autor (C) [2024] [Mauro Rosero P. <mauro@roser.one>]
|
||||
#
|
||||
# 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 <https://www.gnu.org/licenses/>.
|
||||
|
||||
# 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
|
||||
}
|
6
bin/lib/requirements.txt
Normal file
6
bin/lib/requirements.txt
Normal file
|
@ -0,0 +1,6 @@
|
|||
curl
|
||||
lsof
|
||||
wget
|
||||
unzip
|
||||
jq
|
||||
dialog
|
22
bin/msg/bootstrap.es
Normal file
22
bin/msg/bootstrap.es
Normal file
|
@ -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"
|
26
bin/msg/head.es
Normal file
26
bin/msg/head.es
Normal file
|
@ -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):"
|
21
bin/msg/packages.es
Normal file
21
bin/msg/packages.es
Normal file
|
@ -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!"
|
||||
|
Loading…
Reference in a new issue