Refs #202 global setting is added
parent
6fc10e95df
commit
957a343fea
|
@ -33,15 +33,17 @@ INSTALL_OPENGNSYS_TARGET = f"{env_ogCore_Dir}"
|
|||
INSTALL_OGBOOT_TARGET = f"{env_ogBoot_Dir}"
|
||||
GIT_REPO = f"{env_ogBoot_GitRepo}"
|
||||
|
||||
OSDISTRIB = ""
|
||||
OSVERSION = ""
|
||||
IPXE_DIR = "/tmp/ipxe"
|
||||
WORKDIR="/tmp/ogboot_installer"
|
||||
WORKDIR ="/tmp/ogboot_installer"
|
||||
TFTPSERV = "tftpd-hpa"
|
||||
SAMBASERV = "smbd"
|
||||
SAMBACFGDIR = "/etc/samba"
|
||||
TFTPCFGDIR = "/var/lib/tftpboot"
|
||||
INETDCFGDIR = "/etc/xinetd.d/"
|
||||
|
||||
DEFAULTDEV = "enp0s3"
|
||||
DEFAULTDEV = ""
|
||||
PACKAGES_TO_INSTALL = ["htop"]
|
||||
DEVICE = []
|
||||
SERVERIP = []
|
||||
|
@ -210,6 +212,7 @@ def install_packages(missing, log_packages_file=f"/tmp/installed_packages.log"):
|
|||
del os.environ['DEBIAN_FRONTEND']
|
||||
|
||||
def autoConfigure():
|
||||
global OSDISTRIB, OSVERSION
|
||||
#distribution = platform.linux_distribution()
|
||||
#distribution = distro.linux_distribution()
|
||||
#OSDISTRIB = distribution[0]
|
||||
|
@ -234,6 +237,7 @@ def generate_config_url():
|
|||
return f"https://dl.cloudsmith.io/public/isc/kea-2-0/config.deb.txt?distro=ubuntu&codename={codename}&version={version}&arch={arch}"
|
||||
|
||||
def downloadComposer():
|
||||
global WORKDIR, INSTALL_OGBOOT_TARGET
|
||||
#logger.info("Downloading composer.phar...")
|
||||
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)
|
||||
|
@ -244,6 +248,7 @@ def downloadComposer():
|
|||
return 0
|
||||
|
||||
def install_swagger_ui():
|
||||
global INSTALL_TARGET
|
||||
# Define la URL del archivo de Swagger UI que quieres descargar
|
||||
swagger_ui_url = "https://github.com/swagger-api/swagger-ui/archive/refs/heads/master.zip"
|
||||
# Define la ruta donde quieres descomprimir Swagger UI
|
||||
|
@ -277,57 +282,60 @@ def og_core_create_user(OPENGNSYS_CLIENT_USER):
|
|||
logger.info(f"User {OPENGNSYS_CLIENT_USER} created successfully.")
|
||||
|
||||
def og_boot_create_dirs():
|
||||
if os.path.exists(INSTALL_OGBOOT_TARGET):
|
||||
if not os.path.isdir(INSTALL_OGBOOT_TARGET):
|
||||
raise NotADirectoryError(f"{INSTALL_OGBOOT_TARGET} exists and is not a directory.")
|
||||
else:
|
||||
logger.warning(f"{INSTALL_OGBOOT_TARGET} directory already exists.")
|
||||
else:
|
||||
try:
|
||||
# Crear los directorios necesarios
|
||||
os.makedirs(INSTALL_OGBOOT_TARGET, mode=0o750, exist_ok=True)
|
||||
os.makedirs(os.path.join(INSTALL_OGBOOT_TARGET, "client"), mode=0o750, exist_ok=True)
|
||||
os.makedirs("/opt/ogboot/tftpboot/", mode=0o750, exist_ok=True)
|
||||
os.makedirs("/opt/ogboot/tftpboot/ipxe_scripts", mode=0o750, exist_ok=True)
|
||||
os.makedirs("/opt/ogboot/tftpboot/ipxe_scripts/templates", mode=0o750, exist_ok=True)
|
||||
|
||||
# Cambiar el propietario de los directorios
|
||||
subprocess.run(["sudo", "chown", "-R", "ogboot:ogboot", INSTALL_OGBOOT_TARGET])
|
||||
subprocess.run(["sudo", "chown", "-R", "ogboot:ogboot", "/opt/ogboot/tftpboot/"])
|
||||
|
||||
logger.info(f"{INSTALL_OGBOOT_TARGET} directory created successfully.")
|
||||
except OSError:
|
||||
logger.error("Error while creating directory paths!")
|
||||
exit(1)
|
||||
global INSTALL_OGBOOT_TARGET
|
||||
if os.path.exists(INSTALL_OGBOOT_TARGET):
|
||||
if not os.path.isdir(INSTALL_OGBOOT_TARGET):
|
||||
raise NotADirectoryError(f"{INSTALL_OGBOOT_TARGET} exists and is not a directory.")
|
||||
else:
|
||||
logger.warning(f"{INSTALL_OGBOOT_TARGET} directory already exists.")
|
||||
else:
|
||||
try:
|
||||
# Crear los directorios necesarios
|
||||
os.makedirs(INSTALL_OGBOOT_TARGET, mode=0o750, exist_ok=True)
|
||||
os.makedirs(os.path.join(INSTALL_OGBOOT_TARGET, "client"), mode=0o750, exist_ok=True)
|
||||
os.makedirs("/opt/ogboot/tftpboot/", mode=0o750, exist_ok=True)
|
||||
os.makedirs("/opt/ogboot/tftpboot/ipxe_scripts", mode=0o750, exist_ok=True)
|
||||
os.makedirs("/opt/ogboot/tftpboot/ipxe_scripts/templates", mode=0o750, exist_ok=True)
|
||||
|
||||
# Cambiar el propietario de los directorios
|
||||
subprocess.run(["sudo", "chown", "-R", "ogboot:ogboot", INSTALL_OGBOOT_TARGET])
|
||||
subprocess.run(["sudo", "chown", "-R", "ogboot:ogboot", "/opt/ogboot/tftpboot/"])
|
||||
|
||||
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):
|
||||
logger.info("Creating Symfony application skeleton...")
|
||||
|
||||
try:
|
||||
# Copiar los archivos .env y composer.json primero
|
||||
env_src = os.path.join(WORKDIR, "ogboot/.env")
|
||||
composer_src = os.path.join(WORKDIR, "ogboot/composer.json")
|
||||
env_dest = os.path.join(path_opengnsys_base, ".env")
|
||||
composer_dest = os.path.join(path_opengnsys_base, "composer.json")
|
||||
global WORKDIR
|
||||
logger.info("Creating Symfony application skeleton...")
|
||||
|
||||
try:
|
||||
# Copiar los archivos .env y composer.json primero
|
||||
env_src = os.path.join(WORKDIR, "ogboot/.env")
|
||||
composer_src = os.path.join(WORKDIR, "ogboot/composer.json")
|
||||
env_dest = os.path.join(path_opengnsys_base, ".env")
|
||||
composer_dest = os.path.join(path_opengnsys_base, "composer.json")
|
||||
|
||||
shutil.copy(env_src, env_dest)
|
||||
shutil.copy(composer_src, composer_dest)
|
||||
logger.info(f"Copied {env_src} to {env_dest}")
|
||||
logger.info(f"Copied {composer_src} to {composer_dest}")
|
||||
shutil.copy(env_src, env_dest)
|
||||
shutil.copy(composer_src, composer_dest)
|
||||
logger.info(f"Copied environment source {env_src} to {env_dest}")
|
||||
logger.info(f"Copied composer source{composer_src} to {composer_dest}")
|
||||
|
||||
# Cambiar permisos y propietario de los archivos copiados
|
||||
os.chmod(env_dest, 0o644)
|
||||
os.chmod(composer_dest, 0o644)
|
||||
shutil.chown(env_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}")
|
||||
# Cambiar permisos y propietario de los archivos copiados
|
||||
os.chmod(env_dest, 0o644)
|
||||
os.chmod(composer_dest, 0o644)
|
||||
shutil.chown(env_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".env and composer.json files copied to {path_opengnsys_base}")
|
||||
except Exception as e:
|
||||
logger.error(f"An error occurred while copying files: {e}")
|
||||
raise
|
||||
logger.info(f".env and composer.json files copied to {path_opengnsys_base}")
|
||||
except Exception as e:
|
||||
logger.error(f"An error occurred while copying files: {e}")
|
||||
raise
|
||||
|
||||
def og_boot_copy_files(path_opengnsys_base):
|
||||
global INSTALL_TARGET, WORKDIR
|
||||
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")
|
||||
|
@ -465,6 +473,7 @@ def backupFile(file):
|
|||
logger.info(f"Backup of {file} successful")
|
||||
|
||||
def isc_keaDhcpConfigure():
|
||||
global DEVICE, NETMASK, NETIP, ROUTERIP, DNSIP, SERVERIP
|
||||
print(f"{isc_keaDhcpConfigure.__name__}(): Configuración de muestra para el servicio DHCP de Kea.")
|
||||
errcode = 0
|
||||
i = 0
|
||||
|
@ -503,6 +512,7 @@ def isc_keaDhcpConfigure():
|
|||
return 0
|
||||
|
||||
def testPxe():
|
||||
global TFTPCFGDIR
|
||||
logger.info(f"Checking TFTP service... please wait.")
|
||||
subprocess.run(["echo", "test"], stdout=open(f"{TFTPCFGDIR}/testpxe", "w"))
|
||||
try:
|
||||
|
@ -521,6 +531,7 @@ def run_command(command):
|
|||
print(result.stdout)
|
||||
|
||||
def tftpConfigure():
|
||||
global TFTPSERV, INETDSERV, TFTPCFGDIR
|
||||
# Update the package list
|
||||
#print("Updating package list...")
|
||||
run_command("sudo apt update")
|
||||
|
@ -613,6 +624,7 @@ TFTP_OPTIONS="--secure"
|
|||
run_command(f"sudo ln -s {TFTPCFGDIR} {symlink_target}")
|
||||
|
||||
def servicesCompilation():
|
||||
global WORKDIR
|
||||
hayErrores = 0
|
||||
process = subprocess.run(["make"], cwd=f"{WORKDIR}/ogboot/sources/clients/ogAdmClient")
|
||||
subprocess.run(["mv", f"{WORKDIR}/ogboot/sources/clients/ogAdmClient/ogAdmClient", f"{WORKDIR}/ogboot/client/shared/bin"])
|
||||
|
@ -622,6 +634,7 @@ def servicesCompilation():
|
|||
return hayErrores
|
||||
|
||||
def copyInterfaceAdm():
|
||||
global WORKDIR, INSTALL_TARGET
|
||||
hayErrores = 0
|
||||
cp_process = subprocess.run(["cp", "-ar", f"{WORKDIR}/ogboot/sources/interface", f"{INSTALL_TARGET}/client/interfaceAdm"])
|
||||
if cp_process.returncode != 0:
|
||||
|
@ -630,6 +643,7 @@ def copyInterfaceAdm():
|
|||
return hayErrores
|
||||
|
||||
def copyClientFiles():
|
||||
global WORKDIR, INSTALL_TARGET
|
||||
errstatus = 0
|
||||
logger.info(f"Copying OpenGnsys Client files.")
|
||||
source_files = glob.glob(f"{WORKDIR}/ogboot/client/shared/*")
|
||||
|
@ -678,13 +692,13 @@ def get_first_network_interface_with_traffic():
|
|||
interface = parts[0].strip()
|
||||
if interface != "lo":
|
||||
traffic_data = parts[1].strip().split()
|
||||
# Recibidos y enviados
|
||||
received_bytes = int(traffic_data[0])
|
||||
transmitted_bytes = int(traffic_data[8])
|
||||
if received_bytes > 0 or transmitted_bytes > 0:
|
||||
return interface
|
||||
|
||||
def getNetworkSettings():
|
||||
global DEVICE, SERVERIP, NETMASK, NETBROAD, NETIP, ROUTERIP, DEFAULTDEV
|
||||
DHCPNET = "127.0.0.1"
|
||||
#print("getNetworkSettings(): Detecting network parameters.")
|
||||
output = subprocess.check_output(["ip", "-o", "link", "show", "up"]).decode("utf-8")
|
||||
|
@ -716,7 +730,7 @@ def getNetworkSettings():
|
|||
return (0)
|
||||
|
||||
def openGnsysConfigure():
|
||||
global DEFAULTDEV
|
||||
global DEFAULTDEV, INSTALL_TARGET, SERVER_OPENGNSYS, WORKDIR
|
||||
i = 0
|
||||
dev = ""
|
||||
CONSOLEURL = ""
|
||||
|
@ -734,6 +748,7 @@ def openGnsysConfigure():
|
|||
logger.info(f"OpenGnsys config files created.")
|
||||
|
||||
def mount_NFS():
|
||||
global IPXE_DIR, INSTALL_OPENGNSYS_TARGET
|
||||
if subprocess.call(["sudo", "mount", "-t", "nfs", "ognartefactos.evlt.uma.es:/", "/mnt"]) == 0:
|
||||
logger.info("Properly mounted NFS system.")
|
||||
else:
|
||||
|
@ -774,7 +789,7 @@ def mount_NFS():
|
|||
subprocess.call(["sudo", "cp", "bin-x86_64-efi/ipxe.efi", f"{INSTALL_OPENGNSYS_TARGET}/tftpboot"])
|
||||
|
||||
def generate_ipxe_script():
|
||||
global DEFAULTDEV
|
||||
global DEFAULTDEV, INSTALL_OGBOOT_TARGET, WORKDIR
|
||||
ip_address_server = subprocess.check_output(["ifconfig", DEFAULTDEV]).decode().split("\n")[1].split()[1]
|
||||
template = os.path.join(WORKDIR, "ogboot/etc/dhcp_boot.ipxe.tmpl")
|
||||
ipxe_output = f"{INSTALL_OGBOOT_TARGET}/tftpboot/ipxe_scripts/dhcp_boot.ipxe"
|
||||
|
@ -801,6 +816,7 @@ def generate_ipxe_script():
|
|||
logger.info("ipxe files created correctly.")
|
||||
|
||||
def smbConfigure():
|
||||
global SAMBACFGDIR, SAMBASERV, OPENGNSYS_CLIENT_PASSWD, OPENGNSYS_CLIENT_USER, PYTHON_VERSION
|
||||
#logger.info(f"{smbConfigure.__name__}(): Configuring Samba service.")
|
||||
backupFile(f"{SAMBACFGDIR}/smb.conf")
|
||||
# Copiar plantilla de recursos para OpenGnsys
|
||||
|
@ -842,7 +858,7 @@ def smbConfigure():
|
|||
return 0
|
||||
|
||||
def setup_nginx():
|
||||
global DEFAULTDEV
|
||||
global DEFAULTDEV, WORKDIR
|
||||
try:
|
||||
# Obtener la IP del servidor
|
||||
ip_address_server = subprocess.check_output(["ifconfig", DEFAULTDEV]).decode().split("\n")[1].split()[1]
|
||||
|
@ -938,45 +954,46 @@ def modify_php_fpm_config():
|
|||
exit(1)
|
||||
|
||||
def install_oglive_daemon():
|
||||
try:
|
||||
DAEMON_SCRIPT_SRC = os.path.join(WORKDIR, "ogboot/bin/oglive_daemon.py")
|
||||
DAEMON_SCRIPT_DEST = os.path.join(INSTALL_TARGET, "bin", "oglive_daemon.py")
|
||||
SERVICE_FILE_SRC = os.path.join(WORKDIR, "ogboot/etc/oglive_daemon.service")
|
||||
SERVICE_FILE_DEST = "/etc/systemd/system/oglive_daemon.service"
|
||||
global WORKDIR, INSTALL_TARGET
|
||||
try:
|
||||
DAEMON_SCRIPT_SRC = os.path.join(WORKDIR, "ogboot/bin/oglive_daemon.py")
|
||||
DAEMON_SCRIPT_DEST = os.path.join(INSTALL_TARGET, "bin", "oglive_daemon.py")
|
||||
SERVICE_FILE_SRC = os.path.join(WORKDIR, "ogboot/etc/oglive_daemon.service")
|
||||
SERVICE_FILE_DEST = "/etc/systemd/system/oglive_daemon.service"
|
||||
|
||||
# Crear directorio de destino si no existe
|
||||
os.makedirs(os.path.dirname(DAEMON_SCRIPT_DEST), exist_ok=True)
|
||||
# Crear directorio de destino si no existe
|
||||
os.makedirs(os.path.dirname(DAEMON_SCRIPT_DEST), exist_ok=True)
|
||||
|
||||
# Copiar el script del demonio al directorio de destino
|
||||
shutil.copyfile(DAEMON_SCRIPT_SRC, DAEMON_SCRIPT_DEST)
|
||||
logger.info(f"Copied {DAEMON_SCRIPT_SRC} to {DAEMON_SCRIPT_DEST}")
|
||||
# Copiar el script del demonio al directorio de destino
|
||||
shutil.copyfile(DAEMON_SCRIPT_SRC, DAEMON_SCRIPT_DEST)
|
||||
logger.info(f"Copied {DAEMON_SCRIPT_SRC} to {DAEMON_SCRIPT_DEST}")
|
||||
|
||||
# Hacer el script ejecutable
|
||||
os.chmod(DAEMON_SCRIPT_DEST, 0o755)
|
||||
logger.info(f"Set executable permissions for {DAEMON_SCRIPT_DEST}")
|
||||
# Hacer el script ejecutable
|
||||
os.chmod(DAEMON_SCRIPT_DEST, 0o755)
|
||||
logger.info(f"Set executable permissions for {DAEMON_SCRIPT_DEST}")
|
||||
|
||||
# Copiar el archivo de servicio de systemd
|
||||
shutil.copyfile(SERVICE_FILE_SRC, SERVICE_FILE_DEST)
|
||||
logger.info(f"Copied {SERVICE_FILE_SRC} to {SERVICE_FILE_DEST}")
|
||||
# Copiar el archivo de servicio de systemd
|
||||
shutil.copyfile(SERVICE_FILE_SRC, SERVICE_FILE_DEST)
|
||||
logger.info(f"Copied {SERVICE_FILE_SRC} to {SERVICE_FILE_DEST}")
|
||||
|
||||
# Recargar systemd para reconocer el nuevo servicio
|
||||
subprocess.run(["systemctl", "daemon-reload"], check=True)
|
||||
logger.info("Reloaded systemd daemon")
|
||||
# Recargar systemd para reconocer el nuevo servicio
|
||||
subprocess.run(["systemctl", "daemon-reload"], check=True)
|
||||
logger.info("Reloaded systemd daemon")
|
||||
|
||||
# Habilitar el servicio para que arranque al inicio
|
||||
subprocess.run(["systemctl", "enable", "oglive_daemon.service"], check=True)
|
||||
logger.info("Enabled oglive_daemon service")
|
||||
# Habilitar el servicio para que arranque al inicio
|
||||
subprocess.run(["systemctl", "enable", "oglive_daemon.service"], check=True)
|
||||
logger.info("Enabled oglive_daemon service")
|
||||
|
||||
# Arrancar el servicio
|
||||
subprocess.run(["systemctl", "start", "oglive_daemon.service"], check=True)
|
||||
logger.info("Started oglive_daemon service")
|
||||
# Arrancar el servicio
|
||||
subprocess.run(["systemctl", "start", "oglive_daemon.service"], check=True)
|
||||
logger.info("Started oglive_daemon service")
|
||||
|
||||
except (shutil.Error, OSError) as e:
|
||||
logger.error(f"File operation error: {e}")
|
||||
except subprocess.CalledProcessError as e:
|
||||
logger.error(f"Subprocess error: {e}")
|
||||
except Exception as e:
|
||||
logger.error(f"An unexpected error occurred: {e}")
|
||||
except (shutil.Error, OSError) as e:
|
||||
logger.error(f"File operation error: {e}")
|
||||
except subprocess.CalledProcessError as e:
|
||||
logger.error(f"Subprocess error: {e}")
|
||||
except Exception as e:
|
||||
logger.error(f"An unexpected error occurred: {e}")
|
||||
|
||||
###############################################################################
|
||||
###:::::::::::::::::::::::::::::::: MAIN :::::::::::::::::::::::::::::::::::###
|
||||
|
|
Loading…
Reference in New Issue