A Bare Metal Universal Provisioning Toolkit supporting Redhat/anaconda and Solaris(PXE and Sparc) OS Scripted Installation and Post-Install provisioning, hooks into existing OS tools and extentions. Focus is on automation for turn-key installations.
[Cold Metal at Sourceforge | Download/Project Site ]
Bare Metal Provisioning is the automated and usually scripted installation of a configured operating system onto a "bare metal" system with no operating system on it (or usually whiping the OS that was on it).
There are several modes of thought on system maintenance. Cold Metal is setup under the philosophy of very little patching, and more frequently OS images. This achieves several goals:
Although Cold Metal is designed to support frequent re-imaging of the operating system, the older school of thought of frequent patching is still highly prevalent. Cold Metal can also work in this mode, and infact still uses the OS patch methods for adding packages and patches during the post-install phase, rather than rebuilding a new package infrastructure.
Cold Metal uses existing tools wherever possible. This installation document is geared for Redhat, but Cold Metal has been installed in Solaris as well.
One user needs to be created: cmshare. This is the user that must own all of the files under the share folder. All other files may be owned by root.
Cold Metal has one install base directory. This can be located wherever you desire, although /data is recommended following the Abstract Application and Data Naming (AADN) methodology (although Cold Metal somewhat breaks this paradigm. Since most of what Cold Metal is composed of is source data and libraries, it is located in /data instead of /app). The base directory along with the coldmetal name is referred to as the $COLDMETAL_BASE variable. The structure of files and directories/folders within the COLDMETAL_BASE:
| bin/ | Top level administrative programs for Cold Metal |
| config/ | Cold Metal Configuration Files |
| log/ | program log files (note: network booted client logfiles are not stored here) |
| share/ | All shared/exported data (NFS and HTTP) |
| share/doc/ | Cold Metal Documentation |
| share/apps/ | Repository to store add-on applications which are loaded during post-install. |
| share/global-files/ | Repository for Provisioned files. |
| share/host-files/ | Repository for Provisioned host specific files. |
| share/lib/ | Cold Metal library files, bourne shell and perl. |
| share/os/ | Operating System install images. |
| share/profile/ | Cold Metal OS profiles. |
| share/systems/ | System Configuration database (MAC and Name) |
| share/tftpboot/ | TFTP boot for PXE and RARP Network booting. |
up2date -i dhcpIn Fedora use:
yum install dhcp
chkconfig dhcpd on
The Configuration File:%TFTPSERVER% = IP Address for the TFTP server %SUBNET% = Subnet, such as the private subnet 10.255.255.0 %NETMASK% = Network mask for subnet, typically 255.255.255.0 %BROADCAST% = Network mask for subnet, typically 10.255.255.255
Note: It is suggested to read up on the ISC DHCP server and to use static MAC address mappings within the DHCP config file, rather than the shown range of dynamic addresses.ddns-update-style none; ignore client-updates; subnet %SUBNET%.0 netmask %NETMASK% { #option routers 10.255.255.254; option subnet-mask %NETMASK%%; option broadcast-address %BROADCAST%; #option domain-name "domain.com"; #option domain-name-servers 10.0.0.99, 10.0.0.1; option time-offset -18000; #option ntp-servers ; #option netbios-name-servers ; range dynamic-bootp %SUBNET%%.200 %SUBNET%%.250; default-lease-time 21600; max-lease-time 43200; allow booting; allow bootp; class "pxeclients" { match if substring(option vendor-class-identifier, 0, 9) = "PXEClient"; next-server %TFTPSERVER%; filename "pxe/pxelinux.0"; } }
service dhcpd restart
up2date -i xinetd tftp-serverIn Fedora use:
yum install xinetd tftp-serverIf you just installed inetd, review what new ports are now to be listened to and verify it is what you want.
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /data/coldmetal/share/tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
chkconfig xinetd on
service xinetd restart
Locate the Apache configuration directory (Redhat default: /etc/httpd/conf.d). Create a file in this directory named 'coldmetal' with the contents below. Replace the variables:
The Apache configuration file:%SUBNET% = Subnet, such as the private subnet 10.255.255.0
<Location /cmshare>
order allow,deny
deny from all
</Location>
<Location ~ "/cmshare/(doc|os|profile)">
order allow,deny
allow from %SUBNET%
</Location>
cd /var/www/html ln -s /data/coldmetal/share cmshare
Note: Change %UID% to the Unix UID number for the cmshare account./data/coldmetal/share 10.0.0.0/24(ro,async,no_subtree_check,all_squash,anonuid=%UID%,anongid=%UID%)
Cold Metal is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License Version 2 as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.