Tuesday, October 20, 2015

[NIS Server/ Clients]: NIS : Linux central authentication

NIS : Linux central authentication

NIS, (Network Information Services), enables account logins and other services (host name resolution, xinetd network services configuration, ...), to be centralized to a single NIS server.
This tutorial covers the configuration and use of NIS for login authentication. NIS+ is slightly more complex as it uses encryption for the data transfers between the NIS server and NIS client. Regular NIS does not use encryption, thus it should only be used for isolated or private networks protected by a firewall.

NIS Description:
NIS allows a central server to manage password authentication, host, services, etc which would normally be provided by the local files /etc/passwd/etc/shadow/etc/groups/etc/hosts/etc/services/etc/networks,/etc/rpc/etc/protocols/etc/aliases (sendmail), ...
NIS Client systems look to the NIS server to provide this data. This tutorial will cover the configuration of both an NIS server and NIS clients.
The logical cluster of the server and clients are known as an NIS "domain".
An NIS domain must have their time synchronized, usually using NTP (Network Time Protocol). 

NIS server configuration:
Requires RPM packages:
  • ypbind - RPC port binding service
  • portmap - RPC port mapping
  • ypserv - NIS server daemons
  • yp-tools - NIS support commands (ypcat, yppasswd, ypwhich, ...)
  • nscd - Handles password and group lookups and caches the results. Used by LDAP and NIS. Configuration of nscd defines which files are supported by NIS. i.e. authentication requires passwd, shadow and group file support. Uses configuration file /etc/ncsd.conf
The following configuration assumes that the NIS server will also be using NIS for authentication.
File: /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=hostname-of-this-nis-server
NISDOMAIN=name-of-domain
                
File: /etc/yp.conf
Example:
domain lab2 server 127.0.0.1
Format:
domain name-of-domain server 127.0.0.1
Where 127.0.0.1 is the "localhost" IP address of the NIS server. In this configuration, this NIS server is using NIS to authenticate logins, not just the client.
File: /etc/nsswitch.conf
passwd:     files nis
shadow:     files nis
group:      files nis
Order by which authentication methods are processed. eg. In this case, check the local /etc/passwd file first before checking with NIS for password authentication. It is recomended that the root password be authenticated locally using "files" with all other users authenticated using NIS.
File: /etc/ypserv.conf
dns: no
files: 30
slp: no
slp_timeout: 3600
xfr_check_port: yes
* : * : shadow.byname : port
* : * : passwd.adjunct.byname : port 
File: /var/yp/securenets
Configuration authorizes only a single subnet to authenticate with the NIS server:
host 127.0.0.1
255.255.255.0   XXX.XXX.XXX.0
The "host" statement allows access for a specified single host.Configuration to allow two subnets to authenticate with the NIS server:
host 127.0.0.1
255.255.254.0   192.168.105.0
                
Allows the range of IP addresses 192.168.105.0 to 192.168.106.255 to authenticate with the NIS server.Configuration to allow everyone to authenticate with the NIS server:
255.0.0.0   127.0.0.0
0.0.0.0     0.0.0.0

File: /var/yp/nicknames
Note: This is the default from the initial RPM installation and does not require any change for most configurations.

passwd          passwd.byname
group           group.byname
networks        networks.byaddr
hosts           hosts.byname
protocols       protocols.bynumber
services        services.byname
aliases         mail.aliases
ethers          ethers.byname
As root, issue the following configuration commands:
# nisdomainname name-of-domain
# service portmap restart
# service yppasswdd start
# service ypserv start
# /usr/lib/yp/ypinit -m
# make -C /var/yp
# service ypbind start
                
Where:
  • The nisdomainname command creates the "NISDOMAIN" entry in /etc/sysconfig/network This is usually configured during Linux OS installation. Note the commands nisdomainname, ypdomainname anddomainname all are soft eqivalent. Without specifying an argument, the command returns the domain name.
    nisdomainname man page
  • Network server services:
    • portmap: RPC network communications services
    • yppasswd: Password daemon which allows users to change their NIS passwords on the server from their client systems.
    • ypserv: NIS server daemon
    • ypbind: NIS client daemon
  • ypinit -m: Configure the NIS server as a "master NIS server" with the option "-m". This will convert /etc/passwd/etc/shadow, hosts, ... files into NIS GNU dbm database format and generates a make file. Traditional Unix systems use ndbm database format.
    ypinit man page
  • The command "make -C /var/yp" is equivalent to:
    • cd /var/yp
    • make
  • NIS Clients:
    • ypbind: NIS client
