refs #441 settings are added to adjust the permissions

ogboot_installer
qindel 2024-06-13 12:57:27 +00:00
parent c25b48aabc
commit 0c6691ad4a
1 changed files with 40 additions and 31 deletions

View File

@ -206,7 +206,7 @@ def generate_config_url():
def downloadComposer(): def downloadComposer():
#logger.info("Downloading composer.phar...") #logger.info("Downloading composer.phar...")
os.makedirs(os.path.join(WORKDIR, "ogboot", "bin"), exist_ok=True) os.makedirs(os.path.join(WORKDIR, "ogboot", "bin"), mode=0o750, exist_ok=True)
subprocess.run(["curl", "-sS", "-o", os.path.join(WORKDIR, "ogboot", "bin", "composer.phar"), "https://getcomposer.org/installer"], check=True) subprocess.run(["curl", "-sS", "-o", os.path.join(WORKDIR, "ogboot", "bin", "composer.phar"), "https://getcomposer.org/installer"], check=True)
if not os.path.isfile(os.path.join(WORKDIR, "ogboot", "bin", "composer.phar")): if not os.path.isfile(os.path.join(WORKDIR, "ogboot", "bin", "composer.phar")):
logger.error("Failed to download composer.phar") logger.error("Failed to download composer.phar")
@ -247,15 +247,21 @@ def og_core_create_user(OPENGNSYS_CLIENT_USER):
subprocess.run(["sudo", "useradd", "-m", OPENGNSYS_CLIENT_USER]) subprocess.run(["sudo", "useradd", "-m", OPENGNSYS_CLIENT_USER])
logger.info(f"User {OPENGNSYS_CLIENT_USER} created successfully.") logger.info(f"User {OPENGNSYS_CLIENT_USER} created successfully.")
def og_boot_create_dirs(path_opengnsys_base): def og_boot_create_dirs():
if os.path.exists(path_opengnsys_base): if os.path.exists(INSTALL_OGBOOT_TARGET):
if not os.path.isdir(path_opengnsys_base): if not os.path.isdir(INSTALL_OGBOOT_TARGET):
raise NotADirectoryError(f"{path_opengnsys_base} existe y no es un directorio.") raise NotADirectoryError(f"{INSTALL_OGBOOT_TARGET} exists and is not a directory.")
else: else:
logger.warning(f"{path_opengnsys_base} directory already exists.") logger.warning(f"{INSTALL_OGBOOT_TARGET} directory already exists.")
else: else:
os.makedirs(path_opengnsys_base) try:
subprocess.run(["sudo", "chown", "-R", "ogboot:ogboot", path_opengnsys_base]) os.makedirs(INSTALL_OGBOOT_TARGET, mode=0o750, exist_ok=True)
os.makedirs(os.path.join(INSTALL_OGBOOT_TARGET, "client"), mode=0o750, exist_ok=True)
subprocess.run(["sudo", "chown", "-R", "ogboot:ogboot", INSTALL_OGBOOT_TARGET])
logger.info(f"{INSTALL_OGBOOT_TARGET} directory created successfully.")
except OSError:
logger.error("Error while creating directory paths!")
exit(1)
def og_boot_symfony_install(path_opengnsys_base): def og_boot_symfony_install(path_opengnsys_base):
logger.info("Creating Symfony application skeleton...") logger.info("Creating Symfony application skeleton...")
@ -294,8 +300,8 @@ def og_boot_copy_files(path_opengnsys_base):
shutil.rmtree(lib_dest) shutil.rmtree(lib_dest)
shutil.copytree(lib_source, lib_dest) shutil.copytree(lib_source, lib_dest)
os.makedirs(os.path.join(INSTALL_TARGET, "etc")) os.makedirs(os.path.join(INSTALL_TARGET, "etc"), mode=0o750, exist_ok=True)
os.makedirs(os.path.join(INSTALL_TARGET, "client")) os.makedirs(os.path.join(INSTALL_TARGET, "client"), mode=0o750, exist_ok=True)
subprocess.run(["sudo", "chmod", "-R", "755", path_opengnsys_base]) subprocess.run(["sudo", "chmod", "-R", "755", path_opengnsys_base])
subprocess.run(["sudo", "chown", "-R", "ogboot:ogboot", path_opengnsys_base]) subprocess.run(["sudo", "chown", "-R", "ogboot:ogboot", path_opengnsys_base])
@ -318,17 +324,17 @@ def og_boot_composer_install(path_opengnsys_base):
logger.info("Application skeleton created and composer.lock file removed.") logger.info("Application skeleton created and composer.lock file removed.")
def createDirs(INSTALL_TARGET): #def createDirs(INSTALL_TARGET):
if not os.path.exists(INSTALL_TARGET): # if not os.path.exists(INSTALL_TARGET):
try: # try:
os.makedirs(INSTALL_TARGET) # os.makedirs(INSTALL_TARGET)
os.makedirs(os.path.join(INSTALL_TARGET, "client")) # os.makedirs(os.path.join(INSTALL_TARGET, "client"))
logger.info(f"{INSTALL_TARGET} directory created successfully.") # logger.info(f"{INSTALL_TARGET} directory created successfully.")
except OSError: # except OSError:
logger.error("Error while creating directory paths!") # logger.error("Error while creating directory paths!")
exit(1) # exit(1)
else: # else:
logger.info(f"Directory {INSTALL_TARGET} already exists.") # logger.info(f"Directory {INSTALL_TARGET} already exists.")
############################################################################### ###############################################################################
###:::::::::::::::::::::::::::: CONFIGURE ::::::::::::::::::::::::::::::::::### ###:::::::::::::::::::::::::::: CONFIGURE ::::::::::::::::::::::::::::::::::###
@ -476,7 +482,7 @@ def tftpConfigure():
subprocess.run(["systemctl", "start", f"{service}.service"], check=True) subprocess.run(["systemctl", "start", f"{service}.service"], check=True)
#Crear directorio /var/lib/tftpboot #Crear directorio /var/lib/tftpboot
if not os.path.exists(TFTPCFGDIR): if not os.path.exists(TFTPCFGDIR):
os.makedirs(TFTPCFGDIR) os.makedirs(TFTPCFGDIR, mode=0o750, exist_ok=True)
logger.info(f"Directory {TFTPCFGDIR} created.") logger.info(f"Directory {TFTPCFGDIR} created.")
#Descargar oglive #Descargar oglive
logger.info("Downloading oglive...") logger.info("Downloading oglive...")
@ -524,7 +530,7 @@ def copyClientFiles():
logger.error(f"Error while copying client structure: {file}") logger.error(f"Error while copying client structure: {file}")
errstatus = 1 errstatus = 1
logger.info(f"Copying OpenGnsys Cloning Engine files.") logger.info(f"Copying OpenGnsys Cloning Engine files.")
os.makedirs(f"{INSTALL_TARGET}/client/lib/engine/bin", exist_ok=True) os.makedirs(f"{INSTALL_TARGET}/client/lib/engine/bin", mode=0o750, exist_ok=True)
engine_files = glob.glob(f"{WORKDIR}/ogboot/client/engine/*.lib*") engine_files = glob.glob(f"{WORKDIR}/ogboot/client/engine/*.lib*")
# Copiar cada archivo individualmente # Copiar cada archivo individualmente
for file in engine_files: for file in engine_files:
@ -632,7 +638,7 @@ def generate_ipxe_script():
ip_address_server = subprocess.check_output(["ifconfig", "eth0"]).decode().split("\n")[1].split()[1] ip_address_server = subprocess.check_output(["ifconfig", "eth0"]).decode().split("\n")[1].split()[1]
template = os.path.join(WORKDIR, "ogboot/etc/dhcp_boot.ipxe.tmpl") template = os.path.join(WORKDIR, "ogboot/etc/dhcp_boot.ipxe.tmpl")
ipxe_output = f"{INSTALL_OGBOOT_TARGET}/tftpboot/ipxe_scripts/dhcp_boot.ipxe" ipxe_output = f"{INSTALL_OGBOOT_TARGET}/tftpboot/ipxe_scripts/dhcp_boot.ipxe"
os.makedirs(os.path.dirname(ipxe_output), exist_ok=True) os.makedirs(os.path.dirname(ipxe_output), mode=0o750, exist_ok=True)
shutil.copy(template, ipxe_output) shutil.copy(template, ipxe_output)
with open(ipxe_output, "r") as ipxe_file: with open(ipxe_output, "r") as ipxe_file:
ipxe_content = ipxe_file.read() ipxe_content = ipxe_file.read()
@ -733,23 +739,26 @@ else:
if not os.path.exists(f"{WORKDIR}/ogboot"): if not os.path.exists(f"{WORKDIR}/ogboot"):
logger.info(f"Does not exist {WORKDIR}/ogboot") logger.info(f"Does not exist {WORKDIR}/ogboot")
if not os.path.exists(WORKDIR): if not os.path.exists(WORKDIR):
os.makedirs(WORKDIR) os.makedirs(WORKDIR, mode=0o750, exist_ok=True)
logger.error(f"ogBoot directory not found, create a symbolic link to the directory where the code is located {WORKDIR} To {os.path.dirname(PROGRAM_DIR)}") logger.error(f"ogBoot directory not found, create a symbolic link to the directory where the code is located {WORKDIR} To {os.path.dirname(PROGRAM_DIR)}")
os.symlink(os.path.dirname(PROGRAM_DIR), f"{WORKDIR}/ogboot") os.symlink(os.path.dirname(PROGRAM_DIR), f"{WORKDIR}/ogboot")
logger.info("Creating directories.") #logger.info("Creating directories.")
createDirs(INSTALL_TARGET) #createDirs(INSTALL_TARGET)
if os.system("echo $?") != 0: #if os.system("echo $?") != 0:
logger.error("Error while creating directory paths!") # logger.error("Error while creating directory paths!")
exit(1) # exit(1)
logger.info("Creating ogBoot project.") logger.info("Creating ogBoot project.")
og_core_create_user("ogboot") og_core_create_user("ogboot")
og_boot_create_dirs(INSTALL_OGBOOT_TARGET) logger.info("Creating directories.")
og_boot_create_dirs()
logger.info("Installing Symfony.")
og_boot_symfony_install(INSTALL_OGBOOT_TARGET) og_boot_symfony_install(INSTALL_OGBOOT_TARGET)
logger.info("Copying installation files.")
og_boot_copy_files(INSTALL_OGBOOT_TARGET) og_boot_copy_files(INSTALL_OGBOOT_TARGET)
if os.system("echo $?") != 0: if os.system("echo $?") != 0:
logger.error("Error while creating skeleton directory!") logger.error("Error while creating skeleton directory!")