diff --git a/installer/ogboot_installer.py b/installer/ogboot_installer.py index 69a17b4..211672b 100755 --- a/installer/ogboot_installer.py +++ b/installer/ogboot_installer.py @@ -9,19 +9,33 @@ import platform, os, sys, subprocess, datetime, shutil, pwd, glob, zipfile, urll global PACKAGES, UBUNTU_OS_VERSION, PYTHON_VERSION, INSTALL_OGBOOT_TARGET, PROGRAM_DIR, OPENGNSYS_SERVER +# Leer variables de entorno +env_ogCore_ServerIP = os.environ.get('OGCORE_SERVER_IP') #"172.17.8.82" +env_ogCore_Server = os.environ.get('OGCORE_SERVER') #"opengnsys.es" +env_ogCore_Dir = os.environ.get('OGCORE_DIR') #{INSTALL_OPENGNSYS_TARGET} +env_ogBoot_Dir = os.environ.get('OGBOOT_DIR') #{INSTALL_OGBOOT_TARGET} +env_ogBoot_GitRepo = os.environ.get('OGBOOT_GIT_REPO') #"ssh://git@ognproject.evlt.uma.es:21987/opengnsys/ogboot.git" + PROGRAM = os.path.splitext(os.path.basename(sys.argv[0]))[0] -SERVER_OPENGNSYS = "172.17.8.82" -UBUNTU_OS_VERSION = "18" -PYTHON_VERSION = 3 -INSTALL_TARGET="/opt/ogboot" -INSTALL_OPENGNSYS_TARGET = "/opt/opengnsys" -INSTALL_OGBOOT_TARGET = "/opt/ogboot" -WORKDIR="/tmp/ogboot_installer" -PACKAGES = [] PROGRAM_DIR = os.path.dirname(os.path.realpath(sys.argv[0])) PROGRAM_NAME = os.path.basename(sys.argv[0]) -OPENGNSYS_SERVER = "opengnsys.es" + +SERVER_OPENGNSYS = env_ogCore_ServerIP +OPENGNSYS_SERVER = env_ogCore_Server +INSTALL_TARGET = env_ogBoot_Dir +INSTALL_OPENGNSYS_TARGET = env_ogCore_Dir +INSTALL_OGBOOT_TARGET = env_ogBoot_Dir +GIT_REPO = env_ogBoot_GitRepo + +WORKDIR="/tmp/ogboot_installer" +TFTPSERV = "tftpd-hpa" +SAMBASERV = "smbd" +SAMBACFGDIR = "/etc/samba" +TFTPCFGDIR = "/var/lib/tftpboot" +INETDCFGDIR = "/etc/xinetd.d/" + DEFAULTDEV = "" +PACKAGES = [] DEVICE = [] SERVERIP = [] NETIP = [] @@ -29,15 +43,13 @@ NETMASK = [] NETBROAD = [] ROUTERIP = [] BRANCH = sys.argv[1] if len(sys.argv) > 1 else "main" -TFTPSERV = "tftpd-hpa" -SAMBASERV = "smbd" -SAMBACFGDIR = "/etc/samba" -TFTPCFGDIR = "/var/lib/tftpboot" -INETDCFGDIR = "/etc/xinetd.d/" INETDSERV = "xinetd" OPENGNSYS_CLIENT_PASSWD="og" OPENGNSYS_CLIENT_USER="opengnsys" -GIT_REPO="ssh://git@ognproject.evlt.uma.es:21987/opengnsys/ogboot.git" + +UBUNTU_OS_VERSION = "18" +PYTHON_VERSION = 3 + if os.path.isdir(f"{PROGRAM_DIR}/../installer"): REMOTE = 0 else: @@ -55,14 +67,6 @@ formatter = logging.Formatter('%(levelname)s\t%(message)s') console_handler.setFormatter(formatter) logger.addHandler(console_handler) -# Leer variables de entorno -ogCore_ServerIP = os.environ.get('OGCORE_SERVER_IP') #"172.17.8.82" -ogCore_Dir = os.environ.get('OGCORE_DIR') #{INSTALL_OPENGNSYS_TARGET} -ogBoot_Dir = os.environ.get('OGBOOT_DIR') #{INSTALL_OGBOOT_TARGET} - -#DOWNLOAD_URL = f"https://{OPENGNSYS_SERVER}/trac/downloads" -#CODE_URL = f"https://codeload.github.com/opengnsys/OpenGnsys/zip/{BRANCH}" -#API_URL = "https://api.github.com/repos/opengnsys/OpenGnsys" ############################################################################### ###::::::::::::::::::::::::::::::: UTILS :::::::::::::::::::::::::::::::::::### ############################################################################### @@ -234,13 +238,15 @@ def install_swagger_ui(): os.system(f"{os.path.join(INSTALL_TARGET, 'vendor', 'bin', 'openapi')} {INSTALL_TARGET}/src/OgBootBundle/Controller/ -o {destination_path}/swagger.json") logger.info(f"Swagger UI installed on {destination_path}.") -def create_ogboot_project(path_opengnsys_base): +def og_core_create_user(OPENGNSYS_CLIENT_USER): try: - pwd.getpwnam('ogboot') - logger.warning("User 'ogboot' already exists") + pwd.getpwnam(OPENGNSYS_CLIENT_USER) + logger.warning(f"User {OPENGNSYS_CLIENT_USER} already exists") except KeyError: - subprocess.run(["sudo", "useradd", "-m", "ogboot"]) -######################### + subprocess.run(["sudo", "useradd", "-m", OPENGNSYS_CLIENT_USER]) + logger.info(f"User {OPENGNSYS_CLIENT_USER} created successfully.") + +def og_boot_create_dirs(path_opengnsys_base): if os.path.exists(path_opengnsys_base): if not os.path.isdir(path_opengnsys_base): raise NotADirectoryError(f"{path_opengnsys_base} existe y no es un directorio.") @@ -249,7 +255,8 @@ def create_ogboot_project(path_opengnsys_base): else: os.makedirs(path_opengnsys_base) subprocess.run(["sudo", "chown", "-R", "ogboot:ogboot", path_opengnsys_base]) -######################## + +def og_boot_symfony_install(path_opengnsys_base): logger.info("Creating Symfony application skeleton...") downloadComposer() # Copiar los archivos .env y composer.json primero @@ -257,7 +264,8 @@ def create_ogboot_project(path_opengnsys_base): shutil.copy(f"{WORKDIR}/ogboot/.env", os.path.join(path_opengnsys_base, ".env")) shutil.copy(f"{WORKDIR}/ogboot/composer.json", os.path.join(path_opengnsys_base, "composer.json")) logger.info(f".env and composer.json files copied to {path_opengnsys_base}") -######################## + +def og_boot_copy_files(path_opengnsys_base): bin_source = os.path.join(WORKDIR, "ogboot/bin") bin_dest = os.path.join(path_opengnsys_base, "bin") src_source = os.path.join(WORKDIR, "ogboot/src") @@ -290,10 +298,9 @@ def create_ogboot_project(path_opengnsys_base): subprocess.run(["sudo", "chmod", "-R", "755", path_opengnsys_base]) subprocess.run(["sudo", "chown", "-R", "ogboot:ogboot", path_opengnsys_base]) -######################## +def og_boot_composer_install(path_opengnsys_base): # Ejecutar Composer como el usuario 'ogboot' para instalar el proyecto Symfony - # result = subprocess.run(["sudo", "-u", "ogboot", "composer", "install", "--no-interaction", "--working-dir", path_opengnsys_base]) os.chdir(os.path.join(path_opengnsys_base, 'bin')) result = subprocess.run(["sudo", "-u", "ogboot", "php", os.path.join(path_opengnsys_base, "bin", "composer.phar"), "install", "--no-interaction", "--working-dir", path_opengnsys_base]) if result.returncode != 0: @@ -736,7 +743,13 @@ if os.system("echo $?") != 0: exit(1) logger.info("Creating ogBoot project.") -create_ogboot_project(INSTALL_TARGET) +og_core_create_user("ogboot") + +og_boot_create_dirs(INSTALL_OGBOOT_TARGET) + +og_boot_symfony_install(INSTALL_OGBOOT_TARGET) + +og_boot_copy_files(INSTALL_OGBOOT_TARGET) if os.system("echo $?") != 0: logger.error("Error while creating skeleton directory!") exit(1) @@ -775,6 +788,5 @@ smbConfigure() logger.info(f"ogBoot installation finished.") -# Cerrar el logger logging.shutdown() console_handler.close() \ No newline at end of file