See the YoLinux tutorial on the Linux init process and configuring your system to start services upon system boot.
Test:
  • Check if portmapper daemon is running and ypbind is a registered service: rpcinfo -u localhost ypbind 
    program 10007 version 1 ready and waiting
    program 10007 version 2 ready and waiting
        


NIS client configuration:
Requires RPM packages:
  • ypbind
  • portmap
  • yp-tools
  • nscd
File: /etc/sysconfig/network
(RHEL, Fedora, CentOS, ... Red Hat based Linux systems)

NETWORKING=yes
HOSTNAME=client-hostname
NISDOMAIN=name-of-domain
File: /etc/yp.conf
Example:
domain lab2 server 192.168.20.5
Format:
domain name-of-domain server XXX.XXX.XXX.XXX
Where XXX.XXX.XXX.XXX is the IP address of the NIS server.
Man page: yp.conf
File: /etc/nsswitch.conf
...
...

passwd:     files nis
shadow:     files nis
group:      files nis

...
...
Options:
  • compat: Use compatibility setup
  • nisplus: Use NIS+ (NIS version 3)
  • nis: Use NIS (NIS version 2), also called YP
  • dns: Use DNS (Domain Name Service)
  • files: Use the local files /etc/passwd, /etc/group, ...
  • [NOTFOUND=return]: Stop searching if not found so far
Man page: nsswitch.conf
Create domain with the command: nisdomainname name-of-domain
Start NIS client services:
  • service portmap restart
  • service ypbind start
  • service nscd start (optional - used to cache login and passwd info to improve authentication response time)
Test:
  • Check if portmapper daemon is running and ypbind is a registered service: rpcinfo -u localhost ypbind
  • List passwd file: ypcat passwd
[Potential Pitfall]: If you find that the daemon ypbind on a client is crashing on a network which extends great distances, has heavy traffic or is unreliable, try starting ypbind with the option "-no-ping".
Red Hat configuration fix, edit file: /etc/init.d/ypbind
change to:

... OTHER_YPBIND_OPTS="-no-ping" ...
This will keep ypbind from checking its network connection unnecessarily.

Red Hat GUI client configuration:

GUI tool: /usr/bin/system-config-authentication Select the "Configure NIS ..." button:



NIS and system users:

User Administration:

Add a new user: (as root on NIS server)
  • useradd -g user-group user-id
    (or, also create home directory: useradd -m -g user-group user-id)
  • make -C /var/yp
    Updates local NIS databases.
Changing a password for a user: yppasswd -p user-id

User password management:

Users will now change their passwords using the NIS password command yppasswd instead of the local password file affected command, passwd. When using an NIS slave (described below), then do not modify the password while logged into the NIS master.Also see the YoLinux.com tutorial: Web CGI interface to manage NIS passwords.



NIS maintenance scripts:
Read NIS database files and generate traditional /etc/passwd and /etc/shadow files.
File: nis2pass

1#!/bin/bash
2 
3/usr/lib/yp/makedbm -u /var/yp/name-of-domain/passwd.byname | awk -F':' '{split($1,userid," ");print userid[1] ":x:" $3 ":" $4 ":" $5 ":" $6 ":" $7}' passwd
4 
5/usr/lib/yp/makedbm -u /var/yp/name-of-domain/passwd.byname | awk -F':' '{split($1,userid," ");print userid[1] ":" $2 ":13539:0:99999:7:::"}' > shadow
Man pages:
  • makedbm - Create or dump a ypserv database file
    Example: makedbm -u dbname
  • getent - Get entries from administrative database
    Example: getent database [key ...]

Hostname resolution:
It is the predominant practice to use DNS (bind) for hostname resolution. See the YoLinux DNS / Bind configuration tutorial
NIS is capable of performing host name resolution and so is LDAP.
Best Practice: Use DNS for general host resolution and the use the local file /etc/hosts to resolve the host name of the NIS server. This improves performance so that host name resolution of the NIS server does not require a network connection.
Configuring a NIS client to use NIS for host name resolution:
File: /etc/nsswitch.conf
...
...

hosts:     files nis

