The main changes that PC Xperience, Inc. has added to the LTSP project have been to make the workstations MAC Address be the uniqueness value instead of the hostname, providing transparent integration with LDAP and a migration path from the current lts.conf file to a slimmed down lts.conf file and LDAP. Backwards compatibility has been implemented in all areas of our project so that anyone who does not wish to move to an LDAP based solution may continue to use LTSP as it currently is designed but yet have the added features of Dynamic DNS, Swapping over NFS and the ability to migrate over to the LDAP solution at any time. To get the full advantage of our enhancements, you will need to use LDAP otherwise AutoConfiguration and the Web Based Administration tools will not be available for you to use.
Contents of our Distribution
The LTSP Enhancements package should contain the following files or directories:
/documentation - The HTML documentation. Also available online at our site.
/ltsp - The web administration web-site.
ltsroot2.tar.gz - our version of the ltsroot directory. (only in the full distribution)
/bin - our programs that enhance the LTSP project.
/dns - the Dynamic DNS Daemon programs.
lts.conf - An example lts.conf file.
rc.local - Our updated rc.local file.
ltsp.oc.conf - The LDAP schema file. (Built upon Adrian LikinsLDAP integration work.)
README - Describes what files should be in the package.
Detailed Overview
The LTSP Enhancements project provides an enhanced rc.local which uses several helper programs that we developed in Perl to make working with LDAP and the lts.conf file easier. (The LTS Server will require these Perl Modules to be installed: (Net::LDAP, Term::ReadKey). They can be gotten from CPAN.) The programs and enhanced features we are providing are as follows:
Version 1.0 & 1.1 Only
lts_parser - This program is a helper function that reads in the lts.conf file and parses it apart and puts the resulting sections and their attributes in a DB hash file for easier access by our programs. This eliminates having to parse the file every time you need to check for a specifc section and attribute value. This is called directly by rc.local.
lts_reader - This program is just to test to make sure that lts_parser is working correctly.
Version 1.0+
getltscfg_env - This program is called from rc.local and reads in all section and attribute values from the DB hash file and/or LDAP and then creates a source file that rc.local sources into existance. This source file contains all the section and attribute values in the format of _Default_AttributeName=Value or _Munged MAC Address_AttributeName=Value where Munged MAC Address is the Workstation MAC Address with all :'s replaced by _'s. Only the [Default] and the current Workstation settings are exported into the environment. This program will export the workstation settings if lts.conf and dhcp are still working in the old way, thus you will have the workstation name instead of the Munged MAC Address as part of the variable name. We modified the get_cfg function in rc.local to work with this Environment Variable naming scheme so that we only have to process lts.conf or LDAP once to get the values set for this workstation. If using LDAP the settings in LDAP for [Default] or the Workstation take precedence over any similar settings in lts.conf. If there are any [Default] or Workstation specific settings that are not in LDAP, the user will be prompted for the LDAP administrative password (during bootup) so that those settings can be migrated into the LDAP server. (This is the migration path from lts.conf to LDAP)
Version 1.2+ - The lts_parser functionality is now integrated into getlstcfg_env so that we are not calling Perl twice in a row and no longer need to create or work with the DB hash file.
setltscfgldap - This program is run from rc.local after we have gathered the necessary information via our Auto Configuration process to setup the workstation in LDAP. This will only be used if LDAP support is enabled.
modified rc.local - We added helper functions promptYESNO and promptRESPONSE which make asking the user for information a little more enjoyable for the programmer. We modified get_cfg to work with our helper functions. We added an Auto Configuration Mode so that the workstation can be configured if it is not already created in LDAP or if not using LDAP can use the [Default] settings to work with. Added support for Swapping over NFS and made the creation of the swap files a part of the bootup process (if they are using NFS Swapping and the swap file is not created.) Added Dynamic DNS support and the ability to create the /etc/resolv.conf file if so configured.
modified lts.conf - We added more Attribute pairs that allow the workstation to be customizable in regards to the following items:
CONFIGURE=Y/N - In [Default] allows any unconfigured workstation to attempt to go into Auto Configure Mode, in a workstation section it should never be set to Y (because this signals the workstation to go into Auto Configuration mode which will attempt to Create the entry in the LDAP server and if the entry already exists this will fail). If set to N in [Default], any new workstation will not be Auto Configured! This is probably not want you want! After a workstation is Auto Configured our program will set the CONFIGURE flag to N for that workstation so that it does not attempt to configure itself the next time it reboots. If you must make any changes, use the Web Based Configuration Program. This applies to LDAP only.
BUILD_XF86CONFIG_FILE=Y/N - Says to build the XF86Config file from the settings. If N, then XF86CONFIG_TEXT must be specified and must contain the path to the XF86Config file to use.
HOME_DIR_SERVER=IP Address - For LOCAL_APPS allows each workstation to designate it's own server to connect to for it's /home directory.
USE_NFS_SWAP=Y/N - Allows the Administrator to say if the default is to use NFS Swapping or on a per workstation basis to turn it on or off. (For NFS Swapping to work, NFS_SWAP_SERVER, NFS_SWAP_PATH, and NFS_SWAP_KERNEL_VER must also be specified.)
NFS_SWAP_SERVER=IP Address - The IP Address of the Server to connect to for the NFS Swap share point.
NFS_SWAP_PATH=nfs export path - The path that points to the NFS Swap files that are exported for the workstations to use. (Ex. NFS_SWAP_PATH=/var/swap)
NFS_SWAP_KERNEL_VER=kernel version - The kernel version for all workstations or on a per workstation basis that lets us know what module we need to insmod in rc.local to get NFS Swapping enabled. (Ex. NFS_SWAP_KERNEL_VER=2.2.14)
LDAP_HOST=IP Address - The IP Address of the LDAP host to work with.
BASE_DN=Base Distinguished Name that is prefixed for each item we need to work with - We assume we are working with an ou but it does not have to be ou=LTSP even though we recommend it. (Ex. BASE_DN=ou=LTSP,o=PC Xperience,c=US)
BIND_DN=The Distinguished Name of the LDAP administrative account - (Ex. BIND_DN=cn=root,o=PC Xperience,c=US)
DNS_SERVER=IP Address - The IP Address of the DNS Server to configure for /etc/resolv.conf.
DNS_SEARCH_PATH=search path - The Search path to use in /etc/resolv.conf for the client to know what domain it is in. (Ex. "DNS_SEARCH_PATH=zelda.pcxperience.com pcxperience.com" - without the "'s.)
DNS_DAEMON_HOST=IP Address - The IP Address of the Server that is running our Dynamic DNS Daemon that allows the workstation to notify DNS of it's current hostname to IP mapping.
DNS_DAEMON_PORT=23456 - The Port that the workstation should connect to on the DNS_DAEMON_HOST machine to contact our daemon. The Dynamic DNS Daemon will also have to be modified if the default value is changed. This should only be specified in the [Default] section unless multiple machines are to be configured and each workstation gets a complete DNS_DAEMON_HOST and DNS_DAEMON_PORT pair of values (if necessary).
DYNAMIC_DNS_DOMAIN_NAME=domain name - This is the domain name that is appended to the WORKSTATION_NAME for each workstation to make the fully qualified domain name (fqdn) to send to our Dynamic DNS Daemon to have DNS updated with. Leave off the leading period as we insert one when creating the fqdn. This should also only be defined in [Default].
WORKSTATION_NAME=hostname - This is the name of the workstation minus the domain it is in. If DYNAMIC_DNS_DOMAIN_NAME, DNS_DAEMON_HOST, and DNS_DAEMON_PORT are all specified then this will cause the Dynamic DNS update to occur for this workstation. (Ex. WORKSTATION_NAME=test1)
dns_ltsp - The Dynamic DNS Daemon we developed that listens for the client to connect from the workstation during bootup and then gathers the supplied hostname and IP Address of the workstation and notifies the DNS server to update the IP to Name and Name to IP mappings it has for the workstation.
dns_ltspd - The script that starts and stops the dns_ltsp daemon based upon the runlevel the machine is in.
dns_ltsp_client - The program that rc.local uses to contact our dns_ltsp daemon to update the hostname to IP mappings for the thin client.
Web Based Configuration Program - We developed a Web Based Configuration program to help maintain the LDAP related LTSP settings. All you have to do is have Apache
running and copy the /ltsp directory (from our distribution) into /home/httpd/html (RedHat default location) and be using LDAP and you should be able to begin administering your LTS installation within a matter of minutes. All you have to do is tell the program where the LDAP server is located and we will do the rest.
Notes:
NFS Mounting Issue - If you have configured DHCP to only give out IP's and the kernel to download and it is no-longer handing out a hostname for the workstation, then NFS will refuse to allow the workstation to mount it's root file system because it does not know about them. To fix this problem, add an entry in /etc/hosts for each IP you might hand out so that there is a IP and name listed. You do not have to use the name that the workstation will eventually have.