Refs #202 add/remove packages

ogboot_installer
Antonio Guerrero 2024-07-11 18:34:34 +00:00
parent c64ad8cb21
commit c1782d25bf
2 changed files with 79 additions and 65 deletions

View File

@ -149,7 +149,7 @@ def get_missing_packages():
case "18.04":
PACKAGES_TO_INSTALL = ["nano", "wget", "tree"]
case "22.04":
PACKAGES_TO_INSTALL = ["nfs-common", "xorriso", "genisoimage", "syslinux", "liblzma-dev", "nginx", "arp-scan", "automake", "build-essential", "btrfs-progs", "composer", "curl", "ctorrent", "debootstrap", "g++-multilib", "gawk", "gettext", "graphviz", "grub-efi-amd64-signed", "jq", "libapache2-mod-php", "libdbi-dev", "libdbi1", "libev-dev", "libjansson-dev", "liblz4-tool", "libssl-dev", "moreutils", "netpipes", "php", "php-bcmath", "php-cli", "php-curl", "php-fpm", "php-gd", "php-json", "php-ldap", "php-mbstring", "php-mysql", "php8.1-common", "php-pear", "php-xml", "php-zip", "procps", "coreutils", "rsync", "samba", "samba-common-bin", "schroot", "shim-signed", "squashfs-tools", "subversion", "tftpd-hpa", "udpcast", "unzip", "wakeonlan", "wget", "xinetd", "jq", "moreutils", "net-tools", "isolinux", "syslinux"]
PACKAGES_TO_INSTALL = ["nfs-common", "xorriso", "genisoimage", "syslinux", "liblzma-dev", "nginx", "arp-scan", "automake", "build-essential", "btrfs-progs", "composer", "curl", "ctorrent", "debootstrap", "g++-multilib", "gawk", "gettext", "graphviz", "grub-efi-amd64-signed", "jq", "libdbi-dev", "libdbi1", "libev-dev", "libjansson-dev", "liblz4-tool", "libssl-dev", "moreutils", "netpipes", "php", "php-bcmath", "php-cli", "php-curl", "php-fpm", "php-gd", "php-json", "php-ldap", "php-mbstring", "php-mysql", "php8.1-common", "php-pear", "php-xml", "php-zip", "procps", "coreutils", "rsync", "samba", "samba-common-bin", "schroot", "shim-signed", "squashfs-tools", "subversion", "tftpd-hpa", "udpcast", "unzip", "wakeonlan", "wget", "xinetd", "jq", "moreutils", "net-tools", "isolinux", "syslinux"]
case _:
PACKAGES_TO_INSTALL = ["bash", "nc", "rsync"]
case "suse":
@ -175,7 +175,7 @@ def get_missing_packages():
for package in PACKAGES_TO_INSTALL:
if not is_installed(package):
faltantes.append(package)
logger.info(f"::::::Package to install: {package}...")
logger.info(f"Package to install: {package}...")
return faltantes
def install_packages(missing, log_packages_file=f"/tmp/installed_packages.log"):
@ -473,6 +473,7 @@ TFTP_OPTIONS="--secure"
#Crear directorio /var/lib/tftpboot
if not os.path.exists(TFTPCFGDIR):
os.makedirs(TFTPCFGDIR, mode=0o775, exist_ok=True)
subprocess.run(["chown", "-R", "tftp:ogboot", TFTPCFGDIR])
logger.info(f"Directory {TFTPCFGDIR} created.")
else:
logger.warning(f"Directory {TFTPCFGDIR} exist.")
@ -682,9 +683,21 @@ def mount_NFS():
exit(1)
subprocess.call(["sudo", "cp", "bin-x86_64-efi/ipxe.efi", f"{INSTALL_OPENGNSYS_TARGET}/tftpboot"])
def get_ip_address(interface):
try:
result = subprocess.check_output(["ip", "addr", "show", interface]).decode()
for line in result.split('\n'):
if "inet " in line:
ip_address = line.strip().split()[1].split('/')[0]
return ip_address
except subprocess.CalledProcessError as e:
print(f"Error get address IP: {e}")
return None
def generate_ipxe_script():
global DEFAULTDEV, INSTALL_OGBOOT_TARGET, WORKDIR
ip_address_server = subprocess.check_output(["ifconfig", DEFAULTDEV]).decode().split("\n")[1].split()[1]
#ip_address_server = subprocess.check_output(["ifconfig", DEFAULTDEV]).decode().split("\n")[1].split()[1]
ip_address_server = get_ip_address(DEFAULTDEV)
template = os.path.join(WORKDIR, "ogboot/etc/dhcp_boot.ipxe.tmpl")
ipxe_output = f"{INSTALL_OGBOOT_TARGET}/tftpboot/ipxe_scripts/dhcp_boot.ipxe"
os.makedirs(os.path.dirname(ipxe_output), mode=0o775, exist_ok=True)
@ -752,7 +765,8 @@ def setup_nginx():
global DEFAULTDEV, WORKDIR
try:
# Obtener la IP del servidor
ip_address_server = subprocess.check_output(["ifconfig", DEFAULTDEV]).decode().split("\n")[1].split()[1]
#ip_address_server = subprocess.check_output(["ifconfig", DEFAULTDEV]).decode().split("\n")[1].split()[1]
ip_address_server = get_ip_address(DEFAULTDEV)
php_version = get_php_fpm_version()
# Leer y modificar la plantilla de configuración de nginx
@ -935,9 +949,9 @@ if REMOTE == 1:
exit(1)
else:
if not os.path.exists(f"{WORKDIR}/ogboot"):
logger.warning(f"Does not exist {WORKDIR}/ogboot")
if not os.path.exists(WORKDIR):
os.makedirs(WORKDIR, mode=0o775, exist_ok=True)
logger.info(f"Dir {WORKDIR}/ogboot created")
logger.info(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")