diff options
author | Irina Gómez <irinagomez@us.es> | 2019-06-05 09:03:22 +0200 |
---|---|---|
committer | Irina Gómez <irinagomez@us.es> | 2019-06-05 09:03:22 +0200 |
commit | a90a05128ffee28c7638ee2386a162e6ea693e79 (patch) | |
tree | fe560051f0fee1520b62bca167bae7ac719c207c /installer | |
parent | 292982df961c0e5cea6391b38ae706bc86de4786 (diff) | |
parent | 1d3959b1b600af837225890c120df5020b1ee0e6 (diff) |
Merge branch 'devel' into uefi
Fast foward with devel branch
Diffstat (limited to 'installer')
l---------[-rw-r--r--] | installer/INSTALL.en.txt | 96 | ||||
l---------[-rw-r--r--] | installer/INSTALL.es.txt | 101 | ||||
-rwxr-xr-x | installer/opengnsys_installer.sh | 259 | ||||
-rwxr-xr-x | installer/opengnsys_update.sh | 7 |
4 files changed, 146 insertions, 317 deletions
diff --git a/installer/INSTALL.en.txt b/installer/INSTALL.en.txt index 23698972..ee919932 100644..120000 --- a/installer/INSTALL.en.txt +++ b/installer/INSTALL.en.txt @@ -1,95 +1 @@ -Installing OpenGnsys Server 1.1.1 (Espeto) -========================================== - -Before installation -------------------- - -OpenGnsys Server 1.1.1 (codename "Espeto") is meant to be installed under Ubuntu Server 16.04 LTS or newer, though it has also been tested under operating systems based on CentOS 7 (read COMPATIBILITY.en.txt for more details). - -Network connection is needed in order to download the required packages, the source code and the preconfigured client. - -Minimum storage requirements: -- 100 MB in /tmp (for the installation process) -- 600 MB in /var/lib/tftpboot (or /srv in Debian systems) for every installed ogLive client. -- 250 MB in the installation folder (/opt/opengnsys) plus 600 MB for every downloaded ISO image. -- Enough disk space for the image repository in /opt/opengnsys/images (it is recommended to mount it on an independent file system) - - - -Installing ----------- - -To install OpenGnsys, run opengnsys_installer.sh script after unpacking the release file (opengnsys-release.tar.gz) or after downloading it directly from https://raw.githubusercontent.com/opengnsys/OpenGnsys/master/installer/opengnsys_installer.sh - -Unpacking example: - tar xvzf opengnsys-Version.tar.gz - cd opengnsys/installer - -Downloading examples: - - * Download with wget. - wget https://raw.githubusercontent.com/opengnsys/OpenGnsys/master/installer/opengnsys_installer.sh - - * Download with curl. - curl https://raw.githubusercontent.com/opengnsys/OpenGnsys/master/installer/opengnsys_installer.sh -o opengnsys_installer.sh - - -You must be root to run the installation script: - sudo bash opengnsys_installer.sh - - -The following information will be requested in order to configure the access to the service (a default value will be introduced if no parameter is indicated): - * MySQL root password - * Web console user and OpenGnsys Super Administrator - * Web console user's password - * Client's password for accessing remote services - * Choose which ogLive clients to install. - -The following processes will be carried out: - * Gathering of the basic network parameters. - * Checking installed packages. - * Downloading and installing dependencies. - * Creating OpenGnsys basic folder sctructure. - * Downloading code from the repository to a temporal folder (/tmp/opengnsys_installer). In upcoming releases this process will not be necessary. - * Compiling and installing OpenGnsys services. - * Basic configuration of OpenGnsys network services (DHCP, PXE and Samba) using the existing configuration templates. - * Copying additional server management files. - * Creating database and configuring OpenGnsys administration console web server. - * Copying administration console pages. - * Copying OpenGnsys client folder structure. - * Downloading OpenGnsys client initial image. - * Basic configuration of OpenGnsys services using network parameters. - -Once the installation process is finished, you can start working with the system: - * Configuring DHCP. - * Adding information in the administration console. - * Customizing administration scripts. - * Creating start menus for the clients. - - - -Updating / upgrading --------------------- - -There is a system self-upgrading script with the following features: - * Network connection is needed to obtain the latest updates / upgrades. - * If the script updates itself, then it must be run once again. - * Services depending on the operating system will not be updated. - * Configuration files will not be modified. - -You must be root to run this script: - sudo /opt/opengnsys/lib/opengnsys_update.sh - - - -Uninstalling ------------- - -There is also an uninstallation script to remove the OpenGnsys components: - * OpenGnsys files and database will be deleted. - * Operating system packages and their configuration files will be preserved. - * The image folder and its content will not be deleted. - -You must be root to run this script: - sudo /opt/opengnsys/lib/opengnsys_uninstall.sh - +../doc/INSTALL.en.txt
\ No newline at end of file diff --git a/installer/INSTALL.es.txt b/installer/INSTALL.es.txt index b99b1e20..e93a71d2 100644..120000 --- a/installer/INSTALL.es.txt +++ b/installer/INSTALL.es.txt @@ -1,100 +1 @@ -Instalación de OpenGnsys Server 1.1.1 (Espeto) -============================================== - -Notas iniciales ---------------- - -Se presupone que el servidor de OpenGnsys 1.1.1 (Espeto) debe ser instalado en una distribución del sistema operativo Ubuntu Server a partir de la versión 16.04 LTS, aunque también se está probado en sistemas basados en CentOS 7 (leer el fichero COMPATIBILITY.en.txt para obtener más detalles de compatibilidad). - -El serividor debe tener acceso a Internet para descargar los paquetes necesarios, el código del proyecto y el cliente preconfigurado. - -Requisitos mínimos de almacenamiento: -- 100 MB en el directorio /tmp (solo durante la instalación) -- 600 MB en el directorio /var/lib/tftpboot (o /srv en sistemas Debian) por cada cliente ogLive que se desee instalar. -- 250 MB en el directorio de instalación /opt/opengnsys más 600 MB por cada imagen ISO descargada de clientes ogLive. -- Estimar la capacidad necesaria para el repositorio de imágenes en /opt/opengnsys/images (es recomendable que este directorio se monte sobre un sistema de archivos independiente). - - -Instalación ------------ - -La instalación de OpenGnsys se realiza ejecutando el script de instalación opengnsys_installer.sh, el cual puede obtenerse descomprimiendo el fichero de la versión opengnsys-Version.tar.gz o descargándolo directamente de la dirección: https://raw.githubusercontent.com/opengnsys/OpenGnsys/devel/installer/opengnsys_installer.sh - -Ejemplos de descompresión del programa: - - tar xvzf opengnsys-Version.tar.gz - cd opengnsys/installer - -Ejemplos de descarga con varias herramientas: - - * Descargar con wget. - wget https://raw.githubusercontent.com/opengnsys/OpenGnsys/master/installer/opengnsys_installer.sh - - * Descargar con curl. - curl https://raw.githubusercontent.com/opengnsys/OpenGnsys/master/installer/opengnsys_installer.sh -o opengnsys_installer.sh - - -El script de instalación debe ser ejecutado como usuario root: - sudo bash opengnsys_installer.sh - - -Dicho script solicitará por teclado la siguiente información para configurar el acceso al servicio (si no se indica un parámetro, toma el valor por defecto): - * Clave del usuario root de MySQL. - * Usuario de acceso a la consola web y super-administrador de OpenGnsys. - * Clave del usuario de acceso a la consola web. - * Clave de acceso del cliente a servicios remotos. - * Seleccionar cliente(s) ogLive para instalar. - -Se realizan los siguientes procesos: - * Obtener los parámetros básicos de la red. - * Comprobar los paquetes instalados. - * Descargar e instalar las dependencias que faltan. - * Crear la estructura básica de directorios de OpenGnsys. - * Descargar el repositorio de código en un directorio temporal (/tmp/opengnsys_installer). Nota: en versiones futuras este proceso no será necesario. - * Compilar e instalar los servicios de OpenGnsys. - * Configuración básica de los serviciios de red DHCP, PXE y NFS/Samba a partir de las plantillas de configuración - * Copiar ficheros complementarios de gestión del servidor. - * Crear la base de datos y configurar el servidor web de OpenGnsys Web Admin Console. - * Copiar los ficheros de las páginas de Web Admin Console. - * Copiar la estructura de directorios de OpenGnsys Client. - * Descargar la o las imágenes iniciales de OpenGnsys Client. - * Configuración básica de los serviciios de OpenGnsys a partir de los parámetros de red. - -Una vez finalizada la ejecución del instalador, puede empezarse a trabajar con el sistema: - * Configurar DHCP. - * Añadir datos en la consola de administración. - * Personalizar scripts de administración. - * Definir menús de inicio para los clientes. - - - -Actualización -------------- - -Se dispone de un script de auto-actualización del sistema, con las siguientes características: - * Es necesario conexión a Internet para obtener las últimas actualizaciones. - * Si el script se actualiza a sí mismo, debe ser ejecutado de nuevo. - * No se actualizan los servicios asociados al sistema operativo. - * No se modifican los ficheros de configuración. - - -El script debe ser ejecutado como usuario root: - sudo /opt/opengnsys/lib/opengnsys_update.sh - - - -Desinstalación --------------- - -También existe un script de desinstalación de los componentes de OpenGnsys, con las siguientes características: - * Solicita confirmación para ejecutar sus operaciones. - * Se eliminan los ficheros de OpenGnsys y su base de datos. - * No se eliminan ni paquetes del sistema operativo ni sus ficheros de configuración. - * No se elimina el directorio de las imágenes ni su contenido. - * No se eliminan los clientes ogLive ni las plantillas PXE. - - -El script debe ser ejecutado como usuario root: - sudo /opt/opengnsys/lib/opengnsys_uninstall.sh - - +../doc/INSTALL.es.txt
\ No newline at end of file diff --git a/installer/opengnsys_installer.sh b/installer/opengnsys_installer.sh index befb365b..2894b801 100755 --- a/installer/opengnsys_installer.sh +++ b/installer/opengnsys_installer.sh @@ -6,131 +6,140 @@ ##################################################################### -#### AVISO: Puede editar configuración de acceso por defecto. -#### WARNING: Edit default access configuration if you wish. -DEFAULT_MYSQL_ROOT_PASSWORD="passwordroot" # Clave por defecto root de MySQL -DEFAULT_OPENGNSYS_DB_USER="usuog" # Usuario por defecto de acceso a la base de datos -DEFAULT_OPENGNSYS_DB_PASSWD="passusuog" # Clave por defecto de acceso a la base de datos -DEFAULT_OPENGNSYS_CLIENT_PASSWD="og" # Clave por defecto de acceso del cliente - -# Sólo ejecutable por usuario root -if [ "$(whoami)" != 'root' ]; then - echo "ERROR: this program must run under root privileges!!" - exit 1 -fi - -echo -e "\\nOpenGnsys Installation" -echo "==============================" +##################################################################### +####### Funciones de configuración +##################################################################### -# Clave root de MySQL -while : ; do - echo -n -e "\\nEnter root password for MySQL (${DEFAULT_MYSQL_ROOT_PASSWORD}): "; - read -r MYSQL_ROOT_PASSWORD - if [ -n "${MYSQL_ROOT_PASSWORD//[a-zA-Z0-9]/}" ]; then # Comprobamos que sea un valor alfanumerico - echo -e "\\aERROR: Must be alphanumeric, try again..." - else - # Si esta vacio ponemos el valor por defecto - MYSQL_ROOT_PASSWORD="${MYSQL_ROOT_PASSWORD:-$DEFAULT_MYSQL_ROOT_PASSWORD}" - break - fi -done +# Devuelve en la variable PASSWORD la clave introducida por el usuario (o la indicada por defecto) +function enterPassword () +{ + local PASSWORD2 + local DEFAULT_PASSWORD="$1" + + while : ; do + stty -echo + read -r PASSWORD + stty echo + if [ -z "$PASSWORD" ]; then + # Si esta vacio ponemos el valor por defecto + PASSWORD="${PASSWORD:-$DEFAULT_PASSWORD}" + break + else + if [ -n "${PASSWORD//[a-zA-Z0-9]/}" ]; then # Comprobamos que sea un valor alfanumerico + echo -e "\\aERROR: Password must be alphanumeric, try again..." + else + echo -n -e "\\nConfirm password: " + stty -echo + read -r PASSWORD2 + stty echo + if [ "$PASSWORD" == "$PASSWORD2" ]; then + break + else + echo -e "\\aERROR: Passwords don't match, try again." + fi + fi + fi + echo -n -e "Please, enter a new password (${DEFAULT_PASSWORD}): " + done +} -# Usuario de acceso a la base de datos -while : ; do - echo -n -e "\\nEnter username for OpenGnsys console (${DEFAULT_OPENGNSYS_DB_USER}): " - read -r OPENGNSYS_DB_USER - if [ -n "${OPENGNSYS_DB_USER//[a-zA-Z0-9]/}" ]; then # Comprobamos que sea un valor alfanumerico - echo -e "\\aERROR: Must be alphanumeric, try again..." - else - # Si esta vacio ponemos el valor por defecto - OPENGNSYS_DB_USER="${OPENGNSYS_DB_USER:-$DEFAULT_OPENGNSYS_DB_USER}" - break - fi -done +# Recoge los datos de configuración introducidos por el usuario. +function userData () +{ + #### AVISO: Puede editar configuración de acceso por defecto. + #### WARNING: Edit default access configuration if you wish. + DEFAULT_MYSQL_ROOT_PASSWORD="passwordroot" # Clave por defecto root de MySQL + DEFAULT_OPENGNSYS_DB_USER="usuog" # Usuario por defecto de acceso a la base de datos + DEFAULT_OPENGNSYS_DB_PASSWD="passusuog" # Clave por defecto de acceso a la base de datos + DEFAULT_OPENGNSYS_CLIENT_PASSWD="og" # Clave por defecto de acceso del cliente + + echo -e "\\nOpenGnsys Installation" + echo "==============================" + + # Clave root de MySQL + echo -n -e "\\nEnter root password for MySQL (${DEFAULT_MYSQL_ROOT_PASSWORD}): " + enterPassword "$DEFAULT_MYSQL_ROOT_PASSWORD" + MYSQL_ROOT_PASSWORD="$PASSWORD" + + # Usuario de acceso a la base de datos + while : ; do + echo -n -e "\\n\\nEnter username for OpenGnsys console (${DEFAULT_OPENGNSYS_DB_USER}): " + read -r OPENGNSYS_DB_USER + if [ -n "${OPENGNSYS_DB_USER//[a-zA-Z0-9]/}" ]; then # Comprobamos que sea un valor alfanumerico + echo -e "\\aERROR: Must be alphanumeric, try again..." + else + # Si esta vacio ponemos el valor por defecto + OPENGNSYS_DB_USER="${OPENGNSYS_DB_USER:-$DEFAULT_OPENGNSYS_DB_USER}" + break + fi + done -# Clave de acceso a la base de datos -while : ; do + # Clave de acceso a la base de datos echo -n -e "\\nEnter password for OpenGnsys console (${DEFAULT_OPENGNSYS_DB_PASSWD}): " - read -r OPENGNSYS_DB_PASSWD - if [ -n "${OPENGNSYS_DB_PASSWD//[a-zA-Z0-9]/}" ]; then # Comprobamos que sea un valor alfanumerico - echo -e "\\aERROR: Must be alphanumeric, try again..." - else - # Si esta vacio ponemos el valor por defecto - OPENGNSYS_DB_PASSWD="${OPENGNSYS_DB_PASSWD:-$DEFAULT_OPENGNSYS_DB_PASSWD}" - break - fi -done - -# Clave de acceso del cliente -while : ; do - echo -n -e "\\nEnter root password for OpenGnsys client (${DEFAULT_OPENGNSYS_CLIENT_PASSWD}): " - read -r OPENGNSYS_CLIENT_PASSWD - if [ -n "${OPENGNSYS_CLIENT_PASSWD//[a-zA-Z0-9]/}" ]; then # Comprobamos que sea un valor alfanumerico - echo -e "\\aERROR: Must be alphanumeric, try again..." - else - # Si esta vacio ponemos el valor por defecto - OPENGNSYS_CLIENT_PASSWD="${OPENGNSYS_CLIENT_PASSWD:-$DEFAULT_OPENGNSYS_CLIENT_PASSWD}" - break - fi -done - -# Selección de clientes ogLive para descargar. -while : ; do - echo -e "\\nChoose ogLive client to install." - echo -e "1) Kernel 4.13, 64-bit, EFI-compatible" - echo -e "2) Kernel 3.2, 32-bit" - echo -e "3) Both" - echo -n -e "Please, type a valid number (1): " - read -r OPT - case "$OPT" in - 1|"") OGLIVE="ogLive-xenial-4.13.0-17-generic-amd64-r5520.iso" - break ;; - 2) OGLIVE="ogLive-precise-3.2.0-23-generic-r5159.iso" - break ;; - 3) OGLIVE="ogLive-xenial-4.13.0-17-generic-amd64-r5520.iso ogLive-precise-3.2.0-23-generic-r5159.iso"; - break ;; - *) echo -e "\\aERROR: unknown option, try again." - esac -done - -echo -e "\\n==============================" - -# Comprobar si se ha descargado el paquete comprimido (REMOTE=0) o sólo el instalador (REMOTE=1). -PROGRAMDIR=$(readlink -e "$(dirname "$0")") -PROGRAMNAME=$(basename "$0") -OPENGNSYS_SERVER="opengnsys.es" -DOWNLOADURL="https://$OPENGNSYS_SERVER/trac/downloads" -if [ -d "$PROGRAMDIR/../installer" ]; then - REMOTE=0 -else - REMOTE=1 -fi -BRANCH="devel" -CODE_URL="https://codeload.github.com/opengnsys/OpenGnsys/zip/$BRANCH" -API_URL="https://api.github.com/repos/opengnsys/OpenGnsys/branches/$BRANCH" - -WORKDIR=/tmp/opengnsys_installer -mkdir -p $WORKDIR - -# Directorio destino de OpenGnsys. -INSTALL_TARGET=/opt/opengnsys -PATH=$PATH:$INSTALL_TARGET/bin - -# Registro de incidencias. -OGLOGFILE=$INSTALL_TARGET/log/${PROGRAMNAME%.sh}.log -LOG_FILE=/tmp/$(basename $OGLOGFILE) - -# Usuario del cliente para acceso remoto. -OPENGNSYS_CLIENT_USER="opengnsys" - -# Nombre de la base datos y fichero SQL para su creación. -OPENGNSYS_DATABASE="ogAdmBD" -OPENGNSYS_DB_CREATION_FILE=opengnsys/admin/Database/${OPENGNSYS_DATABASE}.sql + enterPassword "$DEFAULT_OPENGNSYS_DB_PASSWD" + OPENGNSYS_DB_PASSWD="$PASSWORD" + + # Clave de acceso del cliente + echo -n -e "\\n\\nEnter root password for OpenGnsys client (${DEFAULT_OPENGNSYS_CLIENT_PASSWD}): " + enterPassword "$DEFAULT_OPENGNSYS_CLIENT_PASSWD" + OPENGNSYS_CLIENT_PASSWD="$PASSWORD" + unset PASSWORD + + # Selección de clientes ogLive para descargar. + while : ; do + echo -e "\\n\\nChoose ogLive client to install." + echo -e "1) Kernel 5.0, 64-bit, EFI-compatible" + echo -e "2) Kernel 3.2, 32-bit" + echo -e "3) Both" + echo -n -e "Please, type a valid number (1): " + read -r OPT + case "$OPT" in + 1|"") OGLIVE="ogLive-bionic-5.0.0-15-generic-amd64-r20190515.97b8472.iso " + break ;; + 2) OGLIVE="ogLive-precise-3.2.0-23-generic-r5159.iso" + break ;; + 3) OGLIVE="ogLive-bionic-5.0.0-15-generic-amd64-r20190515.97b8472.iso ogLive-precise-3.2.0-23-generic-r5159.iso"; + break ;; + *) echo -e "\\aERROR: unknown option, try again." + esac + done + echo -e "\\n==============================" +} -##################################################################### -####### Funciones de configuración -##################################################################### +# Asigna valores globales de configuración para el script. +function globalSetup () +{ + PROGRAMDIR=$(readlink -e "$(dirname "$0")") + PROGRAMNAME=$(basename "$0") + + # Comprobar si se ha descargado el paquete comprimido (REMOTE=0) o sólo el instalador (REMOTE=1). + OPENGNSYS_SERVER="opengnsys.es" + DOWNLOADURL="https://$OPENGNSYS_SERVER/trac/downloads" + if [ -d "$PROGRAMDIR/../installer" ]; then + REMOTE=0 + else + REMOTE=1 + fi + BRANCH="devel" + CODE_URL="https://codeload.github.com/opengnsys/OpenGnsys/zip/$BRANCH" + API_URL="https://api.github.com/repos/opengnsys/OpenGnsys/branches/$BRANCH" + + # Directorios de instalación y destino de OpenGnsys. + WORKDIR=/tmp/opengnsys_installer + INSTALL_TARGET=/opt/opengnsys + PATH=$PATH:$INSTALL_TARGET/bin + + # Registro de incidencias. + OGLOGFILE=$INSTALL_TARGET/log/${PROGRAMNAME%.sh}.log + LOG_FILE=/tmp/$(basename $OGLOGFILE) + + # Usuario del cliente para acceso remoto. + OPENGNSYS_CLIENT_USER="opengnsys" + # Nombre de la base datos y fichero SQL para su creación. + OPENGNSYS_DATABASE="ogAdmBD" + OPENGNSYS_DB_CREATION_FILE=opengnsys/admin/Database/${OPENGNSYS_DATABASE}.sql +} # Generar variables de configuración del instalador # Variables globales: @@ -1087,7 +1096,6 @@ function installWebFiles() # Copiar ficheros en la zona de descargas de OpenGnsys Web Console. function installDownloadableFiles() { - INSTVERSION=1.1.0 ### Temporal. local FILENAME=ogagentpkgs-$INSTVERSION.tar.gz local TARGETFILE=$WORKDIR/$FILENAME @@ -1589,7 +1597,18 @@ echo ####### Proceso de instalación de OpenGnsys ##################################################################### +# Sólo ejecutable por usuario root +if [ "$(whoami)" != 'root' ]; then + echo "ERROR: this program must run under root privileges!!" + exit 1 +fi + +globalSetup echoAndLog "OpenGnsys installation begins at $(date)" +# Introducir datos de configuración y establecer variables globales. +userData + +mkdir -p $WORKDIR pushd $WORKDIR # Detectar datos iniciales de auto-configuración del instalador. diff --git a/installer/opengnsys_update.sh b/installer/opengnsys_update.sh index 2fcd3be8..826e9b89 100755 --- a/installer/opengnsys_update.sh +++ b/installer/opengnsys_update.sh @@ -302,7 +302,6 @@ function importSqlFile() local mycnf=/tmp/.my.cnf.$$ local status local APIKEY=$(php -r 'echo md5(uniqid(rand(), true));') - REPOKEY=$(php -r 'echo md5(uniqid(rand(), true));') if [ ! -r $sqlfile ]; then errorAndLog "${FUNCNAME}(): Unable to read $sqlfile!!" @@ -430,7 +429,10 @@ function downloadCode() echoAndLog "${FUNCNAME}(): downloading code..." - curl "${url}" -o opengnsys.zip && unzip opengnsys.zip && mv "OpenGnsys-$BRANCH" opengnsys + curl "$url" -o opengnsys.zip && \ + unzip -qo opengnsys.zip && \ + rm -fr opengnsys && \ + mv "OpenGnsys-$BRANCH" opengnsys if [ $? -ne 0 ]; then errorAndLog "${FUNCNAME}(): error getting code from ${url}, verify your user and password" return 1 @@ -825,6 +827,7 @@ function updateDatabase() fi popd >/dev/null + REPOKEY=$(php -r 'echo md5(uniqid(rand(), true));') if [ -n "$FILES" ]; then for file in $FILES; do importSqlFile $OPENGNSYS_DBUSER $OPENGNSYS_DBPASSWORD $OPENGNSYS_DATABASE $DBDIR/$file |