...
...
This configuration has the system look at the file /etc/hosts for a host name and then it looks to the NIS server.

Configuring an NIS Master - Slave failover server:
One can create a redundant failover slave server to improve network robustness. The NIS clients will be configured with an additional host in /etc/yp.conf.
Client File: /etc/yp.conf
domain name-of-domain server XXX.XXX.XXX.XXX
domain name-of-domain server ZZZ.ZZZ.ZZZ.ZZZ
                
Where XXX.XXX.XXX.XXX is the IP address of the NIS master server
and ZZZ.ZZZ.ZZZ.ZZZ is the IP address of the NIS slave server.
In addition, the NIS master and slave servers must arrange for NIS database transfers to stay synchronized. The configuration of the NIS servers are the same as for the above single master with the following additions and/or changes:

NIS Master:

  • NIS master file: /etc/ypservers
    host-name-of-nis-master
    host-name-of-nis-slave
                        
  • Edit NIS master Makefile to allow database push to slave: /var/yp/Makefile
    NOPUSH=false
  • After performing the NIS server procedures above, start the additional database transfer daemon:
    service ypxfrd start
  • Push configuration change notification to clients: yppush
    Perform this after updates to NIS master.
    yppush man page

NIS Slave:


  • /usr/lib/yp/ypinit -s nis-master-hostname: Configure the NIS server as a "slave NIS server" with the option "-s" and state the "master" from which the NIS database transfer will occur.
    Note: This is a change from the above single NIS master configuration.
  • Start the additional database transfer daemon: service ypxfrd start
Man pages:
  • nisdomainname - show or set the system’s NIS/YP domain name
  • ypinit - NIS database install and build program
  • yppush - Push configuration change notification to clients.
  • revnetgroup - Generate reverse netgroup data
  • ypserv - NIS server
  • ypxfr - Transfer NIS database from remote server to local host
  • ypinit - NIS database install and build program
  • yppoll - Return version and master server of a NIS map
  • ypset - Bind ypbind to a particular NIS server
  • ypcat - Print values of all keys in a NIS database
  • ypwhich - Return name of NIS server or map master
  • ypmatch - Print the values of one or more keys from a NIS map
  • yptest - Test NIS configuration
  • yppasswd - (Also: ypchfn, ypchsh) - Change NIS password in the NIS database
  • yppasswdd - NIS password update daemon
  • ypxfrd - NIS map transfer server for NIS master/slave servers.
  • ypserv - NIS server
  • ypbind - NIS binding process
  • nscd - Name service cache daemon
Configuration Files:
  • /etc/yp.conf
  • /etc/ypserv.conf
  • /etc/netgroup
  • /etc/nscd.conf
  • /etc/nsswitch.conf
  • /etc/nickname
Glossary:
  • NSS: Name Service Switch. The /etc/nsswitch.conf, determines the order of lookups performed.
  • RPC: Remote Procedure Call. RPC routines allow C programs to make procedure calls on other machines across the network.
  • YP: Yellow Pages(tm), a registered trademark in the UK of British Telecom plc. forcing Sun to rename it to NIS. The NIS commands retain the "yp" prefix.
  • HostName: The name of the computer system. This is typically configured using Linux OS installation.
  • Host Name Resolution: The lookup by a client to find the IP address given the host name so that it can create a network connection.
courtesy: http://www.yolinux.com/


Thursday, October 15, 2015

[KickStart Installation]: Quick HOWTO : Network-Based Linux Installation

Quick HOWTO : Network-Based Linux Installation


Introduction

Fedora Linux allows you to do operating system installations via a network connection using a Kickstart server. It is frequently much faster than using CDs and the process can be automated. The procedure is fairly simple:
  • Connect the new server (installation client) to the same network as the server with the pre-loaded installation files (installation server).
  • Boot the installation client from a specially created boot CD
  • Enter your preferred installation method (FTP, HTTP, NFS) and the needed network parameters to do this
  • The installation procedure will then continue with the more familiar Fedora Linux installation screens. Enter your selections and then complete the installation.
This chapter will briefly explain how to set this up using all three methods using a single installation server (bigboy) with an IP address of 192.168.1.100.

Setting Up The Kickstart Server

