Refs #202 fix issue

ogboot_installer
Antonio Guerrero 2024-07-05 05:40:19 +00:00
parent 957a343fea
commit f3435f1f96
1 changed files with 49 additions and 36 deletions

View File

@ -11,23 +11,25 @@ import platform, os, sys, subprocess, datetime, shutil, pwd, glob, zipfile, urll
# subprocess.run(['source', '~/.bashrc'], shell=True) # subprocess.run(['source', '~/.bashrc'], shell=True)
# Leer variables de entorno # Leer variables de entorno
env_ogCore_ServerIP = os.getenv('OGCORE_SERVER_IP') #"172.17.8.82" #env_ogCore_ServerIP = os.getenv('OGCORE_SERVER_IP') #"172.17.8.82"
env_ogCore_Server = os.getenv('OGCORE_SERVER') #"opengnsys.es" #env_ogCore_Server = os.getenv('OGCORE_SERVER') #"opengnsys.es"
env_ogCore_Dir = os.getenv('OGCORE_DIR') #{INSTALL_OPENGNSYS_TARGET} #env_ogCore_Dir = os.getenv('OGCORE_DIR') #{INSTALL_OPENGNSYS_TARGET}
env_ogBoot_Dir = os.getenv('OGBOOT_DIR') #{INSTALL_OGBOOT_TARGET} #env_ogBoot_Dir = os.getenv('OGBOOT_DIR') #{INSTALL_OGBOOT_TARGET}
env_ogBoot_GitRepo = os.getenv('OGBOOT_GIT_REPO') #"ssh://git@ognproject.evlt.uma.es:21987/opengnsys/ogboot.git" #env_ogBoot_GitRepo = os.getenv('OGBOOT_GIT_REPO') #"ssh://git@ognproject.evlt.uma.es:21987/opengnsys/ogboot.git"
#env_ogCore_ServerIP = "172.17.8.82" #os.getenv('OGCORE_SERVER_IP') #"172.17.8.82"
#env_ogCore_Server = "opengnsys.es" #os.getenv('OGCORE_SERVER') #"opengnsys.es" # Constantes, ambiente de desarrollo
#env_ogCore_Dir = "/opt/opengnsys" #os.getenv('OGCORE_DIR') #{INSTALL_OPENGNSYS_TARGET} env_ogCore_ServerIP = "172.17.8.82"
#env_ogBoot_Dir = "/opt/ogboot" #os.getenv('OGBOOT_DIR') #{INSTALL_OGBOOT_TARGET} env_ogCore_Server = "opengnsys.es"
#env_ogBoot_GitRepo = "ssh://git@ognproject.evlt.uma.es:21987/opengnsys/ogboot.git" #os.getenv('OGBOOT_GIT_REPO') #"ssh://git@ognproject.evlt.uma.es:21987/opengnsys/ogboot.git" env_ogCore_Dir = "/opt/opengnsys"
env_ogBoot_Dir = "/opt/ogboot"
env_ogBoot_GitRepo = "ssh://git@ognproject.evlt.uma.es:21987/opengnsys/ogboot.git"
PROGRAM = os.path.splitext(os.path.basename(sys.argv[0]))[0] PROGRAM = os.path.splitext(os.path.basename(sys.argv[0]))[0]
PROGRAM_DIR = os.path.dirname(os.path.realpath(sys.argv[0])) PROGRAM_DIR = os.path.dirname(os.path.realpath(sys.argv[0]))
PROGRAM_NAME = os.path.basename(sys.argv[0]) PROGRAM_NAME = os.path.basename(sys.argv[0])
SERVER_OPENGNSYS = f"{env_ogCore_ServerIP}" OGCORE_IP = f"{env_ogCore_ServerIP}"
OPENGNSYS_SERVER = f"{env_ogCore_Server}" OGCORE_SERVER = f"{env_ogCore_Server}"
INSTALL_TARGET = f"{env_ogBoot_Dir}" INSTALL_TARGET = f"{env_ogBoot_Dir}"
INSTALL_OPENGNSYS_TARGET = f"{env_ogCore_Dir}" INSTALL_OPENGNSYS_TARGET = f"{env_ogCore_Dir}"
INSTALL_OGBOOT_TARGET = f"{env_ogBoot_Dir}" INSTALL_OGBOOT_TARGET = f"{env_ogBoot_Dir}"
@ -306,16 +308,16 @@ def og_boot_create_dirs():
logger.error("Error while creating directory paths!") logger.error("Error while creating directory paths!")
exit(1) exit(1)
def og_boot_symfony_install(path_opengnsys_base): def og_boot_symfony_install():
global WORKDIR global WORKDIR, INSTALL_OGBOOT_TARGET
logger.info("Creating Symfony application skeleton...") logger.info("Creating Symfony application skeleton...")
try: try:
# Copiar los archivos .env y composer.json primero # Copiar los archivos .env y composer.json primero
env_src = os.path.join(WORKDIR, "ogboot/.env") env_src = os.path.join(f"{WORKDIR}", "ogboot/.env")
composer_src = os.path.join(WORKDIR, "ogboot/composer.json") composer_src = os.path.join(f"{WORKDIR}", "ogboot/composer.json")
env_dest = os.path.join(path_opengnsys_base, ".env") env_dest = os.path.join(f"{INSTALL_OGBOOT_TARGET}", ".env")
composer_dest = os.path.join(path_opengnsys_base, "composer.json") composer_dest = os.path.join(f"{INSTALL_OGBOOT_TARGET}", "composer.json")
shutil.copy(env_src, env_dest) shutil.copy(env_src, env_dest)
shutil.copy(composer_src, composer_dest) shutil.copy(composer_src, composer_dest)
@ -329,23 +331,23 @@ def og_boot_symfony_install(path_opengnsys_base):
shutil.chown(composer_dest, user='ogboot', group='ogboot') shutil.chown(composer_dest, user='ogboot', group='ogboot')
logger.info(f"Set permissions and owner for {env_dest} and {composer_dest}") logger.info(f"Set permissions and owner for {env_dest} and {composer_dest}")
logger.info(f".env and composer.json files copied to {path_opengnsys_base}") logger.info(f".env and composer.json files copied to {INSTALL_OGBOOT_TARGET}")
except Exception as e: except Exception as e:
logger.error(f"An error occurred while copying files: {e}") logger.error(f"An error occurred while copying files: {e}")
raise raise
def og_boot_copy_files(path_opengnsys_base): def og_boot_copy_files():
global INSTALL_TARGET, WORKDIR global INSTALL_TARGET, WORKDIR
bin_source = os.path.join(WORKDIR, "ogboot/bin") bin_source = os.path.join(WORKDIR, "ogboot/bin")
bin_dest = os.path.join(path_opengnsys_base, "bin") bin_dest = os.path.join(INSTALL_OGBOOT_TARGET, "bin")
src_source = os.path.join(WORKDIR, "ogboot/src") src_source = os.path.join(WORKDIR, "ogboot/src")
src_dest = os.path.join(path_opengnsys_base, "src") src_dest = os.path.join(INSTALL_OGBOOT_TARGET, "src")
config_source = os.path.join(WORKDIR, "ogboot/config") config_source = os.path.join(WORKDIR, "ogboot/config")
config_dest = os.path.join(path_opengnsys_base, "config") config_dest = os.path.join(INSTALL_OGBOOT_TARGET, "config")
lib_source = os.path.join(WORKDIR, "ogboot/lib") lib_source = os.path.join(WORKDIR, "ogboot/lib")
lib_dest = os.path.join(path_opengnsys_base, "lib") lib_dest = os.path.join(INSTALL_OGBOOT_TARGET, "lib")
if os.path.exists(bin_dest): if os.path.exists(bin_dest):
shutil.rmtree(bin_dest) shutil.rmtree(bin_dest)
@ -367,18 +369,18 @@ def og_boot_copy_files(path_opengnsys_base):
os.makedirs(os.path.join(INSTALL_TARGET, "client"), mode=0o750, exist_ok=True) os.makedirs(os.path.join(INSTALL_TARGET, "client"), mode=0o750, exist_ok=True)
os.makedirs(os.path.join(INSTALL_TARGET, "public"), mode=0o750, exist_ok=True) os.makedirs(os.path.join(INSTALL_TARGET, "public"), mode=0o750, exist_ok=True)
subprocess.run(["sudo", "chmod", "-R", "755", path_opengnsys_base]) subprocess.run(["sudo", "chmod", "-R", "755", INSTALL_OGBOOT_TARGET])
subprocess.run(["sudo", "chown", "-R", "ogboot:ogboot", path_opengnsys_base]) subprocess.run(["sudo", "chown", "-R", "ogboot:ogboot", INSTALL_OGBOOT_TARGET])
def og_boot_composer_install(path_opengnsys_base): def og_boot_composer_install():
# Ejecutar Composer como el usuario 'ogboot' para instalar el proyecto Symfony # Ejecutar Composer como el usuario 'ogboot' para instalar el proyecto Symfony
result = subprocess.run(["sudo", "-u", "ogboot", "/opt/ogboot/bin/composer.phar", "install", "--no-interaction", "--working-dir", path_opengnsys_base]) result = subprocess.run(["sudo", "-u", "ogboot", "/opt/ogboot/bin/composer.phar", "install", "--no-interaction", "--working-dir", INSTALL_OGBOOT_TARGET])
if result.returncode != 0: if result.returncode != 0:
logger.error("Error creating Symfony project using Composer") logger.error("Error creating Symfony project using Composer")
return return
# Eliminar composer.lock si existe # Eliminar composer.lock si existe
composer_lock_path = os.path.join(path_opengnsys_base, "composer.lock") composer_lock_path = os.path.join(INSTALL_OGBOOT_TARGET, "composer.lock")
if os.path.exists(composer_lock_path): if os.path.exists(composer_lock_path):
os.remove(composer_lock_path) os.remove(composer_lock_path)
@ -730,14 +732,14 @@ def getNetworkSettings():
return (0) return (0)
def openGnsysConfigure(): def openGnsysConfigure():
global DEFAULTDEV, INSTALL_TARGET, SERVER_OPENGNSYS, WORKDIR global DEFAULTDEV, INSTALL_TARGET, OGCORE_IP, WORKDIR
i = 0 i = 0
dev = "" dev = ""
CONSOLEURL = "" CONSOLEURL = ""
CONSOLEURL = f"https://{SERVER_OPENGNSYS}/opengnsys" CONSOLEURL = f"https://{OGCORE_IP}/opengnsys"
with open(f"{WORKDIR}/ogboot/etc/ogAdmClient.cfg") as file: with open(f"{WORKDIR}/ogboot/etc/ogAdmClient.cfg") as file:
content = file.read() content = file.read()
content = content.replace("SERVERIP", SERVER_OPENGNSYS) content = content.replace("SERVERIP", OGCORE_IP)
content = content.replace("OPENGNSYSURL", CONSOLEURL) content = content.replace("OPENGNSYSURL", CONSOLEURL)
with open(f"{INSTALL_TARGET}/client/etc/ogAdmClient-{DEFAULTDEV}.cfg", "w") as outfile: with open(f"{INSTALL_TARGET}/client/etc/ogAdmClient-{DEFAULTDEV}.cfg", "w") as outfile:
outfile.write(content) outfile.write(content)
@ -754,15 +756,17 @@ def mount_NFS():
else: else:
logger.error("Could not mount the NFS system.") logger.error("Could not mount the NFS system.")
exit(1) exit(1)
logger.info("copying tftp and ipxe files") logger.info("copying tftpboot files")
#subprocess.call(["ls", "/mnt/"]) #subprocess.call(["ls", "/mnt/"])
subprocess.call(["sudo", "cp", "-r", "/mnt/srv/artefactos/ogboot/tftpboot/", "/tmp"]) subprocess.call(["sudo", "cp", "-r", "/mnt/srv/artefactos/ogboot/tftpboot/", "/tmp"])
if not os.path.exists(IPXE_DIR + "/tftpboot"): if not os.path.exists(IPXE_DIR + "/tftpboot"):
os.makedirs(IPXE_DIR + "/tftpboot") os.makedirs(IPXE_DIR + "/tftpboot")
#os.chdir(f"{IPXE_DIR}/tftpboot") #os.chdir(f"{IPXE_DIR}/tftpboot")
logger.info("copying ipxe files")
subprocess.call(["sudo", "cp", "-r", "/mnt/srv/artefactos/ogboot/ipxe/", "/tmp"]) subprocess.call(["sudo", "cp", "-r", "/mnt/srv/artefactos/ogboot/ipxe/", "/tmp"])
if not os.path.exists(IPXE_DIR + "/src"): if not os.path.exists(IPXE_DIR + "/src"):
os.makedirs(IPXE_DIR + "/src") os.makedirs(IPXE_DIR + "/src")
logger.info(f"make to {IPXE_DIR}/src")
os.chdir(f"{IPXE_DIR}/src") os.chdir(f"{IPXE_DIR}/src")
if subprocess.call(["sudo", "make", "-s", "-j", "4"]) == 0: if subprocess.call(["sudo", "make", "-s", "-j", "4"]) == 0:
logger.info(f"Directory {IPXE_DIR}/src correctly mounted.") logger.info(f"Directory {IPXE_DIR}/src correctly mounted.")
@ -1000,6 +1004,15 @@ def install_oglive_daemon():
############################################################################### ###############################################################################
logger.info(f"Starting installation of ogBoot.") logger.info(f"Starting installation of ogBoot.")
logger.info("Variables de entorno")
logger.info(f"OGCORE_IP:{env_ogCore_ServerIP}:{OGCORE_IP}")
logger.info(f"OGCORE_SERVER:{env_ogCore_Server}:{OGCORE_SERVER}")
logger.info(f"INSTALL_TARGET:{env_ogBoot_Dir}:{INSTALL_TARGET}")
logger.info(f"INSTALL_OGBOOT_TARGET:{env_ogBoot_Dir}:{INSTALL_OGBOOT_TARGET}")
logger.info(f"INSTALL_OPENGNSYS_TARGET:{env_ogCore_Dir}:{INSTALL_OPENGNSYS_TARGET}")
logger.info(f"GIT_REPO:{env_ogBoot_GitRepo}:{GIT_REPO}")
if os.geteuid() != 0: if os.geteuid() != 0:
logger.error("This program must be run with root privileges..") logger.error("This program must be run with root privileges..")
exit(1) exit(1)
@ -1052,11 +1065,11 @@ logger.info("Creating directories.")
og_boot_create_dirs() og_boot_create_dirs()
logger.info("Copying installation files.") logger.info("Copying installation files.")
og_boot_copy_files(INSTALL_OGBOOT_TARGET) og_boot_copy_files()
logger.info("Installing Symfony.") logger.info("Installing Symfony.")
og_boot_symfony_install(INSTALL_OGBOOT_TARGET) og_boot_symfony_install()
og_boot_composer_install(INSTALL_OGBOOT_TARGET) og_boot_composer_install()
#if os.system("echo $?") != 0: #if os.system("echo $?") != 0: