diff options
| author | Suren A. Chilingaryan <csa@suren.me> | 2019-10-06 04:22:09 +0200 | 
|---|---|---|
| committer | Suren A. Chilingaryan <csa@suren.me> | 2019-10-06 04:22:09 +0200 | 
| commit | c9e8493bace8888129dd432bdd976a0c3aa322e2 (patch) | |
| tree | 1a49e4c3b478b19a30f397cac887a254426d2a6c | |
| parent | f03a04b8036b85ba452ff195bc3fddfc71ba5cb3 (diff) | |
| download | kickstart-c9e8493bace8888129dd432bdd976a0c3aa322e2.tar.gz kickstart-c9e8493bace8888129dd432bdd976a0c3aa322e2.tar.bz2 kickstart-c9e8493bace8888129dd432bdd976a0c3aa322e2.tar.xz kickstart-c9e8493bace8888129dd432bdd976a0c3aa322e2.zip  | |
CentOS8 and testing with ipecompute* servers
| l--------- | centos | 1 | ||||
| -rw-r--r-- | centos7/index.php (renamed from centos/index.php) | 2 | ||||
| -rw-r--r-- | centos8/drivers/kmod-arcmsr.rpm | bin | 0 -> 45884 bytes | |||
| -rw-r--r-- | centos8/index.php | 8 | ||||
| -rw-r--r-- | config.php | 83 | ||||
| -rw-r--r-- | docs/driverdisk.txt | 23 | ||||
| -rw-r--r-- | index.php | 48 | ||||
| -rw-r--r-- | ipe.ks | 41 | ||||
| -rw-r--r-- | templates/base-centos7 | 1 | ||||
| -rw-r--r-- | templates/base-centos8 | 1 | ||||
| -rw-r--r-- | templates/base-fedora | 1 | ||||
| -rw-r--r-- | templates/packages-centos7 | 1 | ||||
| -rw-r--r-- | templates/packages-centos8 | 2 | ||||
| -rw-r--r-- | templates/packages-fedora | 2 | ||||
| -rw-r--r-- | templates/post-arcmsr | 12 | ||||
| l--------- | templates/post-ipecompute1 | 1 | ||||
| -rw-r--r-- | templates/storage-hdd (renamed from templates/hdd) | 6 | ||||
| -rw-r--r-- | templates/storage-raid0 (renamed from templates/raid0) | 4 | ||||
| -rw-r--r-- | templates/storage-raid1 (renamed from templates/raid1) | 4 | 
19 files changed, 180 insertions, 61 deletions
@@ -0,0 +1 @@ +centos7
\ No newline at end of file diff --git a/centos/index.php b/centos7/index.php index 00e5b3e..8852b6e 100644 --- a/centos/index.php +++ b/centos7/index.php @@ -1,6 +1,6 @@  <?php -$DISTRIBUTION="centos"; +$DISTRIBUTION="centos7";  chdir("..");  require "index.php"; diff --git a/centos8/drivers/kmod-arcmsr.rpm b/centos8/drivers/kmod-arcmsr.rpm Binary files differnew file mode 100644 index 0000000..1800645 --- /dev/null +++ b/centos8/drivers/kmod-arcmsr.rpm diff --git a/centos8/index.php b/centos8/index.php new file mode 100644 index 0000000..51b7cf7 --- /dev/null +++ b/centos8/index.php @@ -0,0 +1,8 @@ +<?php + +$DISTRIBUTION="centos8"; + +chdir(".."); +require "index.php"; + +?>
\ No newline at end of file @@ -1,70 +1,69 @@  <?php -//$DEFAULT_SERVER = "ipecamera4"; -$DISTRIBUTIONS=array("centos", "fedora"); +$DEFAULT_SERVER = "ipecompute1"; +$DISTRIBUTIONS=array("centos7", "centos8", "fedora");  # disks will be synchronized with k3 -$KATRIN_SERVERS = array( -    "ks" => "ipekatrin-v4.ks", + +$SERVERS = array(      "templates" => "templates", +    "sysdisks" => "sdb,sdc", +    "eth" => array("eno1", "eno2"),      "domain" => "ipe.kit.edu",      "cidr" => 23,      "gw" => "141.52.64.207",      "ns" => "141.52.3.3,141.52.8.18",      "time" => "141.52.8.18", -    "sysdisks" => "sdb,sdc",      "append_sol" => "console=tty1 console=ttyS1,115200 earlyprint=serial,ttyS1,115200",      "raid" => "RAID1",      "size" => "80000", +    "home_size" => "500000",      "bootsize" => "2048", -    "eth" => array("enp3s0f1", "enp3s0f0"), +    "skip_security" => false, +    "skip_minimal" => false, +    "skip_home" => false,  ); -$IPE_SERVERS = array_merge($KATRIN_SERVERS, array( + +$KATRIN_SERVERS = array_merge($SERVERS, array( +    "ks" => "ipekatrin-v4.ks", +    "eth" => array("enp3s0f1", "enp3s0f0"), +)); + +$IPE_SERVERS = array_merge($SERVERS, array(      "ks" => "ipe.ks",      "cidr" => 24,      "base_net" => "192.168.26.",      "gw" => "192.168.26.117", -    "sysdisks" => "sda,sdb", -    "append_sol" => "", -    "raid" => "RAID1",      "size" => "200000", -    "home_size" => "800000", -    "bootsize" => "2048", -    "eth" => array("eth0", "eth1"), -    "skip_security" => true, -    "skip_minimal" => false, -    "skip_home" => false, +  ));  $ANDS_SERVERS = array_merge($IPE_SERVERS, array( -    "ks" => "ipe.ks", -    "cidr" => 24, -    "base_net" => "192.168.26.",      "base_ip" => 140, -    "gw" => "192.168.26.117", -    "sysdisks" => "sda,sdb", -    "append_sol" => "console=tty1 console=ttyS1,115200 earlyprint=serial,ttyS1,115200", -    "raid" => "RAID1", -    "size" => "200000", -//    "home_size" => "200000", -    "bootsize" => "2048", -    "eth" => array("eno1", "eno2"), -    "skip_security" => false, -    "skip_minimal" => false,      "skip_home" => true,  )); +$COMPUTE_SERVERS = array_merge($IPE_SERVERS, array( +    "base_ip" => 130, +    "raid" => "RAID0", +    "skip_home" => false, +)); + +  $CAMERA_SERVERS = array_merge($IPE_SERVERS, array( +    "base_ip" => 80, +    "sysdisks" => "sda,sdb",      "raid" => "RAID0", -    "append_sol" => "console=tty1 console=ttyS1,115200 earlyprint=serial,ttyS1,115200", -    "eth" => array("eno1", "eno2"), -    "base_ip" => 80 +    "skip_security" => true  ));  $STUDENT_SERVERS = array_merge($IPE_SERVERS, array( +    "base_ip" => 60,      "eth" => array("enp9s0", "enp6s0"), -    "base_ip" => 60 +    "sysdisks" => "sda,sdb", +    "append_sol" => "", +    "skip_security" => true  )); @@ -102,6 +101,24 @@ $SERVER_LIST = array(  	"eth" => array("enp9s0", "enp10s0"),  	"sysdisks" => "sdb,sdc", // IPMI CDROM is emulates a disk which occasionaly get assigned to sdb/sdc, rebooting-retrying few times helps (it gets to sdd)      )), +    "ipecompute1" => array_merge($COMPUTE_SERVERS, array( +	"macs" => array("00:30:48:dd:5e:82", "00:30:48:dd:5e:83"), +	"eth" => array("enp5s0", "enp6s0"), +	"sysdisks" => "sdb", +	"driverdisk" => "kmod-arcmsr.rpm" +    )), +    "ipecompute3" => array_merge($COMPUTE_SERVERS, array( +	"macs" => array("00:25:90:62:c0:26", "00:25:90:62:c0:27"), +	"eth" => array("enp5s0", "enp6s0"), +    )), +    "ipecompute2" => array_merge($COMPUTE_SERVERS, array( +	"macs" => array("00:25:90:95:7c:6c", "00:25:90:95:7c:6d"), +	"sysdisks" => "sdb,sdc" +    )), +    "ipecompute4" => array_merge($COMPUTE_SERVERS, array( +	"macs" => array("0c:c4:7a:b3:28:8c", "0c:c4:7a:b3:28:8d"), +	"sysdisks" => "sdi,sdj" +    )),      "ipecamera0" => array_merge($CAMERA_SERVERS, array(  	"macs" => array("bc:5f:f4:ad:96:e3", "bc:5f:f4:ad:96:eb"),  	"eth" => array("enp20s0", "enp21s0"), diff --git a/docs/driverdisk.txt b/docs/driverdisk.txt new file mode 100644 index 0000000..6c0dd29 --- /dev/null +++ b/docs/driverdisk.txt @@ -0,0 +1,23 @@ +General +------- + - DriverDisk work with ISO images or RPMs +      https://www.marcanoonline.com/post/2016/07/red-hat-enterprise-linux-and-centos-7-driver-disk/ + - Besides providing drivers to installer, it is also necessary to install it, e.g. in %post section. + +RPM +--- + - RPM should contain the driver for installer kernel + - RPM should provie 'kernel-modules' with appropriate version, e.g. +	kernel-modules >= 3.10.0-327.el7.<arch> + - Collection of storage drivers is available at http://elrepo.org +	https://elrepo.org/linux/elrepo/el8/x86_64/ + +ISO (if more than 1 driver is required) +--- +  rhhd3									# File, content is: Driver Update Disk version 3 +  rpms +    x86_64 +	kmod-arcmsr-1.40.00.05-20180309.1.el8_0.elrepo.x86_64.rpm	# RPM with drivers (see above) +	repodata							# Generated with createrepo/createrepo_c +	    repomd.xml +	    ... @@ -5,18 +5,36 @@ require "cidr.php";  require "config.php";  function get_templates(&$server) { +    global $DISTRIBUTION; +      $templates = array();      foreach (glob("{$server['templates']}/*") as $ffn) {  	$fn = basename($ffn);  	$templates[$fn] = file_get_contents($ffn);      } +    $templates['distrib_base_config'] = $templates["base-$DISTRIBUTION"]; +    $templates['distrib_package_config'] = $templates["packages-$DISTRIBUTION"]; +    $templates['distrib_pre_config'] = $templates["pre-$DISTRIBUTION"]; +    $templates['distrib_post_config'] = $templates["post-$DISTRIBUTION"]; + +    $srvid = $server['srvid']; +    $templates['node_base_config'] = $templates["base-$srvid"]; +    $templates['node_package_config'] = $templates["packages-$srvid"]; +    $templates['node_pre_config'] = $templates["pre-$srvid"]; +    $templates['node_post_config'] = $templates["post-$srvid"]; + +    $templates['nd_base_config'] = $templates["base-$srvid-$DISTRIBUTION"]; +    $templates['nd_package_config'] = $templates["packages-$srvid-$DISTRIBUTION"]; +    $templates['nd_pre_config'] = $templates["pre-$srvid-$DISTRIBUTION"]; +    $templates['nd_post_config'] = $templates["post-$srvid-$DISTRIBUTION"]; +      if ((isset($server["disk2"]))&&($server["raid"] !== false)) {  	$raid = $server["raid"];  	if (preg_match("/RAID(\d+)/i", $raid, $m)) $raid = $m[1]; -	$templates['storage_config'] = $templates["raid{$raid}"]; +	$templates['storage_config'] = $templates["storage-raid{$raid}"];      } else { -	$templates['storage_config'] = $templates['hdd']; +	$templates['storage_config'] = $templates['storage-hdd'];      }      unset($server['templates']); @@ -25,10 +43,12 @@ function get_templates(&$server) {  }  function get_server($srvid) { +    global $DISTRIBUTION;      global $SERVER_LIST;      global $NETMASK;      $server = $SERVER_LIST[$srvid]; +    $server['srvid'] = $srvid;      if (!isset($server["fqdn"]))  	$server["fqdn"] = "{$srvid}.{$server['domain']}"; @@ -49,6 +69,12 @@ function get_server($srvid) {  	}      } +    $server["distribution"] = $DISTRIBUTION; +    if ($server["driverdisk"]) +	$server["skip_driverdisk"] = false; +    else +	$server["skip_driverdisk"] = true; +      if ($server["ip"]) {  	$server["skip_ip"] = false;      } else { @@ -88,7 +114,7 @@ function find_mac($macs, $mac_header) {      if (!is_array($macs)) $macs = array($macs);      foreach ($macs as $mac) { -	if (preg_match("/$mac/", $mac_header))  +	if (preg_match("/$mac/i", $mac_header))   	    return true;      }      return false; @@ -108,7 +134,7 @@ function  find_server_by_header($http_header, $value) {      global $SERVER_LIST;      foreach ($SERVER_LIST as $srvid => $server) { -	if ((is_array($server["headers"]))&&(isset($server["headers"][$http_header]))) { +	if ((array_key_exists("headers", $server))&&(is_array($server["headers"]))&&(array_key_exists($http_header, $server["headers"]))) {  	    $expected = $server["headers"][$http_header];  	    if (!is_array($expected)) $expected = array($expected);  	    foreach ($expected as $re) { @@ -150,14 +176,20 @@ function find_server() {  $server = find_server(); -$f = fopen("/srv/www/htdocs/ands/logs/kickstart.log", "a+"); +$f = fopen("../logs/kickstart.log", "a+");  if ($f) { -    fprintf($f, "%s %s at %s\n", $_SERVER["REMOTE_ADDR"], ($server?$server["fqdn"]:"-"), date(DATE_ISO8601)); +    if (isset($_SERVER["HTTP_ANDS_REAL_IP"])) $remote = $_SERVER["HTTP_ANDS_REAL_IP"]; +    elseif (isset($_SERVER["HTTP_ANDS_FORWARDED_FOR"])) $remote = $_SERVER["HTTP_ANDS_FORWARDED_FOR"]; +    elseif (isset($_SERVER["HTTP_X_REAL_IP"])) $remote = $_SERVER["HTTP_X_REAL_IP"]; +    elseif (isset($_SERVER["HTTP_X_FORWARDED_FOR"])) $remote = $_SERVER["HTTP_X_FORWARDED_FOR"]; +    else $remote = $_SERVER["REMOTE_ADDR"]; + +    fprintf($f, "%s %s at %s\n", $remote, ($server?$server["fqdn"]:"-"), date(DATE_ISO8601));      fclose($f);  }  if (!$server) { -    $f = fopen("/srv/www/htdocs/ands/logs/kickstart-new.log", "a+"); +    $f = fopen("../logs/kickstart-new.log", "a+");      if ($f) {  	fwrite($f, "%s\n", date(DATE_ISO8601));  	fwrite($f, print_r($_SERVER, true)); @@ -208,7 +240,7 @@ foreach ($DISTRIBUTIONS as $distrib) {  $ks = preg_replace($patterns, $values, $ks);  if ($VERBOSE) { -    $f = fopen("/srv/www/htdocs/ands/logs/kickstart-verbose.log", "a+"); +    $f = fopen("../logs/kickstart-verbose.log", "a+");      if ($f) {  	fwrite($f, "-----------------------------------------------------\n");  	fwrite($f, "%s\n", date(DATE_ISO8601)); @@ -1,11 +1,12 @@  #version=DEVEL +@DISTRIB_BASE_CONFIG@ +@NODE_BASE_CONFIG@ +@ND_BASE_CONFIG@ +  # System authorization information  auth --enableshadow --passalgo=sha512 -# Use CDROM installation media -cdrom -  # Use graphical install (graphical is enforce by vnc requested at kernel args)  #text  graphical @@ -26,7 +27,7 @@ network  --hostname=@FQDN@  # Partition clearing information -clearpart --all --drives=@SYSDISKS@ +clearpart --all --initlabel --drives=@SYSDISKS@  zerombr  # System bootloader configuration @@ -35,10 +36,13 @@ bootloader --location=mbr --driveorder=@SYSDISKS@ --boot-drive=@BOOTDISK@  --app  #autopart --type=lvm  #reqpart --add-boot +# rpm & iso are supported here +@SKIP_DRIVERDISK@driverdisk --source=http://ufo.kit.edu/ands/kickstart/@DISTRIBUTION@/drivers/@DRIVERDISK@  @STORAGE_CONFIG@ +  logvol / --vgname=sysvg --size=@SIZE@ --name=lv_root --fstype=ext4 -@SKIP_HOME@logvol /home --vgname=sysvg --size=@HOME_SIZE@ --name=lv_home --fstype=ext4 --grow  +@SKIP_HOME@logvol /home --vgname=sysvg --size=@HOME_SIZE@ --name=lv_home --fstype=ext4 --grow  # Root password (KaaS) @@ -63,14 +67,13 @@ poweroff  %packages -@CENTOS@@^minimal +@CENTOS7@@^minimal  @core +@DISTRIB_PACKAGE_CONFIG@ +@NODE_PACKAGE_CONFIG@ +@ND_PACKAGE_CONFIG@  chrony  curl - -# Python2 required for ansible (and is not installed on Fedora) -python -@FEDORA@python-dnf  %end  %anaconda @@ -97,22 +100,33 @@ if [ -b /dev/@DISK1@ ]; then      for name in /dev/@DISK1@?*; do  	echo "Removing md superblock on $name"  	mdadm --misc --zero-superblock $name -	dd if=/dev/zero of=$name bs=512 seek=$(( $(blockdev --getsz $name) - 1024 )) count=1024 +	dd if=/dev/zero of=$name bs=4096 count=1024 +	dd if=/dev/zero of=$name bs=4096 seek=$(( $(blockdev --getsz $name) - 1024 )) count=1024      done +    dd if=/dev/zero of=/dev/@DISK1@ bs=4096 count=1024 +    #parted /dev/@DISK1@ --script -- mklabel gpt  fi  if [ -b /dev/@DISK2@ ]; then      for name in /dev/@DISK2@?*; do  	echo "Removing md superblock on $name"  	mdadm --misc --zero-superblock $name -	dd if=/dev/zero of=$name bs=512 seek=$(( $(blockdev --getsz $name) - 1024 )) count=1024 +	dd if=/dev/zero of=$name bs=4096 count=1024 +	dd if=/dev/zero of=$name bs=4096 seek=$(( $(blockdev --getsz $name) - 1024 )) count=1024      done +    dd if=/dev/zero of=/dev/@DISK2@ bs=4096 count=1024 +    #parted /dev/@DISK2@ --script -- mklabel gpt  fi +@DISTRIB_PRE_CONFIG@ +@NODE_PRE_CONFIG@ +@ND_PRE_CONFIG@  %end  %post --log=/var/log/ks02.log  yum install -y unzip +@CENTOS8@alternatives --set python /usr/bin/python3 +  mkdir /root/.ssh  chmod 0700 /root/.ssh  curl http://ufo.kit.edu/ands/kickstart/authorized_keys -o /root/.ssh/authorized_keys @@ -135,4 +149,7 @@ PREFIX=@CIDR@  #PREFEX1=  EOF +@DISTRIB_POST_CONFIG@ +@NODE_POST_CONFIG@ +@ND_POST_CONFIG@  %end diff --git a/templates/base-centos7 b/templates/base-centos7 new file mode 100644 index 0000000..2838fb1 --- /dev/null +++ b/templates/base-centos7 @@ -0,0 +1 @@ +cdrom diff --git a/templates/base-centos8 b/templates/base-centos8 new file mode 100644 index 0000000..0639731 --- /dev/null +++ b/templates/base-centos8 @@ -0,0 +1 @@ +url --url="http://ftp.rz.uni-frankfurt.de/pub/mirrors/centos/8.0.1905/BaseOS/x86_64/os/" diff --git a/templates/base-fedora b/templates/base-fedora new file mode 100644 index 0000000..2838fb1 --- /dev/null +++ b/templates/base-fedora @@ -0,0 +1 @@ +cdrom diff --git a/templates/packages-centos7 b/templates/packages-centos7 new file mode 100644 index 0000000..fdc793e --- /dev/null +++ b/templates/packages-centos7 @@ -0,0 +1 @@ +python diff --git a/templates/packages-centos8 b/templates/packages-centos8 new file mode 100644 index 0000000..1b2dd8b --- /dev/null +++ b/templates/packages-centos8 @@ -0,0 +1,2 @@ +# python is required for ansible (and is not installed on Fedora) +python3 diff --git a/templates/packages-fedora b/templates/packages-fedora new file mode 100644 index 0000000..9aaeded --- /dev/null +++ b/templates/packages-fedora @@ -0,0 +1,2 @@ +python3 +python3-dnf
\ No newline at end of file diff --git a/templates/post-arcmsr b/templates/post-arcmsr new file mode 100644 index 0000000..be04566 --- /dev/null +++ b/templates/post-arcmsr @@ -0,0 +1,12 @@ +yum -y install https://www.elrepo.org/elrepo-release-8.0-2.el8.elrepo.noarch.rpm +yum -y install kmod-arcmsr + +# But there is already a newer kernel.  +# weak-modules does not work automatically, add-kernel does not help +# by default dracut copies module for old kernel (good), but does not load it. -I copies module, but depmod is not executed. +kver=$(rpm -qv kernel | cut -d '-' -f 2-) +/sbin/weak-modules --add-kernel $kver +cp -r /lib/modules/4.18.0-80.el8.x86_64/extra/ /lib/modules/$kver +depmod -a +cp /boot/initramfs-$kver.img /boot/initramfs-$kver.img.orig +dracut -f /boot/initramfs-$kver.img -I /lib/modules/$kver/extra/arcmsr/arcmsr.ko --force-drivers arcmsr $kver diff --git a/templates/post-ipecompute1 b/templates/post-ipecompute1 new file mode 120000 index 0000000..11df7d6 --- /dev/null +++ b/templates/post-ipecompute1 @@ -0,0 +1 @@ +post-arcmsr
\ No newline at end of file diff --git a/templates/hdd b/templates/storage-hdd index 531581f..c8db327 100644 --- a/templates/hdd +++ b/templates/storage-hdd @@ -1,5 +1,5 @@  part biosboot --ondisk=@DISK1@ --asprimary --size=1 --fstype=biosboot  part /boot --ondisk=@DISK1@ --asprimary --size @BOOTSIZE@ --fstype=ext4 -part swap --ondisk=@DISK1@ --asprimary --fstype=swap --recommended  -part lvm.01 --ondisk=@DISK1@ --asprimary --size @SIZE@ --grow -volgroup sysvg lvm.01 +part swap --ondisk=@DISK1@ --asprimary --fstype=swap --recommended +part pv.01 --ondisk=@DISK1@ --asprimary --size @SIZE@ --grow +volgroup sysvg pv.01 diff --git a/templates/raid0 b/templates/storage-raid0 index f612fa2..15734ff 100644 --- a/templates/raid0 +++ b/templates/storage-raid0 @@ -2,8 +2,8 @@ part biosboot --ondisk=@DISK1@ --asprimary --size=1 --fstype=biosboot  part biosboot --ondisk=@DISK2@ --asprimary --size=1 --fstype=biosboot  part raid.01 --ondisk=@DISK1@ --asprimary --size @BOOTSIZE@  part raid.02 --ondisk=@DISK2@ --asprimary --size @BOOTSIZE@ -part swap --ondisk=@DISK1@ --asprimary --fstype=swap --recommended  -part swap --ondisk=@DISK2@ --asprimary --fstype=swap --recommended  +part swap --ondisk=@DISK1@ --asprimary --fstype=swap --recommended +part swap --ondisk=@DISK2@ --asprimary --fstype=swap --recommended  part pv.01 --ondisk=@DISK1@ --asprimary --size @SIZE@ --grow  part pv.02 --ondisk=@DISK2@ --asprimary --size @SIZE@ --grow  raid /boot --level=RAID1 --device=md0 raid.01 raid.02 --fstype=ext4 diff --git a/templates/raid1 b/templates/storage-raid1 index bcdb1c7..6d7e6e6 100644 --- a/templates/raid1 +++ b/templates/storage-raid1 @@ -2,8 +2,8 @@ part biosboot --ondisk=@DISK1@ --asprimary --size=1 --fstype=biosboot  part biosboot --ondisk=@DISK2@ --asprimary --size=1 --fstype=biosboot  part raid.01 --ondisk=@DISK1@ --asprimary --size @BOOTSIZE@  part raid.02 --ondisk=@DISK2@ --asprimary --size @BOOTSIZE@ -part swap --ondisk=@DISK1@ --asprimary --fstype=swap --recommended  -part swap --ondisk=@DISK2@ --asprimary --fstype=swap --recommended  +part swap --ondisk=@DISK1@ --asprimary --fstype=swap --recommended +part swap --ondisk=@DISK2@ --asprimary --fstype=swap --recommended  part raid.03 --ondisk=@DISK1@ --asprimary --size @SIZE@ --grow  part raid.04 --ondisk=@DISK2@ --asprimary --size @SIZE@ --grow  raid /boot --level=RAID1 --device=md0 raid.01 raid.02 --fstype=ext4  | 