Kickstart can be configured on an FTP, NFS or Apache server. Each method is explained below, but my experience has been that the Apache server has a number of advantages over the other two.
Using a web server for kickstart is generally easier because:
  • Sometimes a kickstart server has to be located on a remote network, often passing through a firewall. Strict firewall rules for HTTP are generally easier to configure than those for FTP or NFS.
  • The http:// nomenclature used by kickstart for accessing files is more familiar to users than that used for NFS and FTP. This may be important for you when configuring files for automated kickstart installation.

Basic Preparation

In this example we are going to set up a kickstart server that will be used in Fedora Core installations. All the necessary files will be placed in the /data/network-install directory.

Create The Installation Directories

We'll first create the directories /data/network-install/RPM and /data/network-install/ISO in which we will copy the necessary files.
[root@bigboy tmp]# mkdir -p /data/network-install/RPM
[root@bigboy tmp]# mkdir -p /data/network-install/ISO
You now need to place the network installation driver files into the base directory.

Copying The Files

The HTTP, NFS and FTP kickstart methods all require the base set of Fedora files to be installed on the kickstart server. Here's how to do it:
1) Create a mount point for your CD ROM drive.
[root@bigboy tmp]# mkdir /mnt/cdrom
2) Mount your first Fedora CD ROM.
[root@bigboy tmp]# mount /dev/cdrom /mnt/cdrom
3) Copy the files from the CD ROM base directory to the hard disk
[root@bigboy tmp]# cp -r /mnt/cdrom/* /data/network-install/RPM
4) Unmount your CD ROM and use the eject command to retrieve it from the drive bay.
[root@bigboy tmp]# umount /dev/cdrom
[root@bigboy tmp]# eject cdrom
5) Repeat steps 2 to 4 with all your CDROMs. Overwrite files when prompted.
Note: Note: You also have the option to FTP all the files of the desired version of Fedora from the Fedora website to the /data/network-install/RPM directory.

HTTP & FTP Preparation

Copy all the contents of each installation CD to the /data/network-install/RPM directory. This will require about 3-5 GB of space. When this is completed, your /data/network-install/RPM directory should look like this:
[root@bigboy tmp]# ls -1 /data/network-install/RPM
eula.txt
Fedora
fedora.css
GPL
images
index.html
isolinux
README-Accessibility
RELEASE-NOTES-en_US.html
repodata
RPM-GPG-KEY
RPM-GPG-KEY-beta
RPM-GPG-KEY-fedora
RPM-GPG-KEY-fedora-extras
RPM-GPG-KEY-fedora-legacy
RPM-GPG-KEY-fedora-rawhide
RPM-GPG-KEY-fedora-test
RPM-GPG-KEY-rawhide
stylesheet-images 
[root@bigboy tmp]#

NFS Preparation

Create ISO images of the installation CDs and place them in the /data/network-install/ISO directory. This will require about 3-5 GB of space as well. You can download the ISO images from the Fedora website or use the Fedora CDs as shown below. If you create the ISOs files from CDs, make sure they have the same file names as the ones you can download from the Fedora Web site.
Follow these steps for each CD, substituting the filename where necessary:
[root@bigboy tmp]# cd /data/network-install/ISO
[root@bigboy ISO]# dd if=/dev/cdrom of=filename.iso bs=32k
...
...
[root@bigboy ISO]# eject cdrom
Note: Here is a sample procedure to make ISO files with the older mkisofs command. You may have to install the mkisofs RPM on newer Fedora versions. The command requires a mounted CDROM drive, so don't forget the mount command.
[root@bigboy ISO]# mount /mnt/cdrom
[root@bigboy ISO]# mkisofs -J -r -T -o filename.iso /mnt/cdrom
[root@bigboy ISO]# eject cdrom

Setup Your Webserver

You will now have to setup Apache to give the file listings of your /data/network-install/RPM and /data/network-install/ISO directories by pointing your browser to the URL http://192.168.1.100/network-install/RPM/ or http://192.168.1.100/network-install/ISO/respectively. A sample /etc/httpd/conf.d/kickstart.conf configuration is below. Remember to restart Apache to make these settings take effect.
NameVirtualHost 192.168.1.100
 
#
# For HTTP Installations
#
<VirtualHost 192.168.1.100>
  ServerName 192.168.1.100
  DocumentRoot /data/
</VirtualHost>

<Directory /data/network-install>
   Options +Indexes
   AllowOverride AuthConfig
   order allow,deny
   allow from all
