mirror of
				https://github.com/xcat2/xcat-core.git
				synced 2025-10-25 00:15:43 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			2740 lines
		
	
	
		
			68 KiB
		
	
	
	
		
			Perl
		
	
	
	
	
	
			
		
		
	
	
			2740 lines
		
	
	
		
			68 KiB
		
	
	
	
		
			Perl
		
	
	
	
	
	
| #!/usr/bin/perl
 | |
| # IBM(c) 2012 EPL license http://www.eclipse.org/legal/epl-v10.html
 | |
| #-------------------------------------------------------
 | |
| 
 | |
| =head1	mkay4z
 | |
| 	
 | |
| 	Description: 	Create an autoyast template for Linux on System z.
 | |
| 	Author: 	Thang Pham (thang.pham@us.ibm.com)
 | |
| 	Returns:	Autoyast template
 | |
| 
 | |
|     Usage: 		mkay4z
 | |
|     Example: 	# ./mkay4z
 | |
|     
 | |
| =cut
 | |
| 
 | |
| #-------------------------------------------------------
 | |
| use strict;
 | |
| use warnings;
 | |
| 
 | |
| # Show help
 | |
| if (@ARGV > 0) {
 | |
| 	print <<END;
 | |
| Create an autoyast template to be used by xCAT for Linux on System z.
 | |
| Created by Thang Pham (thang.pham\@us.ibm.com)
 | |
| Version 0.2
 | |
| 
 | |
| IBM (c)2012 EPL license http://www.eclipse.org/legal/epl-v10.html
 | |
| END
 | |
| 	exit();
 | |
| }
 | |
| 
 | |
| # Show help
 | |
| print "Creating autoyast template for Linux on System z...\n";
 | |
| 
 | |
| # Get distro version
 | |
| my $version = '';
 | |
| while (!($version eq '10' || $version eq '11')) {
 | |
| 	$version = ask("Select SUSE Linux Enterprise Server version? (10 or 11) ");
 | |
| 	
 | |
| 	if (!($version eq '10' || $version eq '11')) {
 | |
| 		print "  Unknown value!\n";
 | |
| 	}
 | |
| }
 | |
| 
 | |
| # Get template path
 | |
| my $template_path = '';
 | |
| while (!$template_path) {
 | |
| 	$template_path = ask("Where do you want to place the template? (e.g. /tmp/custom.sles11.s390x.tmpl) ");
 | |
| 	
 | |
| 	if (!$template_path) {
 | |
| 		print "  A path for the template is needed!\n";
 | |
| 	}
 | |
| }
 | |
| 
 | |
| # Default dasd and partition configuration
 | |
| # Used for testing
 | |
| my %dasd_default = (
 | |
| 	'0.0.0100' => {
 | |
| 		'device_name' => '/dev/dasda',
 | |
| 		'type' => 'dasd_eckd_mod'
 | |
| 	},
 | |
| 	'0.0.0101' => {
 | |
| 		'device_name' => '/dev/dasdb',
 | |
| 		'type' => 'dasd_eckd_mod'
 | |
| 	}
 | |
| );
 | |
| my %partitions_default = (
 | |
| 	'/dev/dasda' => {
 | |
| 		'device_fs' => 'ext4',
 | |
| 		'device_size' => 'max',
 | |
| 		'device_mount' => '',
 | |
| 		'device_lvm' => 'VG'
 | |
| 	},
 | |
| 	'/dev/dasdb' => {
 | |
| 		'device_fs' => 'ext4',
 | |
| 		'device_size' => 'max',
 | |
| 		'device_mount' => '',
 | |
| 		'device_lvm' => 'VG'
 | |
| 	},
 | |
| 	'/dev/VG' => {
 | |
| 		'lvm' => {
 | |
| 			'lv_root' => {
 | |
| 				'name' => 'lv_root',
 | |
| 				'fs' => 'ext4',
 | |
| 				'mount' => '/',
 | |
| 				'size' => '4g'
 | |
| 			},
 | |
| 			'lv_opt' => {
 | |
| 				'name' => 'lv_opt',
 | |
| 				'fs' => 'ext4',
 | |
| 				'mount' => '/opt',
 | |
| 				'size' => 'max'
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| );
 | |
| 
 | |
| # Set default parameters for networking and root password
 | |
| # DHCP is set by default, but can changed based on user input
 | |
| my %parms = (
 | |
| 	'hosts' => {
 | |
| 		'localhost' => {
 | |
| 			'host_address' => '127.0.0.1',
 | |
| 			'name' => 'localhost'
 | |
| 		},
 | |
| 		'xcat' => {
 | |
| 			'host_address' => 'replace_host_address',
 | |
| 			'name' => 'replace_long_name replace_short_name'
 | |
| 		}	
 | |
| 	},
 | |
| 	'dns' => {
 | |
| 		'xcat' => {
 | |
| 			'hostname' => 'replace_hostname',
 | |
| 			'dhcp_hostname' => 'true',
 | |
| 			'dhcp_resolv' => 'true',
 | |
| 			'domain' => 'replace_domain',
 | |
| 			'nameserver' => 'replace_nameserver'
 | |
| 		}
 | |
| 	},
 | |
| 	'interfaces' => {
 | |
| 		'xcat' => {
 | |
| 			'bootproto' => 'dhcp',
 | |
| 			'device' => 'replace_device',
 | |
| 			'lladdr' => 'replace_lladdr',
 | |
| 			'chanids' => 'replace_ccw_chan_ids'
 | |
| 		}
 | |
| 	},
 | |
| 	'root_password' => 'replace_root_password',
 | |
| 	'software' => 'Minimal'
 | |
| );
 | |
| 
 | |
| # Configure interfaces (static or dhcp)
 | |
| my $dhcp = '';
 | |
| while (!($dhcp eq 'Y' || $dhcp eq 'y' || $dhcp eq 'Yes' || $dhcp eq 'yes' || $dhcp eq 'N' || $dhcp eq 'n' || $dhcp eq 'No' || $dhcp eq 'no')) {
 | |
| 	$dhcp = ask("  Do you want to use DHCP? (yes or no) ");
 | |
| 	
 | |
| 	if ($dhcp eq 'Y' || $dhcp eq 'y' || $dhcp eq 'Yes' || $dhcp eq 'yes') {
 | |
| 		$parms{'interfaces'} = {
 | |
| 			'xcat' => {
 | |
| 				'bootproto' => 'dhcp',
 | |
| 				'device' => 'replace_device',
 | |
| 				'lladdr' => 'replace_lladdr',
 | |
| 				'chanids' => 'replace_ccw_chan_ids'
 | |
| 			}
 | |
| 		};
 | |
| 	} elsif ($dhcp eq 'N' || $dhcp eq 'n' || $dhcp eq 'No' || $dhcp eq 'no') {
 | |
| 		$parms{'interfaces'} = {
 | |
| 			'xcat' => {
 | |
| 				'bootproto' => 'static',
 | |
| 				'device' => 'replace_device',
 | |
| 				'lladdr' => 'replace_lladdr',
 | |
| 				'ipaddr' => 'replace_ipaddr',
 | |
| 				'netmask' => 'replace_netmask',
 | |
| 				'gateway' => 'replace_gateway',
 | |
| 				'broadcast' => 'replace_broadcast',
 | |
| 				'network' => 'replace_network',
 | |
| 				'chanids' => 'replace_ccw_chan_ids'
 | |
| 			}
 | |
| 		};
 | |
| 	} else {
 | |
| 		print "  Unknown value!\n";
 | |
| 	}
 | |
| }
 | |
| 
 | |
| # Hash array containing autoyast configuration
 | |
| my %dasd;
 | |
| my %partitions;
 | |
| my %lvm;
 | |
| 
 | |
| # Prompts user for input?
 | |
| my $ask = 0;
 | |
| 
 | |
| # Configure dasd
 | |
| my $dasd_option = 0;
 | |
| my $addr;
 | |
| my $dasd_type;
 | |
| my $device_name;
 | |
| my $device_type;
 | |
| my $tmp;
 | |
| my $i = 0;
 | |
| 
 | |
| print <<END;
 | |
| 
 | |
| CONFIGURING DASD...
 | |
| END
 | |
| while ($dasd_option != 4) {
 | |
| 	print <<END;
 | |
| Select from the following options:
 | |
|   (1) Add DASD
 | |
|   (2) Remove DASD
 | |
|   (3) Show DASD configuration
 | |
|   (4) Go to next step
 | |
| END
 | |
| 	$dasd_option = <>;
 | |
| 	$dasd_option = trim($dasd_option);
 | |
| 	while (!($dasd_option eq '1' || $dasd_option eq '2' || $dasd_option eq '3' || $dasd_option eq '4')) {
 | |
| 		print "  Unknown value!\n";
 | |
| 		$dasd_option = <>;
 | |
| 		$dasd_option = trim($dasd_option);
 | |
| 	}
 | |
| 	
 | |
| 	# Add dasd to template
 | |
| 	if ($dasd_option eq '1') {
 | |
| 		# Get virtual address
 | |
| 		$addr = ask("  What is the virtual address? ");
 | |
| 		while (length($addr) < 4) { # Address length must be 4
 | |
| 			$addr = '0' . $addr;
 | |
| 		}
 | |
| 		$addr = '0.0.' . $addr;
 | |
| 		
 | |
| 		# Get dasd type
 | |
| 		$ask = 1;
 | |
| 		while ($ask) {
 | |
| 			$dasd_type = ask("  What is the type? (eckd or fba) ");
 | |
| 			if ($dasd_type eq 'eckd') {
 | |
| 				$dasd_type = 'dasd_eckd_mod';
 | |
| 				$ask = 0;
 | |
| 			} elsif ($dasd_type eq 'fba') {
 | |
| 				$dasd_type = 'dasd_fba_mod';
 | |
| 				$ask = 0;
 | |
| 			} else {
 | |
| 				print "    Unknown value!\n";
 | |
| 			}
 | |
| 		}
 | |
| 		
 | |
| 		# Save dasd in hash
 | |
| 		$dasd{$addr}{'type'} = $dasd_type;
 | |
| 	} 
 | |
| 	
 | |
| 	# Remove dasd from template
 | |
| 	elsif ($dasd_option eq '2') {
 | |
| 		$addr = ask("  What is the virtual address to remove? ");
 | |
| 		while (length($addr) < 4) { # Address length must be 4
 | |
| 			$addr = '0' . $addr;
 | |
| 		}
 | |
| 		$addr = '0.0.' . $addr;
 | |
| 		
 | |
| 		# Remove from hash
 | |
| 		delete $dasd{$addr};
 | |
| 	} 
 | |
| 
 | |
| 	elsif ($dasd_option eq '3') {
 | |
| 		# Show configuration
 | |
| 		print <<END;
 | |
| #  |   Address   |   Type   
 | |
| ----------------------------
 | |
| END
 | |
| 		foreach my $addr(sort keys %dasd){
 | |
| 			$device_type = $dasd{$addr}{'type'};
 | |
| 			print (pad($i, 3) . " " . pad($addr, 13) . " " . pad($device_type, 10) . "\n");
 | |
| 			$i++;
 | |
| 		}
 | |
| 	}
 | |
| 	
 | |
| 	elsif ($dasd_option eq '4') {
 | |
| 		# Do nothing, go to next step	
 | |
| 	} else {
 | |
| 		print "  Unknown value!\n"
 | |
| 	}
 | |
| }
 | |
| 
 | |
| # Assign device names
 | |
| my @dasd_device_list = ('/dev/dasda', '/dev/dasdb', '/dev/dasdc', '/dev/dasdd', '/dev/dasde', '/dev/dasdf', '/dev/dasdg',
 | |
| '/dev/dasdh', '/dev/dasdi', '/dev/dasdj', '/dev/dasdk', '/dev/dasdl', '/dev/dasdm', '/dev/dasdn', '/dev/dasdo', '/dev/dasdp',
 | |
| '/dev/dasdq', '/dev/dasdr', '/dev/dasds', '/dev/dasdt', '/dev/dasdu', '/dev/dasdv', '/dev/dasdw', '/dev/dasdx', '/dev/dasdy',
 | |
| '/dev/dasdz');
 | |
| my $dasd_partition_info;
 | |
| my @device_list;
 | |
| $i = 0;
 | |
| for $addr (sort keys %dasd) {
 | |
| 	# Assign a device name from list
 | |
| 	my $device_name = $dasd_device_list[$i];
 | |
| 
 | |
| 	# Save dasd in hash
 | |
| 	$dasd{$addr}{'device_name'} = $device_name;
 | |
| 
 | |
| 	# Save partition in hash
 | |
| 	$partitions{$device_name}{'device_fs'} = '';
 | |
| 	$partitions{$device_name}{'device_size'} = '';
 | |
| 	$partitions{$device_name}{'device_mount'} = '';
 | |
| 	$partitions{$device_name}{'device_lvm'} = '';
 | |
| 	
 | |
| 	# Create device list
 | |
| 	$device_list[$i] = pad($device_name, 12) . " " . pad($addr, 13) . " " . pad($dasd{$addr}{'type'}, 7);
 | |
| 	$i++;
 | |
| }
 | |
| 
 | |
| print <<END;
 | |
| 
 | |
| CONFIGURING PARTITIONS...
 | |
| Select a device from the list below to create a new partition.
 | |
| END
 | |
| print <<END;
 | |
| #  |   Device   |   Address   |   Type   
 | |
| ---------------------------------------------
 | |
| END
 | |
| 
 | |
| my $ask_lvm = 0;
 | |
| my $lvm;
 | |
| my $lvm_group;
 | |
| 
 | |
| my $device_fs;
 | |
| my $device_mount;
 | |
| my $device_size;
 | |
| 
 | |
| # Show device list
 | |
| for ($i = 0; $i < @device_list; $i++) {
 | |
| 	print(pad($i, 3) . " " . $device_list[$i]. "\n");
 | |
| }
 | |
| 
 | |
| # Configure device
 | |
| my $selected;
 | |
| my @args;
 | |
| 
 | |
| $ask = 1;
 | |
| while ($ask) {
 | |
| 	$selected = ask("Which device do you want to configure? (See list above)\nLeave blank and hit Enter to go to next step.\n");
 | |
| 	if ($selected && int($selected) > @device_list) {
 | |
| 		print "  Unknown value!\n";
 | |
| 		redo;
 | |
| 	}
 | |
| 	
 | |
| 	# Only configure if a device is selected
 | |
| 	if (length($selected)) {
 | |
| 		$selected = int($selected);
 | |
| 		
 | |
| 		@args = split('   ', $device_list[$selected]);
 | |
| 		$device_name = $args[0];
 | |
| 
 | |
| 		# Get device filesystem
 | |
| 		$device_fs = '';
 | |
| 		while (!($device_fs eq 'ext2' || $device_fs eq 'ext3' || $device_fs eq 'ext4' || $device_fs eq 'swap')) {
 | |
| 			$device_fs = ask("  What is the filesystem for $device_name? (ext2, ext3, ext4, or swap) ");
 | |
| 			
 | |
| 			if (!($device_fs eq 'ext2' || $device_fs eq 'ext3' || $device_fs eq 'ext4' || $device_fs eq 'swap')) {
 | |
| 				print "    Unknown value!\n";
 | |
| 			}
 | |
| 		}
 | |
| 		
 | |
| 		# Get partition size
 | |
| 		$device_size = '';
 | |
| 		while (!$device_size) {
 | |
| 			$device_size = ask("  What is the partition size? (e.g. 1g, 2g, or max) ");
 | |
| 			if (!$device_size) {
 | |
| 				print "  Please give a partition size!";
 | |
| 			}
 | |
| 		}
 | |
| 		
 | |
| 		# Is partition an LVM
 | |
| 		$lvm = '';
 | |
| 		while (!($lvm eq 'Y' || $lvm eq 'y' || $lvm eq 'Yes' || $lvm eq 'yes' || $lvm eq 'N' || $lvm eq 'n' || $lvm eq 'No' || $lvm eq 'no')) {
 | |
| 			$lvm = ask("  Do you want to assign it to an LVM group? (yes or no) ");
 | |
| 			$lvm_group = "";
 | |
| 			$device_mount = "";
 | |
| 		
 | |
| 			if ($lvm eq 'Y' || $lvm eq 'y' || $lvm eq 'Yes' || $lvm eq 'yes') {
 | |
| 				# Get partition LVM group
 | |
| 				$lvm_group = ask("  What is the LVM group? ");
 | |
| 				$ask_lvm = 1;
 | |
| 				
 | |
| 				# Create new entry for volume group
 | |
| 				$tmp = '/dev/' . $lvm_group;
 | |
| 				$partitions{$tmp}{'device_lvm'} = $lvm_group;
 | |
| 			} elsif ($lvm eq 'N' || $lvm eq 'n' || $lvm eq 'No' || $lvm eq 'no') {
 | |
| 				# Get partition mount point
 | |
| 				$device_mount = ask("  What is the mount point? ");
 | |
| 			} else {
 | |
| 				print "    Unknown value!\n";
 | |
| 			}
 | |
| 		}
 | |
| 		
 | |
| 		# Save dasd in hash
 | |
| 		$partitions{$device_name}{'device_fs'} = $device_fs;
 | |
| 		$partitions{$device_name}{'device_size'} = $device_size;
 | |
| 		$partitions{$device_name}{'device_mount'} = $device_mount;
 | |
| 		$partitions{$device_name}{'device_lvm'} = $lvm_group;
 | |
| 	} else {
 | |
| 		$ask = 0;
 | |
| 	}
 | |
| }
 | |
| 
 | |
| # Configure LVM partitions
 | |
| my @lvm_list;
 | |
| if ($ask_lvm) {
 | |
| 	print <<END;
 | |
| 	
 | |
| CONFIGURING LVM PARTITIONS...
 | |
| Select an LVM group from the list below to create an LVM volume.
 | |
| END
 | |
| print <<END;
 | |
| #  |   LVM group   |   Devices   
 | |
| ---------------------------------
 | |
| END
 | |
| 
 | |
| 	# Find LVM groups
 | |
| 	for $device_name (sort keys %partitions) {
 | |
| 		if (length($partitions{$device_name}{'device_lvm'}) && $device_name ne "/dev/$partitions{$device_name}{'device_lvm'}") {
 | |
| 			$lvm{$partitions{$device_name}{'device_lvm'}}{'devices'} .= "$device_name ";
 | |
| 		}
 | |
| 	}
 | |
| 	
 | |
| 	# Print volume groups
 | |
| 	$i = 0;
 | |
| 	for $device_name (sort keys %lvm) {
 | |
| 		print(pad($i, 3) . " " . pad($device_name, 15) . " " . pad($lvm{$device_name}{'devices'}, 10) . "\n");
 | |
| 		$lvm_list[$i] = $device_name;
 | |
| 		$i++;
 | |
| 	}
 | |
| 	
 | |
| 	# Select LVM group
 | |
| 	$ask = 1;
 | |
| 	my $lvm_group;
 | |
| 	my $lvm_vol_name;
 | |
| 	my $lvm_vol_fs;
 | |
| 	my $lvm_vol_mount;
 | |
| 	my $lvm_vol_size;
 | |
| 	while ($ask) {
 | |
| 		$lvm_group = ask("Which LVM group do you want to configure? (See list above)\nLeave blank and hit Enter to go to next step.\n");
 | |
| 		if (length($lvm_group)) {
 | |
| 			$lvm_group = $lvm_list[int($lvm_group)];
 | |
| 			$device_name = "/dev/$lvm_group";
 | |
| 			
 | |
| 			my $lvm_option = 0;
 | |
| 			while ($lvm_option != 4) {
 | |
| 				print <<END;
 | |
| 		
 | |
| Select from the following options:
 | |
|   (1) Create LVM volume
 | |
|   (2) Remove LVM volume
 | |
|   (3) Show LVM configuration
 | |
|   (4) Back to menu
 | |
| END
 | |
| 				$lvm_option = <>;
 | |
| 				
 | |
| 				# Add an LVM volume to template
 | |
| 				if ($lvm_option eq '1') {
 | |
| 					# Get dasd virtual address
 | |
| 					$lvm_vol_name = ask("  What is the LVM volume name? ");
 | |
| 					
 | |
| 					# Get device filesystem
 | |
| 					$lvm_vol_fs = '';
 | |
| 					while (!($lvm_vol_fs eq 'ext2' || $lvm_vol_fs eq 'ext3' || $lvm_vol_fs eq 'ext4' || $lvm_vol_fs eq 'swap')) {
 | |
| 						$lvm_vol_fs = ask("  What is the LVM volume filesystem? (ext2, ext3, ext4, or swap) ");
 | |
| 						
 | |
| 						if (!($lvm_vol_fs eq 'ext2' || $lvm_vol_fs eq 'ext3' || $lvm_vol_fs eq 'ext4' || $lvm_vol_fs eq 'swap')) {
 | |
| 							print "    Unknown value!\n";
 | |
| 						}
 | |
| 					}
 | |
| 			
 | |
| 					# Get partition mount point
 | |
| 					$lvm_vol_mount = ask("  what is the Mount point? ");
 | |
| 					
 | |
| 					# Get partition size
 | |
| 					$lvm_vol_size = ask("  What is the LVM volume size? (e.g. 1g, 2g, or max) ");
 | |
| 		
 | |
| 					# Save dasd in hash
 | |
| 					$partitions{$device_name}{'lvm'}{$lvm_vol_name} = {
 | |
| 						'fs' => $lvm_vol_fs,
 | |
| 						'name' => $lvm_vol_name,
 | |
| 						'mount' => $lvm_vol_mount,
 | |
| 						'size' => $lvm_vol_size
 | |
| 					};
 | |
| 				} 
 | |
| 				
 | |
| 				# Remove an LVM volume from template
 | |
| 				elsif ($lvm_option eq '2') {
 | |
| 					my $name = ask("  What is the LVM volume to remove? ");
 | |
| 										
 | |
| 					# Remove from hash
 | |
| 					delete $partitions{$device_name}{'lvm'}{$name};
 | |
| 				}
 | |
| 
 | |
| 				elsif ($lvm_option eq '3') {
 | |
| 					# Show configuration
 | |
| 					print <<END;
 | |
| Group      |   Volume   |    Mount   |   Size   
 | |
| ---------------------------------------------
 | |
| END
 | |
| 
 | |
| 					for $device_name (sort keys %partitions) {						
 | |
| 						for $lvm_vol_name (sort keys %{$partitions{$device_name}{'lvm'}}) {
 | |
| 							print(pad($device_name, 11) . " " . pad($partitions{$device_name}{'lvm'}{$lvm_vol_name}{'name'}, 12) . " " . pad($partitions{$device_name}{'lvm'}{$lvm_vol_name}{'mount'}, 12) . " " . pad($partitions{$device_name}{'lvm'}{$lvm_vol_name}{'size'}, 10) . "\n");
 | |
| 						}
 | |
| 					}
 | |
| 				}
 | |
| 				
 | |
| 				elsif ($lvm_option eq '4') {
 | |
| 					# Do nothing, go to next step	
 | |
| 				} else {
 | |
| 					print "  Unknown value!\n"
 | |
| 				}
 | |
| 			}
 | |
| 		} else {
 | |
| 			$ask = 0;		
 | |
| 		}
 | |
| 	} # End of while ($ask)
 | |
| }
 | |
| 
 | |
| # Create <dasd> section
 | |
| my $dasdSection = createDasd(\%dasd, \%partitions);
 | |
| 
 | |
| # Create <partitions> section
 | |
| my $partitionsSection = createPartitions(\%dasd, \%partitions);
 | |
| 
 | |
| # Create <modules> section
 | |
| my $dasdModulesSection = createDasdModules(\%dasd);
 | |
| my $nicModulesSection = createNicModules($parms{'interfaces'});
 | |
| 
 | |
| # Create <hosts> section
 | |
| my $hostsSection = createHosts($parms{'hosts'});
 | |
| 
 | |
| # Create <dns> section
 | |
| my $dnsSection = createDns($parms{'dns'});
 | |
| 
 | |
| # Create <interfaces> section
 | |
| my ($interfacesSection) = createInterfaces($parms{'interfaces'});
 | |
| 
 | |
| # Create password section
 | |
| my $passwordSection = <<END;
 | |
|   <user_password>$parms{'root_password'}</user_password>
 | |
| END
 | |
| 
 | |
| # Create routes section
 | |
| my $routesSection = createRoutes($parms{'interfaces'});
 | |
| 
 | |
| # Create scripts section
 | |
| my $scriptsSection = createScripts($parms{'interfaces'});
 | |
| 
 | |
| # Begin to build template
 | |
| 
 | |
| # Edit template by replacing place holders:
 | |
| # 	insert_devices     
 | |
| # 	insert_hosts
 | |
| # 	insert_dns
 | |
| # 	insert_interfaces
 | |
| # 	insert_modules
 | |
| # 	insert_partitioning_drives
 | |
| # 	insert_software_pattern
 | |
| # 	insert_root_password
 | |
| #   insert_routes
 | |
| 
 | |
| # Generate autoyast template
 | |
| my $tmpl = '';
 | |
| if ($version eq '10') {
 | |
| 	$tmpl = genSles10Tmpl();
 | |
| } elsif ($version eq '11') {
 | |
| 	$tmpl = genSles11Tmpl();
 | |
| }
 | |
| 
 | |
| # Print out template
 | |
| open (TMPL, ">$template_path");
 | |
| print TMPL "$tmpl";
 | |
| close (TMPL);
 | |
| 
 | |
| open(FILE, $template_path);
 | |
| # Go through each line
 | |
| my $mod_tmpl = '';
 | |
| while(my $ln = <FILE>) {
 | |
| 	# If the line matches the pattern to replace, print replacement
 | |
| 	if($ln =~ 'insert_devices') {
 | |
| 		$mod_tmpl .= $dasdSection;
 | |
| 	} elsif($ln =~ 'insert_hosts') {
 | |
| 		$mod_tmpl .= $hostsSection;
 | |
| 	} elsif($ln =~ 'insert_dns') {
 | |
| 		$mod_tmpl .= $dnsSection;
 | |
| 	} elsif($ln =~ 'insert_interfaces') {
 | |
| 		$mod_tmpl .= $interfacesSection;
 | |
| 	} elsif($ln =~ 'insert_modules') {
 | |
| 		$mod_tmpl .= $dasdModulesSection;
 | |
| 		$mod_tmpl .= $nicModulesSection;
 | |
| 	} elsif($ln =~ 'insert_partitioning_drives') {
 | |
| 		$mod_tmpl .= $partitionsSection;
 | |
| 	} elsif($ln =~ 'insert_root_password') {
 | |
| 		$mod_tmpl .= $passwordSection;
 | |
| 	} elsif($ln =~ 'insert_routes') {
 | |
| 		$mod_tmpl .= $routesSection;
 | |
| 	} elsif($ln =~ '<scripts>') {
 | |
| 		# Print line
 | |
| 		$ln =~ s/\r//g;	# Remove return carriage
 | |
| 		$mod_tmpl .= $ln;
 | |
| 		
 | |
| 		$mod_tmpl .= $scriptsSection;
 | |
| 	} else {
 | |
| 		# Print line
 | |
| 		$ln =~ s/\r//g;	# Remove return carriage
 | |
| 		$mod_tmpl .= $ln;
 | |
| 	}
 | |
| }
 | |
| close(FILE);
 | |
| 
 | |
| # Print out modified template
 | |
| open (TMPL, ">$template_path");
 | |
| print TMPL "$mod_tmpl";
 | |
| close (TMPL);
 | |
| 
 | |
| # Done
 | |
| print "Done! See autoyast template under $template_path\n";
 | |
| exit();
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| #-------------------------------------------------------
 | |
| 
 | |
| =head3   trim
 | |
| 
 | |
| 	Description	: Trim the whitespaces in a string
 | |
|     Arguments	: String
 | |
|     Returns		: Trimmed string
 | |
|     Example		: my $str = trim($str);
 | |
|     
 | |
| =cut
 | |
| 
 | |
| #-------------------------------------------------------
 | |
| sub trim {
 | |
| 
 | |
| 	# Get string
 | |
| 	my ($str) = @_;
 | |
| 
 | |
| 	# Trim right
 | |
| 	$str =~ s/\s*$//;
 | |
| 	# Trim left
 | |
| 	$str =~ s/^\s*//;
 | |
| 
 | |
| 	return ($str);
 | |
| }
 | |
| 
 | |
| #-------------------------------------------------------
 | |
| 
 | |
| =head3   createDasd
 | |
| 
 | |
| 	Description	: Create the <dasd> section
 | |
|     Arguments	: Dasd and partition hash
 | |
|     Returns		: <dasd> section
 | |
|     Example		: my $section = createDasd($dasd_ref, $partition_ref);
 | |
|     
 | |
| =cut
 | |
| 
 | |
| #-------------------------------------------------------
 | |
| sub createDasd {
 | |
| 	# Get inputs
 | |
| 	my ($dasd_ref, $partition_ref) = @_;
 | |
| 	
 | |
| 	my %dasd = %$dasd_ref;
 | |
| 	my %partition = %$partition_ref;
 | |
| 
 | |
| 	# dasd hash should include:
 | |
| 	# 	$dasd{$addr}{'device_name'} = $device_name;
 | |
| 	#	$dasd{$addr}{'type'} = $dasd_type;
 | |
| 	# partition hash should include:
 | |
| 	# 	$partitions{$device_name}{'device_fs'} = '';
 | |
| 	# 	$partitions{$device_name}{'device_size'} = '';
 | |
| 	# 	$partitions{$device_name}{'device_mount'} = '';
 | |
| 	# 	$partitions{$device_name}{'device_lvm'} = '';
 | |
| 	# 	$partitions{$device_name}{'lvm'}{$lvm_vol_name} = {
 | |
| 	#		'name' => $lvm_vol_name,
 | |
| 	#		'mount' => $lvm_vol_mount,
 | |
| 	#		'size' => $lvm_vol_size
 | |
| 	#	};
 | |
| 			
 | |
| 	# Create <dasd> section
 | |
| 	#   <!-- Dasd attached at 0100 --> 
 | |
| 	#   <listentry>
 | |
| 	#     <bus>None</bus>
 | |
| 	#     <bus_hwcfg>none</bus_hwcfg>
 | |
| 	#     <channel>0.0.0100</channel>
 | |
| 	#     <format config:type="boolean">true</format>
 | |
| 	#     <dev_name>/dev/dasda</dev_name>
 | |
| 	#     <dev_names config:type="list">
 | |
| 	#       <listentry>/dev/dasda</listentry>
 | |
| 	#       <listentry>/dev/disk/by-path/ccw-0.0.0100</listentry>
 | |
| 	#     </dev_names>
 | |
| 	#     <device>DASD</device>
 | |
| 	#     <driver>io_subchannel</driver>
 | |
| 	#     <drivers config:type="list">
 | |
| 	#       <listentry>
 | |
| 	#         <active config:type="boolean">true</active>
 | |
| 	#         <modprobe config:type="boolean">true</modprobe>
 | |
| 	#           <modules config:type="list">
 | |
| 	#             <module_entry config:type="list">
 | |
| 	#             <listentry>dasd_eckd_mod</listentry>
 | |
| 	#             <listentry></listentry>
 | |
| 	#           </module_entry>
 | |
| 	#         </modules>
 | |
| 	#       </listentry>
 | |
| 	#     </drivers>
 | |
| 	#     <formatted config:type="boolean">false</formatted>
 | |
| 	#     <partition_info>/dev/dasda1 (Linux native)</partition_info>
 | |
| 	#     <resource>
 | |
| 	#       <io config:type="list">
 | |
| 	#         <listentry>
 | |
| 	#           <active config:type="boolean">true</active>
 | |
| 	#           <length config:type="integer">1</length>
 | |
| 	#           <mode>rw</mode>
 | |
| 	#         </listentry>
 | |
| 	#       </io>
 | |
| 	#     </resource>
 | |
| 	#     <sysfs_bus_id>0.0.0100</sysfs_bus_id>
 | |
| 	#   </listentry>
 | |
| 	my $xml = '';
 | |
| 	
 | |
| 	my $device_name;
 | |
| 	my $device_type;
 | |
| 	my $partition_info;
 | |
| 	foreach my $addr(sort keys %dasd){	
 | |
| 		$device_name = $dasd{$addr}{'device_name'};
 | |
| 		$device_type = $dasd{$addr}{'type'};
 | |
| 		
 | |
| 		# If this dasd is to be used for Linux
 | |
| 		if ($partitions{$device_name}{'device_mount'} || $partitions{$device_name}{'device_lvm'}) {
 | |
| 			$partition_info = $device_name . "1 (Linux native)";
 | |
| 			$xml .= <<END;
 | |
| <listentry>
 | |
|   <bus>None</bus>
 | |
|   <bus_hwcfg>none</bus_hwcfg>
 | |
|   <channel>$addr</channel>
 | |
|   <format config:type="boolean">true</format>
 | |
|   <dev_name>$device_name</dev_name>
 | |
|   <dev_names config:type="list">
 | |
|     <listentry>$device_name</listentry>
 | |
|     <listentry>/dev/disk/by-path/ccw-$addr</listentry>
 | |
|   </dev_names>
 | |
|   <device>DASD</device>
 | |
|   <driver>io_subchannel</driver>
 | |
|   <drivers config:type="list">
 | |
|     <listentry>
 | |
|       <active config:type="boolean">true</active>
 | |
|       <modprobe config:type="boolean">true</modprobe>
 | |
|         <modules config:type="list">
 | |
|           <module_entry config:type="list">
 | |
|           <listentry>$device_type</listentry>
 | |
|           <listentry></listentry>
 | |
|         </module_entry>
 | |
|       </modules>
 | |
|     </listentry>
 | |
|   </drivers>
 | |
|   <formatted config:type="boolean">false</formatted>
 | |
|   <partition_info>$partition_info</partition_info>
 | |
|   <resource>
 | |
|     <io config:type="list">
 | |
|       <listentry>
 | |
|         <active config:type="boolean">true</active>
 | |
|         <length config:type="integer">1</length>
 | |
|         <mode>rw</mode>
 | |
|       </listentry>
 | |
|     </io>
 | |
|   </resource>
 | |
|   <sysfs_bus_id>$addr</sysfs_bus_id>
 | |
| </listentry>
 | |
| END
 | |
| 		} else {
 | |
| 			$partition_info = $device_name;
 | |
| 			$xml .= <<END;
 | |
| <listentry>
 | |
|   <bus>None</bus>
 | |
|   <bus_hwcfg>none</bus_hwcfg>
 | |
|   <channel>$addr</channel>
 | |
|   <dev_name>$device_name</dev_name>
 | |
|   <dev_names config:type="list">
 | |
|     <listentry>$device_name</listentry>
 | |
|     <listentry>/dev/disk/by-path/ccw-$addr</listentry>
 | |
|   </dev_names>
 | |
|   <device>DASD</device>
 | |
|   <driver>io_subchannel</driver>
 | |
|   <drivers config:type="list">
 | |
|     <listentry>
 | |
|       <active config:type="boolean">true</active>
 | |
|       <modprobe config:type="boolean">true</modprobe>
 | |
|         <modules config:type="list">
 | |
|           <module_entry config:type="list">
 | |
|           <listentry>$device_type</listentry>
 | |
|           <listentry/>
 | |
|         </module_entry>
 | |
|       </modules>
 | |
|     </listentry>
 | |
|   </drivers>
 | |
|   <formatted config:type="boolean">true</formatted>
 | |
|   <partition_info>$partition_info</partition_info>
 | |
|   <resource>
 | |
|     <disk_log_geo config:type="list">
 | |
|       <listentry>
 | |
|         <heads config:type="integer">16</heads>
 | |
|         <sectors config:type="integer">128</sectors>
 | |
|       </listentry>
 | |
|     </disk_log_geo>
 | |
|   </resource>
 | |
|   <sysfs_bus_id>$addr</sysfs_bus_id>
 | |
| </listentry>
 | |
| END
 | |
| 		}		
 | |
| 	}
 | |
| 
 | |
| 	return $xml;
 | |
| }
 | |
| 
 | |
| #-------------------------------------------------------
 | |
| 
 | |
| =head3   createInterfaces
 | |
| 
 | |
| 	Description	: Create the <interfaces> section
 | |
|     Arguments	: Interfaces hash
 | |
|     Returns		: <interfaces> section
 | |
|     Example		: my $section = createInterfaces($interfaces_ref);
 | |
|     
 | |
| =cut
 | |
| 
 | |
| #-------------------------------------------------------
 | |
| sub createInterfaces {
 | |
| 	# Get string
 | |
| 	my ($interfaces_ref) = @_;
 | |
| 	my %interfaces = %$interfaces_ref;
 | |
| 		
 | |
| 	# Create <interfaces> section
 | |
| 	# <interface>
 | |
| 	#   <bootproto>static</bootproto>
 | |
| 	#   <broadcast>10.1.100.255</broadcast>
 | |
| 	#   <device>eth0</device>
 | |
| 	#   <ipaddr>10.1.100.100</ipaddr>
 | |
| 	#   <name>OSA Express Network card (0.0.0800)</name>
 | |
| 	#   <netmask>255.255.255.0</netmask>
 | |
| 	#   <prefixlen>25</prefixlen>
 | |
| 	#   <startmode>auto</startmode>
 | |
| 	# </interface>
 | |
| 	#
 | |
| 	# The layout is different for DHCP:
 | |
| 	# <interface>
 | |
| 	#   <bootproto>dhcp</bootproto>
 | |
| 	#   <device>eth0</device>
 | |
| 	#   <lladdr>02:00:00:FF:FF:FF</lladdr>
 | |
| 	#   <startmode>auto</startmode>
 | |
| 	#   <usercontrol>no</usercontrol>
 | |
| 	# </interface>
 | |
| 	my $xml = '';
 | |
| 	foreach my $i(keys %interfaces){
 | |
| 		# Create static interface
 | |
| 		if($interfaces{$i}{'bootproto'} eq 'static') {
 | |
| 			$xml .= <<END;	
 | |
| <interface>
 | |
|   <bootproto>$interfaces{$i}{'bootproto'}</bootproto>
 | |
|   <broadcast>$interfaces{$i}{'broadcast'}</broadcast>
 | |
|   <device>$interfaces{$i}{'device'}</device>
 | |
|   <ipaddr>$interfaces{$i}{'ipaddr'}</ipaddr>
 | |
|   <lladdr>$interfaces{$i}{'lladdr'}</lladdr>
 | |
|   <netmask>$interfaces{$i}{'netmask'}</netmask>
 | |
|   <network>$interfaces{$i}{'network'}</network>
 | |
|   <startmode>auto</startmode>
 | |
| </interface>
 | |
| END
 | |
| 		}
 | |
| 		
 | |
| 		# Create DHCP interface
 | |
| 		else {
 | |
| 			$xml .= <<END;
 | |
| <interface>
 | |
|   <bootproto>$interfaces{$i}{'bootproto'}</bootproto>
 | |
|   <device>$interfaces{$i}{'device'}</device>
 | |
|   <lladdr>$interfaces{$i}{'lladdr'}</lladdr>
 | |
|   <startmode>auto</startmode>
 | |
|   <usercontrol>no</usercontrol>
 | |
| </interface>
 | |
| END
 | |
| 		}
 | |
| 	}
 | |
| 	
 | |
| 	return ($xml);
 | |
| }
 | |
| 
 | |
| #-------------------------------------------------------
 | |
| 
 | |
| =head3   createPartitions
 | |
| 
 | |
| 	Description	: Create the <partitions> section
 | |
|     Arguments	: Dasds and partition hash
 | |
|     Returns		: <partitions> section
 | |
|     Example		: my $section = createPartitions($dasd_ref, $partition_ref);
 | |
|     
 | |
| =cut
 | |
| 
 | |
| #-------------------------------------------------------
 | |
| sub createPartitions {
 | |
| 	# Get inputs
 | |
| 	my ($dasd_ref, $partition_ref) = @_;
 | |
| 	
 | |
| 	my %dasd = %$dasd_ref;
 | |
| 	my %partitions = %$partition_ref;
 | |
| 			
 | |
| 	# Create <partitions> section
 | |
| 	# <drive>
 | |
|     #   <device>/dev/dasda</device>
 | |
|     #   <partitions config:type="list">
 | |
|     #     <partition>
 | |
|     #       <create config:type="boolean">true</create>
 | |
|     #       <filesystem config:type="symbol">ext3</filesystem>
 | |
|     #       <format config:type="boolean">true</format>
 | |
|     #       <mount>/</mount>
 | |
|     #       <mountby config:type="symbol">path</mountby>
 | |
|     #       <partition_id config:type="integer">131</partition_id>
 | |
|     #       <partition_nr config:type="integer">1</partition_nr>
 | |
|     #       <partition_type>primary</partition_type>
 | |
|     #       <size>max</size>
 | |
|     #     </partition>
 | |
|     #   </partitions>
 | |
|     #   <use>all</use>
 | |
|     # </drive>
 | |
|     #
 | |
|     # The layout is different for LVM:
 | |
| 	# <drive>
 | |
| 	#   <device>/dev/dasdb</device>
 | |
| 	#   <initialize config:type="boolean">true</initialize>
 | |
| 	#   <partitions config:type="list">
 | |
| 	#     <partition>
 | |
| 	#       <create config:type="boolean">true</create>
 | |
| 	#       <crypt_fs config:type="boolean">false</crypt_fs>
 | |
| 	#       <filesystem config:type="symbol">ext3</filesystem>
 | |
| 	#       <format config:type="boolean">false</format>
 | |
| 	#       <loop_fs config:type="boolean">false</loop_fs>
 | |
| 	#       <lvm_group>VG</lvm_group>
 | |
| 	#       <mountby config:type="symbol">path</mountby>
 | |
| 	#       <resize config:type="boolean">false</resize>
 | |
| 	#       <size>max</size>
 | |
| 	#     </partition>
 | |
| 	#   </partitions>
 | |
| 	#   <use>all</use>
 | |
| 	# </drive>
 | |
| 	my $xml = '';
 | |
| 		
 | |
| 	# Go through each partition	
 | |
| 	foreach my $device_name(sort keys %partitions) {		
 | |
| 		# Create <drive> head
 | |
| 		$xml .= <<END;
 | |
| <drive>
 | |
|   <device>$device_name</device>
 | |
|   <partitions config:type="list">
 | |
| END
 | |
| 
 | |
| 		if (exists $partitions{$device_name}{'lvm'} && $partitions{$device_name}{'lvm'}) {
 | |
| 			my %lvm_vols = %{ $partitions{$device_name}{'lvm'} };
 | |
| 			foreach my $vol(sort keys %lvm_vols) {
 | |
| 				# Create <partition> section for LVM volume
 | |
| 				$xml .= <<END;
 | |
|     <partition>
 | |
|       <create config:type="boolean">true</create>
 | |
|       <crypt_fs config:type="boolean">false</crypt_fs>
 | |
|       <filesystem config:type="symbol">$lvm_vols{$vol}{'fs'}</filesystem>
 | |
|       <format config:type="boolean">true</format>
 | |
|       <fstopt>acl,user_xattr</fstopt>
 | |
|       <lv_name>$lvm_vols{$vol}{'name'}</lv_name>
 | |
|       <mount>$lvm_vols{$vol}{'mount'}</mount>
 | |
|       <mountby config:type="symbol">path</mountby>
 | |
|       <partition_id config:type="integer">131</partition_id>
 | |
|       <raid_options/>
 | |
|       <resize config:type="boolean">false</resize>
 | |
|       <size>$lvm_vols{$vol}{'size'}</size>
 | |
|     </partition>
 | |
| END
 | |
| 			}
 | |
| 		} elsif (exists $partitions{$device_name}{'device_lvm'} && $partitions{$device_name}{'device_lvm'}) {
 | |
| 			# Create <partition> section for LVM group
 | |
| 			$xml .= <<END;
 | |
|     <partition>
 | |
|       <create config:type="boolean">true</create>
 | |
|       <crypt_fs config:type="boolean">false</crypt_fs>
 | |
|       <filesystem config:type="symbol">$partitions{$device_name}{'device_fs'}</filesystem>
 | |
|       <format config:type="boolean">false</format>
 | |
|       <loop_fs config:type="boolean">false</loop_fs>
 | |
|       <lvm_group>$partitions{$device_name}{'device_lvm'}</lvm_group>
 | |
|       <mountby config:type="symbol">path</mountby>
 | |
|       <partition_id config:type="integer">142</partition_id>
 | |
|       <partition_nr config:type="integer">1</partition_nr>
 | |
|       <resize config:type="boolean">false</resize>
 | |
|       <size>$partitions{$device_name}{'device_size'}</size>
 | |
|     </partition>
 | |
| END
 | |
| 		} else {
 | |
| 			# Not an LVM group or volume
 | |
| 			$xml .= <<END;
 | |
|     <partition>
 | |
|       <create config:type="boolean">true</create>
 | |
|       <filesystem config:type="symbol">$partitions{$device_name}{'device_fs'}</filesystem>
 | |
|       <format config:type="boolean">true</format>
 | |
|       <mount>$partitions{$device_name}{'device_mount'}</mount>
 | |
|       <mountby config:type="symbol">path</mountby>
 | |
|       <partition_id config:type="integer">131</partition_id>
 | |
|       <partition_nr config:type="integer">1</partition_nr>
 | |
|       <partition_type>primary</partition_type>
 | |
|       <size>$partitions{$device_name}{'device_size'}</size>
 | |
|     </partition>	
 | |
| END
 | |
| 		}
 | |
| 		
 | |
| 		# Create <drive> tail
 | |
| 		if (exists $partitions{$device_name}{'device_lvm'} && $partitions{$device_name}{'device_lvm'}) {
 | |
| 			$xml .= <<END;
 | |
|   </partitions>
 | |
|   <pesize>4M</pesize>
 | |
|   <type config:type="symbol">CT_LVM</type>
 | |
|   <use>all</use>
 | |
| </drive>
 | |
| END
 | |
| 		} else {
 | |
| 			$xml .= <<END;
 | |
|   </partitions>
 | |
|   <use>all</use>
 | |
| </drive>
 | |
| END
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	return $xml;
 | |
| }
 | |
| 
 | |
| #-------------------------------------------------------
 | |
| 
 | |
| =head3   createHosts
 | |
| 
 | |
| 	Description	: Create the <hosts> section
 | |
|     Arguments	: Hosts to be created
 | |
|     Returns		: <hosts> section
 | |
|     Example		: my $section = createHosts($hosts);
 | |
|     
 | |
| =cut
 | |
| 
 | |
| #-------------------------------------------------------
 | |
| sub createHosts {
 | |
| 	my ($hosts_ref) = @_;
 | |
| 	my %hosts = %$hosts_ref;
 | |
| 	
 | |
| 	# Create <hosts> section
 | |
| 	# e.g.
 | |
|     # <hosts_entry>
 | |
|     #   <host_address>10.1.100.100</host_address>
 | |
|     #   <names config:type="list">
 | |
|     #     <name>gpok100.endicott.ibm.com gpok100</name>
 | |
|     #   </names>
 | |
|     # </hosts_entry>
 | |
| 	my $xml = '';
 | |
| 	
 | |
| 	# Create host entries
 | |
| 	foreach my $i(keys %hosts){
 | |
| 		$xml .= <<END;
 | |
|   <hosts_entry>
 | |
|     <host_address>$hosts{$i}{'host_address'}</host_address>
 | |
|     <names config:type="list">
 | |
|       <name>$hosts{$i}{'name'}</name>
 | |
|     </names>
 | |
|   </hosts_entry>
 | |
| END
 | |
| 	}
 | |
| 		
 | |
| 	return $xml;
 | |
| }
 | |
| 
 | |
| #-------------------------------------------------------
 | |
| 
 | |
| =head3   createDns
 | |
| 
 | |
| 	Description	: Create the <dns> section
 | |
|     Arguments	: DNS
 | |
|     Returns		: <dns> section
 | |
|     Example		: my $section = createDns($dns);
 | |
|     
 | |
| =cut
 | |
| 
 | |
| #-------------------------------------------------------
 | |
| sub createDns {
 | |
| 	# Get string
 | |
| 	my ($dns_ref) = @_;
 | |
| 	my %dns = %$dns_ref;
 | |
| 	
 | |
| 	# Create <dns> section
 | |
| 	#   <dhcp_hostname config:type="boolean">false</dhcp_hostname>
 | |
|     #   <dhcp_resolv config:type="boolean">false</dhcp_resolv>
 | |
|     #   <domain>endicott.ibm.com</domain>
 | |
|     #   <hostname>gpok100</hostname>
 | |
|     #   <nameservers config:type="list">
 | |
|     #     <nameserver>10.1.100.100</nameserver>
 | |
|     #   </nameservers>
 | |
|     my $xml = '';
 | |
| 	foreach my $i(keys %dns){
 | |
| 		$xml .= <<END;
 | |
| <dhcp_hostname config:type="boolean">$dns{$i}{'dhcp_hostname'}</dhcp_hostname>
 | |
| <dhcp_resolv config:type="boolean">$dns{$i}{'dhcp_resolv'}</dhcp_resolv>
 | |
| <domain>$dns{$i}{'domain'}</domain>
 | |
| <hostname>$dns{$i}{'hostname'}</hostname>
 | |
| <nameservers config:type="list">
 | |
|   <nameserver>$dns{$i}{'nameserver'}</nameserver>
 | |
| </nameservers>
 | |
| END
 | |
| 	}
 | |
| 
 | |
| 	return $xml;
 | |
| }
 | |
| 
 | |
| #-------------------------------------------------------
 | |
| 
 | |
| =head3   createDasdModules
 | |
| 
 | |
| 	Description	: Create the <modules> section for each dasd attached
 | |
|     Arguments	: Dasd hash
 | |
|     Returns		: <modules> section
 | |
|     Example		: my $section = createDasdModules($dasd_ref);
 | |
|     
 | |
| =cut
 | |
| 
 | |
| #-------------------------------------------------------
 | |
| sub createDasdModules {
 | |
| 	# Get string
 | |
| 	my ($dasd_ref) = @_;
 | |
| 	my %dasd = %$dasd_ref;
 | |
| 		
 | |
| 	# Create <modules> section
 | |
| 	# <module_entry>
 | |
| 	#   <device>dasd-bus-ccw-0.0.0100</device>
 | |
| 	#   <module>dasd_eckd_mod</module>
 | |
| 	#   <options></options>
 | |
| 	# </module_entry>
 | |
| 
 | |
| 	my $xml = '';
 | |
| 	foreach my $addr(keys %dasd){
 | |
| 		$xml .= <<END;
 | |
| <module_entry>
 | |
|   <device>dasd-bus-ccw-$addr</device>
 | |
|   <module>$dasd{$addr}{'type'}</module>
 | |
|   <options></options>
 | |
| </module_entry>
 | |
| END
 | |
| 	}
 | |
| 
 | |
| 	return $xml;
 | |
| }
 | |
| 
 | |
| #-------------------------------------------------------
 | |
| 
 | |
| =head3   createNicModules
 | |
| 
 | |
| 	Description	: Create the <modules> section for each interface attached
 | |
|     Arguments	: Interfaces hash
 | |
|     Returns		: <modules> section
 | |
|     Example		: my $section = createNicModules(%interfaces);
 | |
|     
 | |
| =cut
 | |
| 
 | |
| #-------------------------------------------------------
 | |
| sub createNicModules {
 | |
| 	# Get hash table
 | |
| 	my ($interfaces_ref) = @_;
 | |
| 	my %interfaces = %$interfaces_ref;
 | |
| 	
 | |
| 	# Create <modules> section
 | |
| 	# <module_entry>
 | |
| 	#   <ccw_chan_ids>0.0.0800 0.0.0801 0.0.0802</ccw_chan_ids>
 | |
| 	#   <ccw_chan_mode>FOOBAR</ccw_chan_mode>
 | |
| 	#   <ccw_chan_num>3</ccw_chan_num>
 | |
| 	#   <device>eth0</device>
 | |
| 	#   <module>qeth</module>
 | |
| 	#   <options/>
 | |
| 	# </module_entry>
 | |
| 	my $xml = '';
 | |
| 	foreach my $i(sort (keys %interfaces)){
 | |
| 		$xml .= <<END;
 | |
| <module_entry>
 | |
|   <ccw_chan_ids>$interfaces{$i}{'chanids'}</ccw_chan_ids>
 | |
|   <ccw_chan_mode>FOOBAR</ccw_chan_mode>
 | |
|   <ccw_chan_num>3</ccw_chan_num>
 | |
|   <device>$interfaces{$i}{'device'}</device>
 | |
|   <module>qeth</module>
 | |
|   <options></options>
 | |
| </module_entry>
 | |
| END
 | |
| 	}
 | |
| 	
 | |
| 	return $xml;
 | |
| }
 | |
| 
 | |
| #-------------------------------------------------------
 | |
| 
 | |
| =head3   createSoftware
 | |
| 
 | |
| 	Description	: Create the <software> section
 | |
|     Arguments	: Software list
 | |
|     Returns		: <software> section
 | |
|     Example		: my $section = createSoftware($dns);
 | |
|     
 | |
| =cut
 | |
| 
 | |
| #-------------------------------------------------------
 | |
| sub createSoftware {
 | |
| 	# Get string
 | |
| 	my ($str) = @_;
 | |
| 
 | |
| 	# Split the software
 | |
| 	# e.g. base,gnome
 | |
| 	my @software = split(/,/,$str);
 | |
| 		
 | |
| 	# Create <software> section
 | |
| 	# 	<pattern>Basis-Devel</pattern>
 | |
| 	# 	<pattern>Minimal</pattern>
 | |
| 	# 	<pattern>base</pattern>
 | |
| 	# 	<pattern>documentation</pattern>
 | |
| 	# 	<pattern>file_server</pattern>
 | |
| 	# 	<pattern>gnome</pattern>
 | |
| 	# 	<pattern>print_server</pattern>
 | |
| 	# 	<pattern>x11</pattern>
 | |
|     my $xml = '';
 | |
| 	foreach (@software){
 | |
| 		 $xml .= <<END;
 | |
|   <pattern>$_</pattern>
 | |
| END
 | |
| 	}
 | |
| 
 | |
| 	return $xml;
 | |
| }
 | |
| 
 | |
| #-------------------------------------------------------
 | |
| 
 | |
| =head3   createRoutes
 | |
| 
 | |
| 	Description	: Create the <routes> section
 | |
|     Arguments	: Interfaces hash
 | |
|     Returns		: <routes> section
 | |
|     Example		: my $section = createRoutes($route);
 | |
|     
 | |
| =cut
 | |
| 
 | |
| #-------------------------------------------------------
 | |
| sub createRoutes {
 | |
| 	# Get hash table
 | |
| 	my ($interfaces_ref) = @_;
 | |
| 	my %interfaces = %$interfaces_ref;
 | |
| 	
 | |
| 	# Create <routes> section
 | |
| 	# <ip_forward config:type="boolean">false</ip_forward>
 | |
| 	#   <routes config:type="list">
 | |
| 	#   <route>
 | |
| 	#     <destination>default</destination>
 | |
| 	#     <device>-</device>
 | |
| 	#     <gateway>10.1.100.1</gateway>
 | |
| 	#     <netmask>-</netmask>
 | |
| 	#   </route>
 | |
| 	# </routes>
 | |
| 
 | |
| 	my $xml = '';
 | |
| 	my $dest = '';
 | |
| 	foreach my $i(sort (keys %interfaces)){
 | |
| 		if(!$dest) {
 | |
| 			# The first interface is the default route
 | |
| 			$dest = 'default';
 | |
| 		} else {
 | |
| 			# Get network
 | |
| 			$dest = substr($interfaces{$i}{'ipaddr'}, 0, rindex($interfaces{$i}{'ipaddr'}, '.'));
 | |
| 			$dest .= ".0";
 | |
| 		}
 | |
| 		
 | |
| 		# Do not set gateway for DHCP interface
 | |
| 		if(!($interfaces{$i}{'bootproto'} eq 'dhcp')) {
 | |
| 			$xml .= <<END;	
 | |
|   <route>
 | |
|     <destination>$dest</destination>
 | |
|     <device>-</device>
 | |
|     <gateway>$interfaces{$i}{'gateway'}</gateway>
 | |
|     <netmask>-</netmask>
 | |
|   </route>
 | |
| END
 | |
| 		}
 | |
| 	}
 | |
| 	
 | |
| 	return $xml;
 | |
| }
 | |
| 
 | |
| #-------------------------------------------------------
 | |
| 
 | |
| =head3   createScripts
 | |
| 
 | |
| 	Description	: Create the <scripts> section to configure interfaces
 | |
|     Arguments	: Interfaces hash
 | |
|     Returns		: <scripts> section
 | |
|     Example		: my $section = createScripts(%interfaces);
 | |
|     
 | |
| =cut
 | |
| 
 | |
| #-------------------------------------------------------
 | |
| sub createScripts {
 | |
| 	# Get hash table
 | |
| 	my ($interfaces_ref) = @_;
 | |
| 	my %interfaces = %$interfaces_ref;
 | |
| 
 | |
| 	# Default route is being added by autoyast (bug)
 | |
| 	# Setting default route in post-script
 | |
|     my $xml = '';
 | |
|     my $script = '';
 | |
| 	foreach my $i(sort (keys %interfaces)){
 | |
| 		# Set the default route for the firs interface
 | |
| 		# Do not set default route for DHCP interface
 | |
| 		if(!$script && !($interfaces{$i}{'bootproto'} eq 'dhcp')) {
 | |
| 			$script .= <<END;
 | |
| echo "default $interfaces{$i}{'gateway'} - -" > /etc/sysconfig/network/routes
 | |
| END
 | |
| 			last;
 | |
| 		}
 | |
| 	}
 | |
| 	
 | |
| 	# Create <scripts> section
 | |
| 	if($script) {
 | |
| 		$xml .= <<END;
 | |
| <post-scripts config:type="list">
 | |
|   <script>
 | |
|     <filename>post.sh</filename>
 | |
|     <interpreter>shell</interpreter>
 | |
|     <source>
 | |
| <![CDATA[
 | |
| #!/bin/sh
 | |
| 
 | |
| $script
 | |
| ]]>
 | |
|     </source>
 | |
|   </script>
 | |
| </post-scripts>
 | |
| END
 | |
| 	}
 | |
| 	
 | |
| 	return $xml;
 | |
| }
 | |
| 
 | |
| #-------------------------------------------------------
 | |
| 
 | |
| =head3   ask
 | |
| 
 | |
| 	Description	: Prompt user for input
 | |
|     Arguments	: Question
 | |
|     Returns		: Answer
 | |
|     Example		: my $answer = ask("What day is today?");
 | |
|     
 | |
| =cut
 | |
| 
 | |
| #-------------------------------------------------------
 | |
| sub ask {
 | |
| 	my ($question) = @_;
 | |
| 	
 | |
| 	print "$question";
 | |
| 	my $answer = <>;	
 | |
| 	return trim($answer);
 | |
| }
 | |
| 
 | |
| #-------------------------------------------------------
 | |
| 
 | |
| =head3   pad
 | |
| 
 | |
| 	Description	: Pad a string to a given length
 | |
|     Arguments	: String and size
 | |
|     Returns		: Padded string
 | |
|     Example		: my $str = pad($str, 12);
 | |
|     
 | |
| =cut
 | |
| 
 | |
| #-------------------------------------------------------
 | |
| sub pad {
 | |
| 	my ($str, $size) = @_;
 | |
| 	
 | |
| 	while (length($str) < $size) {
 | |
| 		$str = "$str ";
 | |
| 	}
 | |
| 
 | |
| 	return $str;
 | |
| }
 | |
| 
 | |
| #-------------------------------------------------------
 | |
| 
 | |
| =head3   genSles11Tmpl
 | |
| 
 | |
| 	Description	: Generate SLES 11 autoyast template
 | |
|     Arguments	: Nothing
 | |
|     Returns		: SLES 11 autoyast template
 | |
|     Example		: my $tmpl = genSles11Tmpl();
 | |
|     
 | |
| =cut
 | |
| 
 | |
| #-------------------------------------------------------
 | |
| sub genSles11Tmpl {
 | |
| 	my $tmpl = <<AUTOYASTEND;
 | |
| <?xml version="1.0"?>
 | |
| <!DOCTYPE profile>
 | |
| <profile xmlns="http://www.suse.com/1.0/yast2ns" xmlns:config="http://www.suse.com/1.0/configns">
 | |
| 
 | |
|   <!-- The dasd attached to the virtual server -->  
 | |
|   <dasd>
 | |
|     <devices config:type="list">
 | |
|       insert_devices     
 | |
|     </devices>
 | |
|   </dasd>
 | |
|   
 | |
|   
 | |
|   <general>
 | |
|     <mode>
 | |
|       <confirm config:type="boolean">false</confirm>
 | |
|     </mode>
 | |
|     <mouse>
 | |
|       <id>none</id>
 | |
|     </mouse>
 | |
|     <signature-handling/>
 | |
|   </general>
 | |
|   
 | |
|   
 | |
|   <!-- Groups to create on Linux -->
 | |
|   <groups config:type="list">
 | |
|     <group>
 | |
|       <groupname>users</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>floppy</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>bin</groupname>
 | |
|       <userlist>daemon</userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>xok</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>nobody</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>modem</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>lp</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>tty</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <group_password>!</group_password>
 | |
|       <groupname>postfix</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <group_password>!</group_password>
 | |
|       <groupname>gdm</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>nogroup</groupname>
 | |
|       <userlist>nobody</userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <group_password>!</group_password>
 | |
|       <groupname>maildrop</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <group_password>!</group_password>
 | |
|       <groupname>messagebus</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>video</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>sys</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>shadow</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>console</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>cdrom</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <group_password>!</group_password>
 | |
|       <groupname>haldaemon</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>trusted</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>dialout</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <group_password>!</group_password>
 | |
|       <groupname>ts-shell</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>wheel</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>www</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>games</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>disk</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>audio</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <group_password>!</group_password>
 | |
|       <groupname>suse-ncc</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>ftp</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <group_password>!</group_password>
 | |
|       <groupname>at</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>kmem</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>public</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>root</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>mail</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>daemon</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <group_password>!</group_password>
 | |
|       <groupname>ntp</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>uucp</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <group_password>!</group_password>
 | |
|       <groupname>ntadmin</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>man</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>utmp</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>news</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <group_password>!</group_password>
 | |
|       <groupname>sshd</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|   </groups>
 | |
|   
 | |
|   
 | |
|   <!-- Contents of /etc/hosts -->
 | |
|   <host>
 | |
|     <hosts config:type="list">
 | |
|       insert_hosts
 | |
|     </hosts>
 | |
|   </host>
 | |
|     
 | |
| 
 | |
|   <iscsi-client>
 | |
|     <initiatorname></initiatorname>
 | |
|     <targets config:type="list"/>
 | |
|     <version>1.0</version>
 | |
|   </iscsi-client>
 | |
|   
 | |
| 
 | |
|   <!-- Language setup (english) -->
 | |
|   <language>
 | |
|     <language>en_US</language>
 | |
|     <languages></languages>
 | |
|   </language>
 | |
|   
 | |
| 
 | |
|   <!-- Networking setup -->
 | |
|   <networking>
 | |
|     <dhcp_options>
 | |
|       <dhclient_additional_options></dhclient_additional_options>
 | |
|       <dhclient_client_id></dhclient_client_id>
 | |
|       <dhclient_hostname_option>AUTO</dhclient_hostname_option>
 | |
|     </dhcp_options>
 | |
|     <dns>
 | |
|       insert_dns
 | |
|     </dns>
 | |
|     <interfaces config:type="list">
 | |
|       insert_interfaces
 | |
|     </interfaces>
 | |
|     <managed config:type="boolean">false</managed>
 | |
| 
 | |
| 
 | |
|     <!-- Device type -->
 | |
|     <modules config:type="list">
 | |
|       insert_modules
 | |
|     </modules>
 | |
|     <routing>
 | |
|       <ip_forward config:type="boolean">false</ip_forward>
 | |
|       <routes config:type="list">
 | |
|         insert_routes
 | |
|       </routes>
 | |
|     </routing>
 | |
|   </networking>
 | |
|   
 | |
|   
 | |
|   <nis>
 | |
|     <nis_broadcast config:type="boolean">false</nis_broadcast>
 | |
|     <nis_broken_server config:type="boolean">false</nis_broken_server>
 | |
|     <nis_by_dhcp config:type="boolean">false</nis_by_dhcp>
 | |
|     <nis_domain></nis_domain>
 | |
|     <nis_local_only config:type="boolean">false</nis_local_only>
 | |
|     <nis_options></nis_options>
 | |
|     <nis_other_domains config:type="list">
 | |
|     </nis_other_domains>
 | |
|     <nis_servers config:type="list"/>
 | |
|     <start_autofs config:type="boolean">false</start_autofs>
 | |
|     <start_nis config:type="boolean">false</start_nis>
 | |
|   </nis>
 | |
|   
 | |
|   
 | |
|   <!-- File system partitioning -->
 | |
|   <partitioning config:type="list">
 | |
|     insert_partitioning_drives
 | |
|   </partitioning>
 | |
|     
 | |
|   
 | |
|   <proxy>
 | |
|     <enabled config:type="boolean">false</enabled>
 | |
|     <ftp_proxy></ftp_proxy>
 | |
|     <http_proxy></http_proxy>
 | |
|     <https_proxy></https_proxy>
 | |
|     <no_proxy>localhost, 127.0.0.1</no_proxy>
 | |
|     <proxy_password></proxy_password>
 | |
|     <proxy_user></proxy_user>
 | |
|   </proxy>
 | |
|   
 | |
|   
 | |
|   <report>
 | |
|     <errors>
 | |
|       <log config:type="boolean">true</log>
 | |
|       <show config:type="boolean">true</show>
 | |
|       <timeout config:type="integer">0</timeout>
 | |
|     </errors>
 | |
|     <messages>
 | |
|       <log config:type="boolean">true</log>
 | |
|       <show config:type="boolean">true</show>
 | |
|       <timeout config:type="integer">0</timeout>
 | |
|     </messages>
 | |
|     <warnings>
 | |
|       <log config:type="boolean">true</log>
 | |
|       <show config:type="boolean">true</show>
 | |
|       <timeout config:type="integer">0</timeout>
 | |
|     </warnings>
 | |
|     <yesno_messages>
 | |
|       <log config:type="boolean">true</log>
 | |
|       <show config:type="boolean">true</show>
 | |
|       <timeout config:type="integer">0</timeout>
 | |
|     </yesno_messages>
 | |
|   </report>
 | |
|   
 | |
|   
 | |
|   <runlevel>
 | |
|     <default>5</default>
 | |
|   </runlevel>
 | |
|   
 | |
|   
 | |
|   <!-- Software to install on Linux -->
 | |
|   <software>
 | |
|     <patterns config:type="list">
 | |
|       replace_software_patterns
 | |
|     </patterns>
 | |
|     <packages config:type="list">
 | |
|       replace_software_packages
 | |
|     </packages>
 | |
|   </software>
 | |
|   
 | |
|   
 | |
|   <!-- Time zone -->
 | |
|   <timezone>
 | |
|     <hwclock>UTC</hwclock>
 | |
|     <timezone>US/Eastern</timezone>
 | |
|   </timezone>
 | |
|   
 | |
|   
 | |
|   <user_defaults>
 | |
|     <expire></expire>
 | |
|     <group>100</group>
 | |
|     <groups>video,dialout</groups>
 | |
|     <home>/home</home>
 | |
|     <inactive>-1</inactive>
 | |
|     <shell>/bin/bash</shell>
 | |
|     <skel>/etc/skel</skel>
 | |
|   </user_defaults>
 | |
| AUTOYASTEND
 | |
| 
 | |
| 	# Handle second half
 | |
| 	$tmpl .= <<AUTOYASTEND;
 | |
| 	
 | |
| 
 | |
|   <!-- Users on Linux -->
 | |
|   <users config:type="list">
 | |
|     <user>
 | |
|       <encrypted config:type="boolean">true</encrypted>
 | |
|       <fullname>Games account</fullname>
 | |
|       <gid>100</gid>
 | |
|       <home>/var/games</home>
 | |
|       <password_settings>
 | |
|         <expire></expire>
 | |
|         <flag></flag>
 | |
|         <inact></inact>
 | |
|         <max></max>
 | |
|         <min></min>
 | |
|         <warn></warn>
 | |
|       </password_settings>
 | |
|       <shell>/bin/bash</shell>
 | |
|       <uid>12</uid>
 | |
|       <user_password>*</user_password>
 | |
|       <username>games</username>
 | |
|     </user>
 | |
|     <user>
 | |
|       <encrypted config:type="boolean">true</encrypted>
 | |
|       <fullname>bin</fullname>
 | |
|       <gid>1</gid>
 | |
|       <home>/bin</home>
 | |
|       <password_settings>
 | |
|         <expire></expire>
 | |
|         <flag></flag>
 | |
|         <inact></inact>
 | |
|         <max></max>
 | |
|         <min></min>
 | |
|         <warn></warn>
 | |
|       </password_settings>
 | |
|       <shell>/bin/bash</shell>
 | |
|       <uid>1</uid>
 | |
|       <user_password>*</user_password>
 | |
|       <username>bin</username>
 | |
|     </user>
 | |
|     <user>
 | |
|       <encrypted config:type="boolean">true</encrypted>
 | |
|       <fullname>nobody</fullname>
 | |
|       <gid>65533</gid>
 | |
|       <home>/var/lib/nobody</home>
 | |
|       <password_settings>
 | |
|         <expire></expire>
 | |
|         <flag></flag>
 | |
|         <inact></inact>
 | |
|         <max></max>
 | |
|         <min></min>
 | |
|         <warn></warn>
 | |
|       </password_settings>
 | |
|       <shell>/bin/bash</shell>
 | |
|       <uid>65534</uid>
 | |
|       <user_password>*</user_password>
 | |
|       <username>nobody</username>
 | |
|     </user>
 | |
|     <user>
 | |
|       <encrypted config:type="boolean">true</encrypted>
 | |
|       <fullname>Printing daemon</fullname>
 | |
|       <gid>7</gid>
 | |
|       <home>/var/spool/lpd</home>
 | |
|       <password_settings>
 | |
|         <expire></expire>
 | |
|         <flag></flag>
 | |
|         <inact></inact>
 | |
|         <max></max>
 | |
|         <min></min>
 | |
|         <warn></warn>
 | |
|       </password_settings>
 | |
|       <shell>/bin/bash</shell>
 | |
|       <uid>4</uid>
 | |
|       <user_password>*</user_password>
 | |
|       <username>lp</username>
 | |
|     </user>
 | |
|     <user>
 | |
|       <encrypted config:type="boolean">true</encrypted>
 | |
|       <fullname>Postfix Daemon</fullname>
 | |
|       <gid>51</gid>
 | |
|       <home>/var/spool/postfix</home>
 | |
|       <password_settings>
 | |
|         <expire></expire>
 | |
|         <flag></flag>
 | |
|         <inact></inact>
 | |
|         <max>99999</max>
 | |
|         <min>0</min>
 | |
|         <warn>7</warn>
 | |
|       </password_settings>
 | |
|       <shell>/bin/false</shell>
 | |
|       <uid>51</uid>
 | |
|       <user_password>!</user_password>
 | |
|       <username>postfix</username>
 | |
|     </user>
 | |
|     <user>
 | |
|       <encrypted config:type="boolean">true</encrypted>
 | |
|       <fullname>Novell Customer Center User</fullname>
 | |
|       <gid>106</gid>
 | |
|       <home>/var/lib/YaST2/suse-ncc-fakehome</home>
 | |
|       <password_settings>
 | |
|         <expire></expire>
 | |
|         <flag></flag>
 | |
|         <inact></inact>
 | |
|         <max>99999</max>
 | |
|         <min>0</min>
 | |
|         <warn>7</warn>
 | |
|       </password_settings>
 | |
|       <shell>/bin/bash</shell>
 | |
|       <uid>102</uid>
 | |
|       <user_password>!</user_password>
 | |
|       <username>suse-ncc</username>
 | |
|     </user>
 | |
|     <user>
 | |
|       <encrypted config:type="boolean">true</encrypted>
 | |
|       <fullname>FTP account</fullname>
 | |
|       <gid>49</gid>
 | |
|       <home>/srv/ftp</home>
 | |
|       <password_settings>
 | |
|         <expire></expire>
 | |
|         <flag></flag>
 | |
|         <inact></inact>
 | |
|         <max></max>
 | |
|         <min></min>
 | |
|         <warn></warn>
 | |
|       </password_settings>
 | |
|       <shell>/bin/bash</shell>
 | |
|       <uid>40</uid>
 | |
|       <user_password>*</user_password>
 | |
|       <username>ftp</username>
 | |
|     </user>
 | |
|     <user>
 | |
|       <encrypted config:type="boolean">false</encrypted>
 | |
|       <fullname>root</fullname>
 | |
|       <gid>0</gid>
 | |
|       <home>/root</home>
 | |
|       <password_settings>
 | |
|         <expire></expire>
 | |
|         <flag></flag>
 | |
|         <inact></inact>
 | |
|         <max></max>
 | |
|         <min></min>
 | |
|         <warn></warn>
 | |
|       </password_settings>
 | |
|       <shell>/bin/bash</shell>
 | |
|       <uid>0</uid>
 | |
|       <user_password>insert_root_password</user_password>
 | |
|       <username>root</username>
 | |
|     </user>
 | |
|     <user>
 | |
|       <encrypted config:type="boolean">true</encrypted>
 | |
|       <fullname>Mailer daemon</fullname>
 | |
|       <gid>12</gid>
 | |
|       <home>/var/spool/clientmqueue</home>
 | |
|       <password_settings>
 | |
|         <expire></expire>
 | |
|         <flag></flag>
 | |
|         <inact></inact>
 | |
|         <max></max>
 | |
|         <min></min>
 | |
|         <warn></warn>
 | |
|       </password_settings>
 | |
|       <shell>/bin/false</shell>
 | |
|       <uid>8</uid>
 | |
|       <user_password>*</user_password>
 | |
|       <username>mail</username>
 | |
|     </user>
 | |
|     <user>
 | |
|       <encrypted config:type="boolean">true</encrypted>
 | |
|       <fullname>Daemon</fullname>
 | |
|       <gid>2</gid>
 | |
|       <home>/sbin</home>
 | |
|       <password_settings>
 | |
|         <expire></expire>
 | |
|         <flag></flag>
 | |
|         <inact></inact>
 | |
|         <max></max>
 | |
|         <min></min>
 | |
|         <warn></warn>
 | |
|       </password_settings>
 | |
|       <shell>/bin/bash</shell>
 | |
|       <uid>2</uid>
 | |
|       <user_password>*</user_password>
 | |
|       <username>daemon</username>
 | |
|     </user>
 | |
|     <user>
 | |
|       <encrypted config:type="boolean">true</encrypted>
 | |
|       <fullname>NTP daemon</fullname>
 | |
|       <gid>103</gid>
 | |
|       <home>/var/lib/ntp</home>
 | |
|       <password_settings>
 | |
|         <expire></expire>
 | |
|         <flag></flag>
 | |
|         <inact></inact>
 | |
|         <max>99999</max>
 | |
|         <min>0</min>
 | |
|         <warn>7</warn>
 | |
|       </password_settings>
 | |
|       <shell>/bin/false</shell>
 | |
|       <uid>74</uid>
 | |
|       <user_password>!</user_password>
 | |
|       <username>ntp</username>
 | |
|     </user>
 | |
|     <user>
 | |
|       <encrypted config:type="boolean">true</encrypted>
 | |
|       <fullname>Unix-to-Unix CoPy system</fullname>
 | |
|       <gid>14</gid>
 | |
|       <home>/etc/uucp</home>
 | |
|       <password_settings>
 | |
|         <expire></expire>
 | |
|         <flag></flag>
 | |
|         <inact></inact>
 | |
|         <max></max>
 | |
|         <min></min>
 | |
|         <warn></warn>
 | |
|       </password_settings>
 | |
|       <shell>/bin/bash</shell>
 | |
|       <uid>10</uid>
 | |
|       <user_password>*</user_password>
 | |
|       <username>uucp</username>
 | |
|     </user>
 | |
|     <user>
 | |
|       <fullname>User for D-BUS</fullname>
 | |
|       <gid>101</gid>
 | |
|       <home>/var/run/dbus</home>
 | |
|       <shell>/bin/false</shell>
 | |
|       <uid>100</uid>
 | |
|     </user>
 | |
|     <user>
 | |
|       <fullname>User for haldaemon</fullname>
 | |
|       <gid>102</gid>
 | |
|       <home>/var/run/hal</home>
 | |
|       <shell>/bin/false</shell>
 | |
|       <uid>101</uid>
 | |
|     </user>
 | |
|     <user>
 | |
|       <encrypted config:type="boolean">true</encrypted>
 | |
|       <fullname>WWW daemon apache</fullname>
 | |
|       <gid>8</gid>
 | |
|       <home>/var/lib/wwwrun</home>
 | |
|       <password_settings>
 | |
|         <expire></expire>
 | |
|         <flag></flag>
 | |
|         <inact></inact>
 | |
|         <max></max>
 | |
|         <min></min>
 | |
|         <warn></warn>
 | |
|       </password_settings>
 | |
|       <shell>/bin/false</shell>
 | |
|       <uid>30</uid>
 | |
|       <user_password>*</user_password>
 | |
|       <username>wwwrun</username>
 | |
|     </user>
 | |
|     <user>
 | |
|       <encrypted config:type="boolean">true</encrypted>
 | |
|       <fullname>Manual pages viewer</fullname>
 | |
|       <gid>62</gid>
 | |
|       <home>/var/cache/man</home>
 | |
|       <password_settings>
 | |
|         <expire></expire>
 | |
|         <flag></flag>
 | |
|         <inact></inact>
 | |
|         <max></max>
 | |
|         <min></min>
 | |
|         <warn></warn>
 | |
|       </password_settings>
 | |
|       <shell>/bin/bash</shell>
 | |
|       <uid>13</uid>
 | |
|       <user_password>*</user_password>
 | |
|       <username>man</username>
 | |
|     </user>
 | |
|     <user>
 | |
|       <encrypted config:type="boolean">true</encrypted>
 | |
|       <fullname>News system</fullname>
 | |
|       <gid>13</gid>
 | |
|       <home>/etc/news</home>
 | |
|       <password_settings>
 | |
|         <expire></expire>
 | |
|         <flag></flag>
 | |
|         <inact></inact>
 | |
|         <max></max>
 | |
|         <min></min>
 | |
|         <warn></warn>
 | |
|       </password_settings>
 | |
|       <shell>/bin/bash</shell>
 | |
|       <uid>9</uid>
 | |
|       <user_password>*</user_password>
 | |
|       <username>news</username>
 | |
|     </user>
 | |
|     <user>
 | |
|       <encrypted config:type="boolean">true</encrypted>
 | |
|       <fullname>SSH daemon</fullname>
 | |
|       <gid>65</gid>
 | |
|       <home>/var/lib/sshd</home>
 | |
|       <password_settings>
 | |
|         <expire></expire>
 | |
|         <flag></flag>
 | |
|         <inact></inact>
 | |
|         <max>99999</max>
 | |
|         <min>0</min>
 | |
|         <warn>7</warn>
 | |
|       </password_settings>
 | |
|       <shell>/bin/false</shell>
 | |
|       <uid>71</uid>
 | |
|       <user_password>!</user_password>
 | |
|       <username>sshd</username>
 | |
|     </user>
 | |
|   </users>
 | |
|   
 | |
|   
 | |
|   <zfcp>
 | |
|     <devices config:type="list"/>
 | |
|   </zfcp>
 | |
|   
 | |
|   
 | |
|   <!-- Scripts (post-script) -->
 | |
|   <configure>
 | |
|     <scripts>
 | |
|     </scripts>
 | |
|   </configure>
 | |
| </profile>	
 | |
| AUTOYASTEND
 | |
| 	return $tmpl;
 | |
| }
 | |
| 
 | |
| #-------------------------------------------------------
 | |
| 
 | |
| =head3   genSles10Tmpl
 | |
| 
 | |
| 	Description	: Generate SLES 10 autoyast template
 | |
|     Arguments	: Nothing
 | |
|     Returns		: SLES 10 autoyast template
 | |
|     Example		: my $tmpl = genSles10Tmpl();
 | |
|     
 | |
| =cut
 | |
| 
 | |
| #-------------------------------------------------------
 | |
| sub genSles10Tmpl {
 | |
| 	my $tmpl = <<AUTOYASTEND;
 | |
| <?xml version="1.0"?>
 | |
| <!DOCTYPE profile>
 | |
| <profile xmlns="http://www.suse.com/1.0/yast2ns" xmlns:config="http://www.suse.com/1.0/configns">
 | |
| 
 | |
|   <!-- The dasd attached to the virtual server -->  
 | |
|   <dasd>
 | |
|     <devices config:type="list">
 | |
|       insert_devices     
 | |
|     </devices>
 | |
|   </dasd>
 | |
|   
 | |
|   
 | |
|   <general>
 | |
|     <mode>
 | |
|       <confirm config:type="boolean">false</confirm>
 | |
|     </mode>
 | |
|     <mouse>
 | |
|       <id>none</id>
 | |
|     </mouse>
 | |
|     <signature-handling/>
 | |
|   </general>
 | |
|   
 | |
|   
 | |
|   <!-- Groups to create on Linux -->
 | |
|   <groups config:type="list">
 | |
|     <group>
 | |
|       <groupname>users</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>floppy</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>bin</groupname>
 | |
|       <userlist>daemon</userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>xok</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>nobody</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>modem</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>lp</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>tty</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <group_password>!</group_password>
 | |
|       <groupname>postfix</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <group_password>!</group_password>
 | |
|       <groupname>gdm</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>nogroup</groupname>
 | |
|       <userlist>nobody</userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <group_password>!</group_password>
 | |
|       <groupname>maildrop</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <group_password>!</group_password>
 | |
|       <groupname>messagebus</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>video</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>sys</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>shadow</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>console</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>cdrom</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <group_password>!</group_password>
 | |
|       <groupname>haldaemon</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>trusted</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>dialout</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <group_password>!</group_password>
 | |
|       <groupname>ts-shell</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>wheel</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>www</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>games</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>disk</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>audio</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <group_password>!</group_password>
 | |
|       <groupname>suse-ncc</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>ftp</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <group_password>!</group_password>
 | |
|       <groupname>at</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>kmem</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>public</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>root</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>mail</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>daemon</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <group_password>!</group_password>
 | |
|       <groupname>ntp</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>uucp</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <group_password>!</group_password>
 | |
|       <groupname>ntadmin</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>man</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>utmp</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <groupname>news</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|     <group>
 | |
|       <group_password>!</group_password>
 | |
|       <groupname>sshd</groupname>
 | |
|       <userlist></userlist>
 | |
|     </group>
 | |
|   </groups>
 | |
|   
 | |
|   
 | |
|   <!-- Contents of /etc/hosts -->
 | |
|   <host>
 | |
|     <hosts config:type="list">
 | |
|       insert_hosts
 | |
|     </hosts>
 | |
|   </host>
 | |
|     
 | |
| 
 | |
|   <iscsi-client>
 | |
|     <initiatorname></initiatorname>
 | |
|     <targets config:type="list"/>
 | |
|     <version>1.0</version>
 | |
|   </iscsi-client>
 | |
|   
 | |
| 
 | |
|   <!-- Language setup (english) -->
 | |
|   <language>
 | |
|     <language>en_US</language>
 | |
|     <languages></languages>
 | |
|   </language>
 | |
|   
 | |
| 
 | |
|   <!-- Networking setup -->
 | |
|   <networking>
 | |
|     <dhcp_options>
 | |
|       <dhclient_additional_options></dhclient_additional_options>
 | |
|       <dhclient_client_id></dhclient_client_id>
 | |
|       <dhclient_hostname_option>AUTO</dhclient_hostname_option>
 | |
|     </dhcp_options>
 | |
|     <dns>
 | |
|       insert_dns
 | |
|     </dns>
 | |
|     <interfaces config:type="list">
 | |
|       insert_interfaces
 | |
|     </interfaces>
 | |
|     <managed config:type="boolean">false</managed>
 | |
| 
 | |
| 
 | |
|     <!-- Device type -->
 | |
|     <modules config:type="list">
 | |
|       insert_modules
 | |
|     </modules>
 | |
|     <routing>
 | |
|       <ip_forward config:type="boolean">false</ip_forward>
 | |
|       <routes config:type="list">
 | |
|         insert_routes
 | |
|       </routes>
 | |
|     </routing>
 | |
|   </networking>
 | |
|   
 | |
|   
 | |
|   <nis>
 | |
|     <nis_broadcast config:type="boolean">false</nis_broadcast>
 | |
|     <nis_broken_server config:type="boolean">false</nis_broken_server>
 | |
|     <nis_by_dhcp config:type="boolean">false</nis_by_dhcp>
 | |
|     <nis_domain></nis_domain>
 | |
|     <nis_local_only config:type="boolean">false</nis_local_only>
 | |
|     <nis_options></nis_options>
 | |
|     <nis_other_domains config:type="list">
 | |
|     </nis_other_domains>
 | |
|     <nis_servers config:type="list"/>
 | |
|     <start_autofs config:type="boolean">false</start_autofs>
 | |
|     <start_nis config:type="boolean">false</start_nis>
 | |
|   </nis>
 | |
|   
 | |
|   
 | |
|   <!-- File system partitioning -->
 | |
|   <partitioning config:type="list">
 | |
|     insert_partitioning_drives
 | |
|   </partitioning>
 | |
|     
 | |
|   
 | |
|   <proxy>
 | |
|     <enabled config:type="boolean">false</enabled>
 | |
|     <ftp_proxy></ftp_proxy>
 | |
|     <http_proxy></http_proxy>
 | |
|     <https_proxy></https_proxy>
 | |
|     <no_proxy>localhost, 127.0.0.1</no_proxy>
 | |
|     <proxy_password></proxy_password>
 | |
|     <proxy_user></proxy_user>
 | |
|   </proxy>
 | |
|   
 | |
|   
 | |
|   <report>
 | |
|     <errors>
 | |
|       <log config:type="boolean">true</log>
 | |
|       <show config:type="boolean">true</show>
 | |
|       <timeout config:type="integer">0</timeout>
 | |
|     </errors>
 | |
|     <messages>
 | |
|       <log config:type="boolean">true</log>
 | |
|       <show config:type="boolean">true</show>
 | |
|       <timeout config:type="integer">0</timeout>
 | |
|     </messages>
 | |
|     <warnings>
 | |
|       <log config:type="boolean">true</log>
 | |
|       <show config:type="boolean">true</show>
 | |
|       <timeout config:type="integer">0</timeout>
 | |
|     </warnings>
 | |
|     <yesno_messages>
 | |
|       <log config:type="boolean">true</log>
 | |
|       <show config:type="boolean">true</show>
 | |
|       <timeout config:type="integer">0</timeout>
 | |
|     </yesno_messages>
 | |
|   </report>
 | |
|   
 | |
|   
 | |
|   <runlevel>
 | |
|     <default>5</default>
 | |
|   </runlevel>
 | |
|   
 | |
|   
 | |
|   <!-- Software to install on Linux -->
 | |
|   <software>
 | |
|     <patterns config:type="list">
 | |
|       replace_software_patterns
 | |
|     </patterns>
 | |
|     <packages config:type="list">
 | |
|       replace_software_packages
 | |
|     </packages>
 | |
|   </software>
 | |
|   
 | |
|   
 | |
|   <!-- Time zone -->
 | |
|   <timezone>
 | |
|     <hwclock>UTC</hwclock>
 | |
|     <timezone>US/Eastern</timezone>
 | |
|   </timezone>
 | |
|   
 | |
|   
 | |
|   <user_defaults>
 | |
|     <expire></expire>
 | |
|     <group>100</group>
 | |
|     <groups>video,dialout</groups>
 | |
|     <home>/home</home>
 | |
|     <inactive>-1</inactive>
 | |
|     <shell>/bin/bash</shell>
 | |
|     <skel>/etc/skel</skel>
 | |
|   </user_defaults>
 | |
| AUTOYASTEND
 | |
|   
 | |
| 	$tmpl .= <<AUTOYASTEND;
 | |
| 
 | |
| 
 | |
|   <!-- Users on Linux -->
 | |
|   <users config:type="list">
 | |
|     <user>
 | |
|       <encrypted config:type="boolean">true</encrypted>
 | |
|       <fullname>Games account</fullname>
 | |
|       <gid>100</gid>
 | |
|       <home>/var/games</home>
 | |
|       <password_settings>
 | |
|         <expire></expire>
 | |
|         <flag></flag>
 | |
|         <inact></inact>
 | |
|         <max></max>
 | |
|         <min></min>
 | |
|         <warn></warn>
 | |
|       </password_settings>
 | |
|       <shell>/bin/bash</shell>
 | |
|       <uid>12</uid>
 | |
|       <user_password>*</user_password>
 | |
|       <username>games</username>
 | |
|     </user>
 | |
|     <user>
 | |
|       <encrypted config:type="boolean">true</encrypted>
 | |
|       <fullname>bin</fullname>
 | |
|       <gid>1</gid>
 | |
|       <home>/bin</home>
 | |
|       <password_settings>
 | |
|         <expire></expire>
 | |
|         <flag></flag>
 | |
|         <inact></inact>
 | |
|         <max></max>
 | |
|         <min></min>
 | |
|         <warn></warn>
 | |
|       </password_settings>
 | |
|       <shell>/bin/bash</shell>
 | |
|       <uid>1</uid>
 | |
|       <user_password>*</user_password>
 | |
|       <username>bin</username>
 | |
|     </user>
 | |
|     <user>
 | |
|       <encrypted config:type="boolean">true</encrypted>
 | |
|       <fullname>nobody</fullname>
 | |
|       <gid>65533</gid>
 | |
|       <home>/var/lib/nobody</home>
 | |
|       <password_settings>
 | |
|         <expire></expire>
 | |
|         <flag></flag>
 | |
|         <inact></inact>
 | |
|         <max></max>
 | |
|         <min></min>
 | |
|         <warn></warn>
 | |
|       </password_settings>
 | |
|       <shell>/bin/bash</shell>
 | |
|       <uid>65534</uid>
 | |
|       <user_password>*</user_password>
 | |
|       <username>nobody</username>
 | |
|     </user>
 | |
|     <user>
 | |
|       <encrypted config:type="boolean">true</encrypted>
 | |
|       <fullname>Printing daemon</fullname>
 | |
|       <gid>7</gid>
 | |
|       <home>/var/spool/lpd</home>
 | |
|       <password_settings>
 | |
|         <expire></expire>
 | |
|         <flag></flag>
 | |
|         <inact></inact>
 | |
|         <max></max>
 | |
|         <min></min>
 | |
|         <warn></warn>
 | |
|       </password_settings>
 | |
|       <shell>/bin/bash</shell>
 | |
|       <uid>4</uid>
 | |
|       <user_password>*</user_password>
 | |
|       <username>lp</username>
 | |
|     </user>
 | |
|     <user>
 | |
|       <encrypted config:type="boolean">true</encrypted>
 | |
|       <fullname>Postfix Daemon</fullname>
 | |
|       <gid>51</gid>
 | |
|       <home>/var/spool/postfix</home>
 | |
|       <password_settings>
 | |
|         <expire></expire>
 | |
|         <flag></flag>
 | |
|         <inact></inact>
 | |
|         <max>99999</max>
 | |
|         <min>0</min>
 | |
|         <warn>7</warn>
 | |
|       </password_settings>
 | |
|       <shell>/bin/false</shell>
 | |
|       <uid>51</uid>
 | |
|       <user_password>!</user_password>
 | |
|       <username>postfix</username>
 | |
|     </user>
 | |
|     <user>
 | |
|       <encrypted config:type="boolean">true</encrypted>
 | |
|       <fullname>Novell Customer Center User</fullname>
 | |
|       <gid>106</gid>
 | |
|       <home>/var/lib/YaST2/suse-ncc-fakehome</home>
 | |
|       <password_settings>
 | |
|         <expire></expire>
 | |
|         <flag></flag>
 | |
|         <inact></inact>
 | |
|         <max>99999</max>
 | |
|         <min>0</min>
 | |
|         <warn>7</warn>
 | |
|       </password_settings>
 | |
|       <shell>/bin/bash</shell>
 | |
|       <uid>102</uid>
 | |
|       <user_password>!</user_password>
 | |
|       <username>suse-ncc</username>
 | |
|     </user>
 | |
|     <user>
 | |
|       <encrypted config:type="boolean">true</encrypted>
 | |
|       <fullname>FTP account</fullname>
 | |
|       <gid>49</gid>
 | |
|       <home>/srv/ftp</home>
 | |
|       <password_settings>
 | |
|         <expire></expire>
 | |
|         <flag></flag>
 | |
|         <inact></inact>
 | |
|         <max></max>
 | |
|         <min></min>
 | |
|         <warn></warn>
 | |
|       </password_settings>
 | |
|       <shell>/bin/bash</shell>
 | |
|       <uid>40</uid>
 | |
|       <user_password>*</user_password>
 | |
|       <username>ftp</username>
 | |
|     </user>
 | |
|     <user>
 | |
|       <encrypted config:type="boolean">false</encrypted>
 | |
|       <fullname>root</fullname>
 | |
|       <gid>0</gid>
 | |
|       <home>/root</home>
 | |
|       <password_settings>
 | |
|         <expire></expire>
 | |
|         <flag></flag>
 | |
|         <inact></inact>
 | |
|         <max></max>
 | |
|         <min></min>
 | |
|         <warn></warn>
 | |
|       </password_settings>
 | |
|       <shell>/bin/bash</shell>
 | |
|       <uid>0</uid>
 | |
|       <user_password>insert_root_password</user_password>
 | |
|       <username>root</username>
 | |
|     </user>
 | |
|     <user>
 | |
|       <encrypted config:type="boolean">true</encrypted>
 | |
|       <fullname>Mailer daemon</fullname>
 | |
|       <gid>12</gid>
 | |
|       <home>/var/spool/clientmqueue</home>
 | |
|       <password_settings>
 | |
|         <expire></expire>
 | |
|         <flag></flag>
 | |
|         <inact></inact>
 | |
|         <max></max>
 | |
|         <min></min>
 | |
|         <warn></warn>
 | |
|       </password_settings>
 | |
|       <shell>/bin/false</shell>
 | |
|       <uid>8</uid>
 | |
|       <user_password>*</user_password>
 | |
|       <username>mail</username>
 | |
|     </user>
 | |
|     <user>
 | |
|       <encrypted config:type="boolean">true</encrypted>
 | |
|       <fullname>Daemon</fullname>
 | |
|       <gid>2</gid>
 | |
|       <home>/sbin</home>
 | |
|       <password_settings>
 | |
|         <expire></expire>
 | |
|         <flag></flag>
 | |
|         <inact></inact>
 | |
|         <max></max>
 | |
|         <min></min>
 | |
|         <warn></warn>
 | |
|       </password_settings>
 | |
|       <shell>/bin/bash</shell>
 | |
|       <uid>2</uid>
 | |
|       <user_password>*</user_password>
 | |
|       <username>daemon</username>
 | |
|     </user>
 | |
|     <user>
 | |
|       <encrypted config:type="boolean">true</encrypted>
 | |
|       <fullname>NTP daemon</fullname>
 | |
|       <gid>103</gid>
 | |
|       <home>/var/lib/ntp</home>
 | |
|       <password_settings>
 | |
|         <expire></expire>
 | |
|         <flag></flag>
 | |
|         <inact></inact>
 | |
|         <max>99999</max>
 | |
|         <min>0</min>
 | |
|         <warn>7</warn>
 | |
|       </password_settings>
 | |
|       <shell>/bin/false</shell>
 | |
|       <uid>74</uid>
 | |
|       <user_password>!</user_password>
 | |
|       <username>ntp</username>
 | |
|     </user>
 | |
|     <user>
 | |
|       <encrypted config:type="boolean">true</encrypted>
 | |
|       <fullname>Unix-to-Unix CoPy system</fullname>
 | |
|       <gid>14</gid>
 | |
|       <home>/etc/uucp</home>
 | |
|       <password_settings>
 | |
|         <expire></expire>
 | |
|         <flag></flag>
 | |
|         <inact></inact>
 | |
|         <max></max>
 | |
|         <min></min>
 | |
|         <warn></warn>
 | |
|       </password_settings>
 | |
|       <shell>/bin/bash</shell>
 | |
|       <uid>10</uid>
 | |
|       <user_password>*</user_password>
 | |
|       <username>uucp</username>
 | |
|     </user>
 | |
|     <user>
 | |
|       <fullname>User for D-BUS</fullname>
 | |
|       <gid>101</gid>
 | |
|       <home>/var/run/dbus</home>
 | |
|       <shell>/bin/false</shell>
 | |
|       <uid>100</uid>
 | |
|     </user>
 | |
|     <user>
 | |
|       <fullname>User for haldaemon</fullname>
 | |
|       <gid>102</gid>
 | |
|       <home>/var/run/hal</home>
 | |
|       <shell>/bin/false</shell>
 | |
|       <uid>101</uid>
 | |
|     </user>
 | |
|     <user>
 | |
|       <encrypted config:type="boolean">true</encrypted>
 | |
|       <fullname>WWW daemon apache</fullname>
 | |
|       <gid>8</gid>
 | |
|       <home>/var/lib/wwwrun</home>
 | |
|       <password_settings>
 | |
|         <expire></expire>
 | |
|         <flag></flag>
 | |
|         <inact></inact>
 | |
|         <max></max>
 | |
|         <min></min>
 | |
|         <warn></warn>
 | |
|       </password_settings>
 | |
|       <shell>/bin/false</shell>
 | |
|       <uid>30</uid>
 | |
|       <user_password>*</user_password>
 | |
|       <username>wwwrun</username>
 | |
|     </user>
 | |
|     <user>
 | |
|       <encrypted config:type="boolean">true</encrypted>
 | |
|       <fullname>Manual pages viewer</fullname>
 | |
|       <gid>62</gid>
 | |
|       <home>/var/cache/man</home>
 | |
|       <password_settings>
 | |
|         <expire></expire>
 | |
|         <flag></flag>
 | |
|         <inact></inact>
 | |
|         <max></max>
 | |
|         <min></min>
 | |
|         <warn></warn>
 | |
|       </password_settings>
 | |
|       <shell>/bin/bash</shell>
 | |
|       <uid>13</uid>
 | |
|       <user_password>*</user_password>
 | |
|       <username>man</username>
 | |
|     </user>
 | |
|     <user>
 | |
|       <encrypted config:type="boolean">true</encrypted>
 | |
|       <fullname>News system</fullname>
 | |
|       <gid>13</gid>
 | |
|       <home>/etc/news</home>
 | |
|       <password_settings>
 | |
|         <expire></expire>
 | |
|         <flag></flag>
 | |
|         <inact></inact>
 | |
|         <max></max>
 | |
|         <min></min>
 | |
|         <warn></warn>
 | |
|       </password_settings>
 | |
|       <shell>/bin/bash</shell>
 | |
|       <uid>9</uid>
 | |
|       <user_password>*</user_password>
 | |
|       <username>news</username>
 | |
|     </user>
 | |
|     <user>
 | |
|       <encrypted config:type="boolean">true</encrypted>
 | |
|       <fullname>SSH daemon</fullname>
 | |
|       <gid>65</gid>
 | |
|       <home>/var/lib/sshd</home>
 | |
|       <password_settings>
 | |
|         <expire></expire>
 | |
|         <flag></flag>
 | |
|         <inact></inact>
 | |
|         <max>99999</max>
 | |
|         <min>0</min>
 | |
|         <warn>7</warn>
 | |
|       </password_settings>
 | |
|       <shell>/bin/false</shell>
 | |
|       <uid>71</uid>
 | |
|       <user_password>!</user_password>
 | |
|       <username>sshd</username>
 | |
|     </user>
 | |
|   </users>
 | |
|   
 | |
|   
 | |
|   <zfcp>
 | |
|     <devices config:type="list"/>
 | |
|   </zfcp>
 | |
|   
 | |
|   
 | |
|   <!-- Scripts (post-script) -->
 | |
|   <configure>
 | |
|     <scripts>
 | |
|     </scripts>
 | |
|   </configure>
 | |
| </profile>
 | |
| AUTOYASTEND
 | |
| 	return $tmpl;
 | |
| }
 |