new approach
This commit is contained in:
parent
002116e26a
commit
7fd9ca7edd
25
conf.d/service_10_main.conf.sh
Executable file
25
conf.d/service_10_main.conf.sh
Executable file
@ -0,0 +1,25 @@
|
|||||||
|
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
. ./settings.sh
|
||||||
|
|
||||||
|
#
|
||||||
|
# Main Service
|
||||||
|
#
|
||||||
|
S_ENABLED=YES
|
||||||
|
S_NAME="none"
|
||||||
|
S_PACKAGES="git sudo p7zip p7zip-full ipxe pxelinux syslinux syslinux-common"
|
||||||
|
|
||||||
|
# handle services
|
||||||
|
fservice $S_ENABLED $1 $S_NAME "$S_PACKAGES"
|
||||||
|
|
||||||
|
case $1 in
|
||||||
|
|
||||||
|
init)
|
||||||
|
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
|
||||||
|
|
||||||
|
|
21
conf.d/service_20_tftp.conf.sh
Executable file
21
conf.d/service_20_tftp.conf.sh
Executable file
@ -0,0 +1,21 @@
|
|||||||
|
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
. ./settings.sh
|
||||||
|
|
||||||
|
#
|
||||||
|
# Service configuration
|
||||||
|
#
|
||||||
|
S_ENABLED=YES
|
||||||
|
S_NAME="tftpd-hpa"
|
||||||
|
S_PACKAGES="tftpd-hpa"
|
||||||
|
|
||||||
|
fservice $S_ENABLED $1 $S_NAME $S_PACKAGES
|
||||||
|
|
||||||
|
case $1 in
|
||||||
|
|
||||||
|
init)
|
||||||
|
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
23
conf.d/service_30_nfs.conf.sh
Executable file
23
conf.d/service_30_nfs.conf.sh
Executable file
@ -0,0 +1,23 @@
|
|||||||
|
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
. ./settings.sh
|
||||||
|
|
||||||
|
#
|
||||||
|
# Service configuration
|
||||||
|
#
|
||||||
|
|
||||||
|
S_ENABLED=YES
|
||||||
|
S_NAME="nfs-kernel-server"
|
||||||
|
S_PACKAGES="nfs-kernel-server nfs-common"
|
||||||
|
|
||||||
|
fservice $S_ENABLED $1 $S_NAME $S_PACKAGES
|
||||||
|
|
||||||
|
case $1 in
|
||||||
|
|
||||||
|
init)
|
||||||
|
echo " create /etc/exports..."
|
||||||
|
cat ${D_ROOTDIR}/resrc.d/service_nfs_exports.txt | sed "s#__D_TFTP__#$D_TFTP#g" > /etc/exports
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
23
conf.d/service_40_smbd.conf.sh
Executable file
23
conf.d/service_40_smbd.conf.sh
Executable file
@ -0,0 +1,23 @@
|
|||||||
|
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
. ./settings.sh
|
||||||
|
|
||||||
|
#
|
||||||
|
# Service configuration
|
||||||
|
#
|
||||||
|
|
||||||
|
S_ENABLED=yes
|
||||||
|
S_NAME="smbd"
|
||||||
|
S_PACKAGES="samba"
|
||||||
|
|
||||||
|
fservice $S_ENABLED $1 $S_NAME $S_PACKAGES
|
||||||
|
|
||||||
|
case $1 in
|
||||||
|
|
||||||
|
init)
|
||||||
|
echo " create smb.conf ..."
|
||||||
|
cat ${D_ROOTDIR}/resrc.d/service_smb.conf.txt | sed "s#__D_TFTP__#$D_TFTP#g" > /etc/samba/smb.conf
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
53
main.sh
Normal file → Executable file
53
main.sh
Normal file → Executable file
@ -0,0 +1,53 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
. ./settings.sh
|
||||||
|
|
||||||
|
case $1 in
|
||||||
|
|
||||||
|
# process services
|
||||||
|
services)
|
||||||
|
|
||||||
|
# find services:
|
||||||
|
SLIST=$(ls ./conf.d/service_*.conf.sh )
|
||||||
|
# process command
|
||||||
|
case $2 in
|
||||||
|
init)
|
||||||
|
echo "--------------------------------------------------"
|
||||||
|
echo "service init..."
|
||||||
|
echo "--------------------------------------------------"
|
||||||
|
for ITEM in ${SLIST};
|
||||||
|
do
|
||||||
|
$ITEM init
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
start)
|
||||||
|
echo "--------------------------------------------------"
|
||||||
|
echo "service start..."
|
||||||
|
echo "--------------------------------------------------"
|
||||||
|
for ITEM in ${SLIST};
|
||||||
|
do
|
||||||
|
$ITEM start
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
stop)
|
||||||
|
echo "--------------------------------------------------"
|
||||||
|
echo "service stop..."
|
||||||
|
echo "--------------------------------------------------"
|
||||||
|
for ITEM in ${SLIST};
|
||||||
|
do
|
||||||
|
$ITEM stop
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
restart)
|
||||||
|
echo "--------------------------------------------------"
|
||||||
|
echo "service restart..."
|
||||||
|
echo "--------------------------------------------------"
|
||||||
|
for ITEM in ${SLIST};
|
||||||
|
do
|
||||||
|
$ITEM restart
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
;;
|
||||||
|
esac
|
@ -1,19 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
# source global variables
|
|
||||||
. ../../settings.sh
|
|
||||||
|
|
||||||
#
|
|
||||||
# Main Settings for this Plugin
|
|
||||||
#
|
|
||||||
|
|
||||||
P_NAME=Default pxelinux Menua
|
|
||||||
P_TYPE=menue
|
|
||||||
|
|
||||||
|
|
||||||
M_PATH=bios
|
|
||||||
M_TITLE=Default Boot Menue
|
|
||||||
M_BACKGROUND=splash.png
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,13 +0,0 @@
|
|||||||
#
|
|
||||||
# Menue Header
|
|
||||||
#
|
|
||||||
rootprompt 0
|
|
||||||
PATH __M_PATH__
|
|
||||||
default __M_PATH__/vesamenu.c32
|
|
||||||
TIMEOUT 300
|
|
||||||
|
|
||||||
MENU TITLE __M_TITLE__
|
|
||||||
MENU BACKGROUND __M_BACKGROUND__
|
|
||||||
MENU ROWS 15
|
|
||||||
MENU TABMSGROW 20
|
|
||||||
MENU TIMEOUTROW 22
|
|
11
resrc.d/service_nfs_exports.txt
Normal file
11
resrc.d/service_nfs_exports.txt
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
# /etc/exports: the access control list for filesystems which may be exported
|
||||||
|
# to NFS clients. See exports(5).
|
||||||
|
#
|
||||||
|
# Example for NFSv2 and NFSv3:
|
||||||
|
# /srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
|
||||||
|
#
|
||||||
|
# Example for NFSv4:
|
||||||
|
# /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
|
||||||
|
# /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check)
|
||||||
|
#
|
||||||
|
__D_TFTP__ *(ro,nohide,no_root_squash,no_subtree_check,insecure)
|
19
resrc.d/service_smb.conf.txt
Normal file
19
resrc.d/service_smb.conf.txt
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
[global]
|
||||||
|
workgroup = PXE
|
||||||
|
map to guest = bad user
|
||||||
|
usershare allow guests = yes
|
||||||
|
|
||||||
|
[tftp]
|
||||||
|
browsable = true
|
||||||
|
read only = false
|
||||||
|
guest ok = yes
|
||||||
|
force user = root
|
||||||
|
path = __D_TFTP__
|
||||||
|
|
||||||
|
[rootdir]
|
||||||
|
browsable = true
|
||||||
|
read only = false
|
||||||
|
guest ok = yes
|
||||||
|
force user = root
|
||||||
|
path = /root
|
||||||
|
|
49
settings.sh
49
settings.sh
@ -14,7 +14,48 @@ D_ROOTDIR=/root/pxe-bootserver
|
|||||||
HOST_IP=192.168.75.3
|
HOST_IP=192.168.75.3
|
||||||
HOST_FQDN=tftp.ostrach.tld
|
HOST_FQDN=tftp.ostrach.tld
|
||||||
|
|
||||||
# directories
|
|
||||||
D_MENUES=${D_ROOTDIR}/menues
|
#
|
||||||
D_SERVICES=${D_ROOTDIR}/services
|
# Functions
|
||||||
D_PLUGINS=${D_ROOTDIR}/plugins
|
#
|
||||||
|
|
||||||
|
fservice (){
|
||||||
|
# $1 is enabled yes/no
|
||||||
|
# $2 is the command
|
||||||
|
# $3 is the program name
|
||||||
|
# $4 is a list of packages
|
||||||
|
|
||||||
|
if [ "$1" = "yes" ] || [ "$1" = "YES" ]; then
|
||||||
|
echo "touching $3 :"
|
||||||
|
case $2 in
|
||||||
|
# INIT
|
||||||
|
# Install needed Debian Packages:
|
||||||
|
init)
|
||||||
|
echo "installing: $4"
|
||||||
|
apt install -y $4
|
||||||
|
;;
|
||||||
|
start)
|
||||||
|
if ! [ "$3" = "none" ]; then
|
||||||
|
systemctl start $3
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
stop)
|
||||||
|
if ! [ "$3" = "none" ]; then
|
||||||
|
systemctl stop $3
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
restart)
|
||||||
|
if ! [ "$3" = "none" ]; then
|
||||||
|
systemctl restart $3
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
else
|
||||||
|
echo "$3 is disabled. nothing to do..."
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
22
todo.md
22
todo.md
@ -70,6 +70,7 @@
|
|||||||
* create menu sections: (maybe a kind of hook for plugin-types?)
|
* create menu sections: (maybe a kind of hook for plugin-types?)
|
||||||
* put plugins into sections
|
* put plugins into sections
|
||||||
* types: livesystem, rescue, tools, installer, etc.
|
* types: livesystem, rescue, tools, installer, etc.
|
||||||
|
* priority: sort stanzas
|
||||||
|
|
||||||
### ./plugins
|
### ./plugins
|
||||||
* plugin contains all needed files
|
* plugin contains all needed files
|
||||||
@ -82,7 +83,28 @@
|
|||||||
* depends: nfs, samba, etc.
|
* depends: nfs, samba, etc.
|
||||||
* plugin specific variables and settings
|
* plugin specific variables and settings
|
||||||
|
|
||||||
|
# Central config file approach
|
||||||
|
|
||||||
|
a main script with a conf.d/ directory. config files are sorted by numbers
|
||||||
|
and special names: menu_20_pxelinux.conf, service_10_nfs.conf, plugin_30_knoppix.conf
|
||||||
|
each .conf file contains the needed variables
|
||||||
|
|
||||||
|
the main script can select files by name (menu,service,plugin) and sort them by number
|
||||||
|
for the desired lineup.
|
||||||
|
|
||||||
|
menu* files build the menu and processes all plugin* files to fill the menu
|
||||||
|
|
||||||
|
### File structure
|
||||||
|
|
||||||
|
* main.sh
|
||||||
|
* ./conf.d/
|
||||||
|
* menu_10_default.conf
|
||||||
|
* service_10_tftp.conf
|
||||||
|
* plugin_10_knoppix.conf
|
||||||
|
* plugin_20_rescuezilla.conf
|
||||||
|
|
||||||
|
### menu*.conf
|
||||||
|
* find all enabled plugins and read them in a sorted array
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user