From bad5f10d82d1ffb23749bb8267c041380fbab309 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Fri, 3 Feb 2017 12:22:45 +0100 Subject: [run-virt/dhcp-busybox] Get WINS server from upstream DHCP, pass on to VMs via local DHCPD --- .../data/opt/openslx/scripts/systemd-udhcpc++ | 2 +- .../data/opt/openslx/scripts/udhcpc-openslx | 5 +++++ .../data/opt/openslx/scripts/systemd-run_virt_env | 16 +++++++++++++++- .../data/opt/openslx/vmchooser/config/udhcpd-nat1.conf | 2 +- 4 files changed, 22 insertions(+), 3 deletions(-) (limited to 'core') diff --git a/core/modules/dhcpc-busybox/data/opt/openslx/scripts/systemd-udhcpc++ b/core/modules/dhcpc-busybox/data/opt/openslx/scripts/systemd-udhcpc++ index 76c4fe95..2f8b878d 100755 --- a/core/modules/dhcpc-busybox/data/opt/openslx/scripts/systemd-udhcpc++ +++ b/core/modules/dhcpc-busybox/data/opt/openslx/scripts/systemd-udhcpc++ @@ -8,7 +8,7 @@ UDHCPC_OPTS="" mkdir -p /run/udhcpc || echo "Could not create '/run/udhcpc'." -/opt/openslx/sbin/udhcpc $UDHCPC_OPTS -O domain -O nissrv -O nisdomain -O wpad -O search -t 8 -s /opt/openslx/scripts/udhcpc-openslx -i "$NET_IF" -p "/run/udhcpc/udhcpc.$NET_IF.pid" +/opt/openslx/sbin/udhcpc $UDHCPC_OPTS -O domain -O nissrv -O nisdomain -O wpad -O search -O wins -t 8 -s /opt/openslx/scripts/udhcpc-openslx -i "$NET_IF" -p "/run/udhcpc/udhcpc.$NET_IF.pid" RET=$? if [ "$RET" != 0 ]; then diff --git a/core/modules/dhcpc-busybox/data/opt/openslx/scripts/udhcpc-openslx b/core/modules/dhcpc-busybox/data/opt/openslx/scripts/udhcpc-openslx index 776f3f3b..13de9ff4 100755 --- a/core/modules/dhcpc-busybox/data/opt/openslx/scripts/udhcpc-openslx +++ b/core/modules/dhcpc-busybox/data/opt/openslx/scripts/udhcpc-openslx @@ -147,6 +147,11 @@ case "$1" in sed -i "/^SLX_NET_SEARCH=/d" /opt/openslx/config echo "SLX_NET_SEARCH='$search'" >> /opt/openslx/config fi + # Same for WINS servers + if [ -z "$SLX_NET_WINS" ] && [ -n "$wins" ]; then + sed -i "/^SLX_NET_WINS=/d" /opt/openslx/config + echo "SLX_NET_WINS='$wins'" >> /opt/openslx/config + fi # Only if network is not ready yet if [ ! -e "/run/network/network-ready" ]; then diff --git a/core/modules/run-virt/data/opt/openslx/scripts/systemd-run_virt_env b/core/modules/run-virt/data/opt/openslx/scripts/systemd-run_virt_env index f53983ec..68afd189 100755 --- a/core/modules/run-virt/data/opt/openslx/scripts/systemd-run_virt_env +++ b/core/modules/run-virt/data/opt/openslx/scripts/systemd-run_virt_env @@ -172,16 +172,30 @@ for wait in 1 1 2 2 3 end; do . /opt/openslx/config done +getips () { + # Output in one line by using echo without quotes + echo $(nslookup "$1" 2>/dev/null | grep -A 3 '^Name:' | grep '^Address .*: ' | awk '{print $3}') +} + # read the DNS configuration and configure the udhcpd [ -z "${SLX_DNS}" ] && SLX_DNS="8.8.8.8 8.8.4.4" [ -z "${SLX_NET_DOMAIN}" ] && SLX_NET_DOMAIN="virtual.site" [ -z "${SLX_NET_SEARCH}" ] && SLX_NET_SEARCH="virtual.site" -sed -i "s#%DNSSERVER%#${SLX_DNS}#;s#%DOMAIN%#${SLX_NET_DOMAIN}#;s#%SEARCH%#${SLX_NET_SEARCH}#" "${DHCP_NAT_CONF}" +# WINS - if not supplied, try to get it from the search base of our ldap config +if [ -z "${SLX_NET_WINS}" ]; then + DC=$(grep -m1 -i '^BASE\s*DC=' "/etc/ldap.conf" | grep -o -i 'DC=.*' | sed -r 's/\s*,\s*DC=/./gI;s/^\s*DC=//I') + [ -z "$DC" ] && DC=$(grep -m1 -i '^ldap_search_base\s*=\s*DC=' "/etc/sssd/sssd.conf" | grep -o -i 'DC=.*' | sed -r 's/\s*,\s*DC=/./gI;s/^\s*DC=//I') + [ -n "$DC" ] && SLX_NET_WINS=$(getips "$DC") +fi +[ -z "${SLX_NET_WINS}" ] && SLX_NET_WINS=$(getips "$SLX_NET_DOMAIN") +[ -z "${SLX_NET_WINS}" ] && SLX_NET_WINS="0.0.0.0" +sed -i "s#%DNSSERVER%#${SLX_DNS}#;s#%DOMAIN%#${SLX_NET_DOMAIN}#;s#%SEARCH%#${SLX_NET_SEARCH}#;s#%WINS%#${SLX_NET_WINS}#" "${DHCP_NAT_CONF}" # Make sure the primary vm running (we most likely never run more than one at a time anyways) always gets the same ip echo "static_lease $(echo "$MACADDRPREFIX:$MACADDRSUFFIX" | sed 's/%VMID%/01/') 192.168.101.20" >> "${DHCP_NAT_CONF}" mkdir -p /var/lib/udhcpd +# TODO: systemd udhcpd -S "${DHCP_NAT_CONF}" # creating and configuring vsw2 diff --git a/core/modules/run-virt/data/opt/openslx/vmchooser/config/udhcpd-nat1.conf b/core/modules/run-virt/data/opt/openslx/vmchooser/config/udhcpd-nat1.conf index 95d8ebc0..27aa63c3 100644 --- a/core/modules/run-virt/data/opt/openslx/vmchooser/config/udhcpd-nat1.conf +++ b/core/modules/run-virt/data/opt/openslx/vmchooser/config/udhcpd-nat1.conf @@ -34,7 +34,7 @@ pidfile /var/run/udhcpd-nat1.pid option dns %DNSSERVER% option subnet 255.255.255.0 option router 192.168.101.1 -option wins 192.168.101.10 +option wins %WINS% option domain %DOMAIN% option search %SEARCH% option lprsrv 192.168.101.1 -- cgit v1.2.3-55-g7522