</Directory>

Setup Your FTP Server

You'll also have to set up your VSFTPD server to make incoming anonymous FTP connections log in to the /data/network-install/RPMdirectory by default. You will also want to enable the correct logging. Here is a sample snippet of the vsftpd.conf file. Remember to restart VSFTPD to make these settings take effect
#
# File: vsftpd.conf
#

#
# Anonymous FTP Root Directory
#

anon_root=/data/network-install/RPM

#
# Log file definition
#

xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log

Create A Special FTP User

You can also create a special user for non anonymous FTP installations with its home directory as "/". You must also make sure that the user has read access to the /data/network-install directory. An example is below.
[root@bigboy tmp]# useradd -g users ftpinstall
[root@bigboy tmp]# passwd ftpinstall
Changing password for user ftpinstall.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
[root@bigboy tmp]#
[root@bigbot tmp]# usermod -d / ftpinstall
[root@bigbot tmp]#

Setup Your NFS Server

The steps for setting up an NFS server are more complicated.
1) Create a /etc/exports file with the following entry in it. You must use tabs, not spaces between the entries
/data/network-install    *(ro,sync)
2) Make sure that the rpcbind (portmap on older versions of Linux) , nfs, nfslock and netfs daemons are all running to create an NFS server. The startup scripts for these are found in the /etc/init.d directory. Chapter 29, "Remote Disk Access with NFS", will explain this in more detail.
3) Run the exportfs command to add this directory to the NFS database of network available directories.
[root@bigboy tmp]# exportfs -ra
4) The installation client must have a matching pair of forward and reverse DNS entries on your DNS server. In other words, a DNS lookup on the IP address of the installation client must return a server name that will map back to the original IP address when a DNS lookup is done on that same server name.
[root@bigboy tmp]# host 192.168.1.96
96.1.168.192.in-addr.arpa domain name pointer 192-168-1-96.my-site.com.
[root@bigboy tmp]#
 
[root@bigboy tmp]# host 192-168-1-96.my-site.com
192-168-1-96.my-site.com has address 192.168.1.96
[root@bigboy tmp]#
This may mean that you will have to create entries for all your DHCP IP addresses if you choose to use a DHCP method of assigning IP addresses during installation.

Configure Your DHCP Server

During the installation procedure, the installation client will prompt you for the IP address it should use for the installation process. I recommend selecting the option that makes the Installation Client get its address via DHCP. This will automate the installation more and will therefore make it faster. It will also reduce the possibility of human error.
Setting up the Installation Server as a DHCP server is fairly straight forward and can be found in Chapter 8, "Configuring the DHCP Server".

Creating A Kickstart Boot CD

Creating a kickstart boot CD is easy to do. Here are the steps:
1. Your RPM directory should have a subdirectory named images in it. There will be a file there named boot.iso which is used in booting your system when installing Linux from DVD or CD. Fedora mirror sites that have directory structures similar to that of the DVD also have a boot.iso file located in the <fedora-version>/Fedora/i386/os/images/ directory. This file is different in both size and function to that on your DVD. It usually larger than 10 MB in size and it is the boot file you need for kickstart. Download the boot.iso file from your favorite mirror site using a utility like wget.
[root@bigboy tmp]# wget http://website.org/8/Fedora/i386/os/images/boot.iso
2. You will now need the device name of your CDROM device. This can be obtained using the wodim command. In this case it is called /dev/scd0.
[root@bigboy tmp]# wodim --devices
wodim: Overview of accessible drives (1 found) :
-------------------------------------------------------------
 0  dev='/dev/scd0'     rwr--- : 'LITE-ON' 'DVDRW LH-20A1P'
-------------------------------------------------------------
[root@bigboy tmp]#
3. Insert a blank CD. The wodim command can now be used again to burn the boot.iso ISO image file to the CD.
[root@bigboy tmp]# wodim dev=/dev/scd0 driveropts=burnfree,noforcespeed \
fs=14M -dao -eject -overburn -v boot.iso
...
...
...
BURN-Free was never needed.
wodim: fifo had 6 puts and 6 gets.
wodim: fifo was 0 times empty and 0 times full, min fill was 100%.
[root@bigboy RPM]# 
Keep the CD. You will soon need it for your kickstart client machine.

The Network Installation

From here on, the installation procedure mimics the regular Linux installation, except for the first couple steps.
  • Connect your client Linux box to the DHCP network.
  • Boot your system using the kickstart boot CD. This is the only CD you'll need for future network installations.
  • A menu will appear. Select “Install or upgrade an existing system”.
  • Go through the usual steps until the process prompts for the "Installation Method". You will see a number of choices
Local CDROM
Hard Drive
NFS Image
FTP
HTTP
  • Select the network option of your choice (NFS, FTP, HTTP)
  • Select the Ethernet device to which the installation client is connected to the installation server network. This would most likely be interface "eth0".
  • Select "DHCP" in the following "Configure TCP/IP" screen. This will make the Installation client use DHCP during the installation.

If You Selected The NFS Method

You will now reach the "NFS setup" menu. Enter the IP address of the installation server as the "NFS Server Name". The "Red Hat directory" will be "/data/network-install/ISO". The following menus will be the usual Fedora GUI installation screens.

If You Selected The HTTP Method

You will now reach the "HTTP Setup" menu. Enter the IP address of the installation server when prompted for a "Web site name".The "Red Hat directory" will be /network-install/RPM. The following menus will be text based versions of the usual Fedora installation screens.
During the installation, issue the following command on the server to check the Apache logs. It will help to verify whether the kickstart client is accessing the files correctly. You should get a status code of 200<code> after each GET statement. You should retrace your steps if you are not.
[root@bigboy tmp]# tail -f /var/log/httpd/access_log
192.168.1.247 - - [12/Nov/2006:12:01:04 -0800] "GET /network-install/RPM/repodata/repomd.xml HTTP/1.1" 200 1140 "-" "urlgrabber/2.9.9"
192.168.1.247 - - [12/Nov/2006:12:01:05 -0800] "GET /network-install/RPM/repodata/primary.xml.gz HTTP/1.1" 200 844228 "-" "urlgrabber/2.9.9"
192.168.1.247 - - [12/Nov/2006:12:01:19 -0800] "GET /network-install/RPM/repodata/comps.xml HTTP/1.1" 200 853899 "-" "urlgrabber/2.9.9"

If You Selected The FTP Method

You will now reach the "FTP Setup" menu. Enter the IP address of the installation server as the "FTP Site Name".
  • "Not Selecting" The Non-Anonymous FTP Box
The "Red Hat directory" will be "/". The following menus will be text based versions of the usual Fedora installation screens.
  • "Selecting" The Non-Anonymous FTP Box
The "Red Hat directory" will be "/data/network-install/RPM". Enter the username and password of your special FTP user account. The following menus will be text based versions of the usual RedHat installation screens.
Note: During the installation, issue the following command on the server to check the FTP logs. It will help to verify whether the kickstart client is accessing the files correctly.
[root@bigboy ~]# tail -f /var/log/vsftpd.log 
Sun Nov 12 20:53:12 2006 1 192.168.1.231 1140 /data/network-install/RPM/repodata/repomd.xml b _ o r ftp-install ftp 0 * c
Sun Nov 12 20:53:21 2006 2 192.168.1.231 844228 /data/network-install/RPM/repodata/primary.xml.gz b _ o r ftp-install ftp 0 * c
Sun Nov 12 20:53:40 2006 2 192.168.1.231 853899 /data/network-install/RPM/repodata/comps.xml b _ o r ftp-install ftp 0 * c

Troubleshooting The Network Installation

You can do some basic troubleshooting by accessing the various installation status screens available.
  • The installation logs can always be viewed by hitting <CTRL-ALT-F3>
  • Kernel messages can be seen by hitting <CTRL-ALT-F4>
  • Access to a limited BASH shell Kernel can be gained by hitting <CTRL-ALT-F2>
  • You can return to the main installation screen at any time by hitting <CTRL-ALT-F1> for text based installations and <CTRL-ALT-F7> when the GUI is used.
  • Examine your server's <code>/var/log/httpd/access_log/var/log/httpd/error_log files for the HTTP method; the/var/log/vsftpd.log file for the FTP method; and your /var/log/messages file for the NFS method.

Automating Installation With Kickstart

Both Fedora and RedHat Linux save all the parameters you used during installation in the /root/anaconda-ks.cfg kickstart configuration file. You can use this file to create an automated installation of a duplicate system which can be useful if you have a large number of servers to install.
This section shows you how to automate network installations using the kickstart application and NFS. You can use HTTP and FTP but they have been omitted to keep the discussion brief.

How To Create New Kickstart Configuration Files

You can create a customized kickstart configuration file by using the "ksconfig" command from a GUI console. It will bring up a menu from which you can select all your installation options. When finished, you save the configuration with the filename of your choice.
You may want to then edit the configuration file and comment out certain parameters that may change from system to system with a "#". These could include things like the system's name and IP address. During the kickstart process you will be prompted for these unspecified values.
Note: Do not change the order of the entries in the kickstart configuration file.
Note: The IP address you assign must be on the same subnet as that of the DHCP server for kickstart to work. If the server is going to reside on a different network after the installation, then you'll have to run a separate script to change the IP addressing information after the installation is complete.

Adding Post Installation Commands

You may want to run some commands on the newly created Linux installation after kickstart is complete. Some processes that are activated by default by Fedora may not be suitable for your server and may need to be disabled.
This can be done by placing a %post section at the end of the kicksrart file with all the post installation commands you wish to run. Here is an example:
%post
chkconfig isdn off
chkconfig pcmcia off
chkconfig portmap off
chkconfig apmd off
chkconfig nfslock off
chkconfig nfs off

A Note About Using anaconda-ks.cfg

It is possible to use the /root/anaconda-ks.cfg file as a template for future installations. RedHat comments out the partitioning information in this file, so you will either have to uncomment it and then make your partitioning modifications or be prepared to be prompted for your portioning information.

How To Run A Kickstart Installation

It is best to place your kickstart files in a subdirectory under the /data/network-install directory. The examples below assume the subdirectory is called /data/network-install/kickstart.
Remember that you may want to remove the "#" comments from the partition section of the file. If not, you will be prompted for this information.

Using a NFS Server

Verify that the first two lines of the file look like this or else you may be prompted for NFS ISO file location information.
install
nfs --server=192.16.1.100 --dir=/data/network-install/ISO

Using a Web Server

Verify that the first two lines of the file look like this or else you may be prompted for RPM base file location information.
install
url --url http://192.168.1.100/network-install/RPM

Booting With Your Kickstart Files

There are two ways to specify the name of the kickstart file to use. The first is to enter it manually from the LILO boot: prompt when you insert the boot CD. The second is to have your DHCP server automatically tell the Kickstart client about the name of the kickstart file to use when it assigns the IP address. Both methods are listed below:
Manually Specifying the Kickstart Filename
Once you have booted from your boot CDROM, you'll need to use the following command at the lilo boot: prompt to continue with the installation. The ks.cfg file is the kickstart configuration file we want to use.
NFS Method
boot: linux ks=nfs:192.168.1.100:/kickstart/ks.cfg
HTTP Method
boot: linux ks=http://192.168.1.100/network-install/kickstart/ks.cfg
Configuring The Filename Automatically
Whenever you have to create lots of cloned Linux servers, then you may want to configure your DHCP server to specify the single kickstart configuration file you wish to use. Here is how it's done:
1) Place your kickstart file in the /data/network-install/kickstart directory.
2) Edit your dhcpd.conf file and add the following lines to the section for the interface that will be serving DHCP IP addresses. The next-server value is the IP address of the kickstart server.
filename "/data/network-install/kickstart/ks.cfg";
next-server 192.168.1.100;
3) Insert the boot CD into the kickstart client Linux box and connect it to the DHCP network. At the boot: prompt type in the following command:
boot: linux ks
Kickstart will first search for a configuration file named ks.cfg on either the boot CD. It will then automatically attempt to get a DHCP IP address and see if the DHCP server will specify a configuration file.
Kickstart will then use NFS to get both the configuration file and the installation ISOs. The rest should be automatic.

Conclusion

The Kickstart method of Fedora Linux installation can greatly reduce the length of time it takes to install the operating system. Time is saved not only because a network connection can be faster than using CDs, but also because it can be left unattended to install a predetermined Linux configuration. A Kickstart server connected to an isolated wireless network dedicated to the purpose may be a good idea for data centers with hundreds of Linux servers.
A recent standard called PXE allows you to run kickstart without a CD ROM if you configure the NIC card to do a network boot from a specially configured DHCP server. The topic is beyond the scope of this book, but it may be interesting for readers with more complex projects to research this option more.