[Libosinfo] [osinfo-db PATCH 6/9] centos: Add its own kickstart files

Fabiano Fidêncio fidencio at redhat.com
Fri Dec 21 14:09:38 UTC 2018


As CentOS can support initrd as injection-method (mainly when doing an
installation from "tree"), let's create its own files and stop using the
RHEL ones.

Signed-off-by: Fabiano Fidêncio <fidencio at redhat.com>
---
 .../centos-kickstart-desktop.xml.in           | 197 ++++++++++++++++++
 .../centos.org/centos-kickstart-jeos.xml.in   | 142 +++++++++++++
 2 files changed, 339 insertions(+)
 create mode 100644 data/install-script/centos.org/centos-kickstart-desktop.xml.in
 create mode 100644 data/install-script/centos.org/centos-kickstart-jeos.xml.in

diff --git a/data/install-script/centos.org/centos-kickstart-desktop.xml.in b/data/install-script/centos.org/centos-kickstart-desktop.xml.in
new file mode 100644
index 0000000..60a4952
--- /dev/null
+++ b/data/install-script/centos.org/centos-kickstart-desktop.xml.in
@@ -0,0 +1,197 @@
+<libosinfo version="0.0.1">
+<!-- Licensed under the GNU General Public License version 2 or later.
+     See http://www.gnu.org/licenses/ for a copy of the license text -->
+  <install-script id='http://centos.org/centos/kickstart/desktop'>
+    <profile>desktop</profile>
+    <expected-filename>centos.ks</expected-filename>
+    <config>
+        <param name="l10n-keyboard" policy="optional"/>
+        <param name="l10n-language" policy="optional"/>
+        <param name="l10n-timezone" policy="optional"/>
+        <param name="hostname" policy="optional"/>
+        <param name="user-login" policy="required"/>
+        <param name="user-password" policy="required"/>
+        <param name="admin-password" policy="required"/>
+        <param name="avatar-location" policy="optional"/>
+        <param name="avatar-disk" policy="optional"/>
+        <param name="target-disk" policy="optional"/>
+        <param name="script-disk" policy="required"/>
+    </config>
+    <injection-method>cdrom</injection-method>
+    <injection-method>disk</injection-method>
+    <injection-method>floppy</injection-method>
+    <injection-method>initrd</injection-method>
+    <avatar-format>
+      <mime-type>image/png</mime-type>
+    </avatar-format>
+    <template>
+      <xsl:stylesheet
+        xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+        version="1.0">
+
+        <xsl:output method="text"/>
+
+        <xsl:template name="target-disk">
+          <xsl:choose>
+            <xsl:when test="config/target-disk != ''">
+              <xsl:value-of select="config/target-disk"/>
+            </xsl:when>
+            <xsl:when test="os/version > 4">
+              <!-- virtio -->
+              <xsl:text>/dev/vda</xsl:text>
+            </xsl:when>
+            <xsl:otherwise>
+              <!-- IDE -->
+              <xsl:text>/dev/sda</xsl:text>
+            </xsl:otherwise>
+          </xsl:choose>
+        </xsl:template>
+
+        <xsl:template name="script-disk">
+          <xsl:variable name="script-disk">
+            <xsl:value-of select="config/script-disk"/>
+          </xsl:variable>
+          <xsl:value-of select="substring-after($script-disk, '/dev/')"/>
+        </xsl:template>
+
+        <xsl:template match="/command-line">
+          <xsl:text>ks=</xsl:text>
+          <xsl:choose>
+            <xsl:when test="script/preferred-injection-method = 'initrd'">
+              <xsl:text>file:/</xsl:text>
+            </xsl:when>
+            <xsl:otherwise>
+              <xsl:text>hd:</xsl:text>
+              <xsl:call-template name="script-disk"/>
+              <xsl:text>:/</xsl:text>
+            </xsl:otherwise>
+          </xsl:choose>
+          <xsl:value-of select="script/expected-filename"/>
+        </xsl:template>
+
+        <xsl:template name="version">
+          <xsl:choose>
+            <xsl:when test="os/version < 7">
+              <xsl:text>6</xsl:text>
+            </xsl:when>
+            <xsl:otherwise>
+              <xsl:text>7</xsl:text>
+            </xsl:otherwise>
+          </xsl:choose>
+        </xsl:template>
+
+        <xsl:template name="arch">
+          <xsl:choose>
+            <xsl:when test="config/hardware-arch = 'x86_64'">
+              <xsl:text>x86_64</xsl:text>
+            </xsl:when>
+            <xsl:otherwise>
+              <xsl:text>i386</xsl:text>
+            </xsl:otherwise>
+          </xsl:choose>
+        </xsl:template>
+
+        <xsl:template match="/install-script-config">
+# Install script for <xsl:value-of select="os/short-id"/> profile <xsl:value-of select="script/profile"/>
+<xsl:if test="script/installation-source = 'media'">
+install
+cdrom
+</xsl:if>
+keyboard <xsl:value-of select="config/l10n-keyboard"/>
+lang <xsl:value-of select="config/l10n-language"/>
+network --onboot yes --bootproto dhcp --noipv6 --hostname=<xsl:value-of select="config/hostname"/>
+rootpw dummyPa55w0rd # Actual password set (or unset) in %post below
+firewall --disabled
+authconfig --enableshadow --enablemd5
+timezone --utc <xsl:value-of select="config/l10n-timezone"/>
+bootloader --location=mbr
+zerombr
+
+clearpart --all --drives=<xsl:call-template name="target-disk"/>
+
+firstboot --disable
+
+<xsl:choose>
+  <xsl:when test="os/version < 7">
+part /boot --fstype ext4 --size=1024 --ondisk=<xsl:call-template name="target-disk"/>
+  </xsl:when>
+  <xsl:otherwise>
+part /boot --fstype ext4 --recommended --ondisk=<xsl:call-template name="target-disk"/>
+  </xsl:otherwise>
+</xsl:choose>
+part pv.2 --size=1 --grow --ondisk=<xsl:call-template name="target-disk"/>
+volgroup VolGroup00 --pesize=32768 pv.2
+logvol swap --fstype swap --name=LogVol01 --vgname=VolGroup00 --size=768 --grow --maxsize=1536
+logvol / --fstype ext4 --name=LogVol00 --vgname=VolGroup00 --size=1024 --grow
+reboot
+
+<xsl:if test="script/installation-source = 'network'">
+url --url="http://mirror.centos.org/centos/<xsl:call-template name="version"/>/os/<xsl:call-template name="arch"/>"
+</xsl:if>
+
+%packages
+ at core
+ at x11
+<xsl:choose>
+  <xsl:when test="os/version < 7">
+ at basic-desktop
+ at general-desktop
+ at desktop-platform
+  </xsl:when>
+  <xsl:otherwise>
+ at gnome-desktop
+ at multimedia
+  </xsl:otherwise>
+</xsl:choose>
+ at internet-browser
+ at input-methods
+
+qemu-guest-agent
+
+%end
+
+%post --erroronfail
+
+useradd -G wheel <xsl:value-of select="config/user-login"/> # Add user
+if test -z '<xsl:value-of select="config/user-password"/>'; then
+    passwd -d <xsl:value-of select="config/user-login"/> # Make user account passwordless
+else
+    echo '<xsl:value-of select="config/user-password"/>' |passwd --stdin <xsl:value-of select="config/user-login"/>
+fi
+
+if test -z '<xsl:value-of select="config/admin-password"/>'; then
+    passwd -d root # Make root account passwordless
+else
+    echo '<xsl:value-of select="config/admin-password"/>' |passwd --stdin root
+fi
+
+# Set user avatar
+if test -n '<xsl:value-of select="config/avatar-location"/>'; then
+mkdir /mnt/unattended-media
+mount <xsl:value-of select='config/avatar-disk'/> /mnt/unattended-media
+cp /mnt/unattended-media<xsl:value-of select="config/avatar-location"/> /home/<xsl:value-of select="config/user-login"/>/.face
+umount /mnt/unattended-media
+fi
+
+# Enable autologin
+echo "[daemon]
+AutomaticLoginEnable=true
+AutomaticLogin=<xsl:value-of select="config/user-login"/>
+
+[security]
+
+[xdmcp]
+
+[greeter]
+
+[chooser]
+
+[debug]
+" > /etc/gdm/custom.conf
+
+%end
+	</xsl:template>
+      </xsl:stylesheet>
+    </template>
+  </install-script>
+</libosinfo>
diff --git a/data/install-script/centos.org/centos-kickstart-jeos.xml.in b/data/install-script/centos.org/centos-kickstart-jeos.xml.in
new file mode 100644
index 0000000..3feafec
--- /dev/null
+++ b/data/install-script/centos.org/centos-kickstart-jeos.xml.in
@@ -0,0 +1,142 @@
+<libosinfo version="0.0.1">
+<!-- Licensed under the GNU General Public License version 2 or later.
+     See http://www.gnu.org/licenses/ for a copy of the license text -->
+  <install-script id='http://centos.org/centos/kickstart/jeos'>
+    <profile>jeos</profile>
+    <expected-filename>centos.ks</expected-filename>
+    <config>
+      <param name="admin-password" policy="optional"/>
+      <param name="l10n-keyboard" policy="optional"/>
+      <param name="l10n-language" policy="optional"/>
+      <param name="l10n-timezone" policy="optional"/>
+      <param name="target-disk" policy="optional"/>
+      <param name="script-disk" policy="required"/>
+    </config>
+    <injection-method>cdrom</injection-method>
+    <injection-method>disk</injection-method>
+    <injection-method>floppy</injection-method>
+    <injection-method>initrd</injection-method>
+    <template>
+      <xsl:stylesheet
+        xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+        version="1.0">
+
+        <xsl:output method="text"/>
+
+        <xsl:template name="target-disk">
+          <xsl:choose>
+            <xsl:when test="config/target-disk != ''">
+              <xsl:value-of select="config/target-disk"/>
+            </xsl:when>
+            <xsl:when test="os/version > 4">
+              <!-- virtio -->
+              <xsl:text>/dev/vda</xsl:text>
+            </xsl:when>
+            <xsl:otherwise>
+              <!-- IDE -->
+              <xsl:text>/dev/sda</xsl:text>
+            </xsl:otherwise>
+          </xsl:choose>
+        </xsl:template>
+
+        <xsl:template name="script-disk">
+          <xsl:variable name="script-disk">
+            <xsl:value-of select="config/script-disk"/>
+          </xsl:variable>
+          <xsl:value-of select="substring-after($script-disk, '/dev/')"/>
+        </xsl:template>
+
+        <xsl:template match="/command-line">
+          <xsl:text>ks=</xsl:text>
+          <xsl:choose>
+            <xsl:when test="script/preferred-injection-method = 'initrd'">
+              <xsl:text>file:/</xsl:text>
+            </xsl:when>
+            <xsl:otherwise>
+              <xsl:text>hd:</xsl:text>
+              <xsl:call-template name="script-disk"/>
+              <xsl:text>:/</xsl:text>
+            </xsl:otherwise>
+          </xsl:choose>
+          <xsl:value-of select="script/expected-filename"/>
+        </xsl:template>
+
+        <xsl:template name="version">
+          <xsl:choose>
+            <xsl:when test="os/version < 7">
+              <xsl:text>6</xsl:text>
+            </xsl:when>
+            <xsl:otherwise>
+              <xsl:text>7</xsl:text>
+            </xsl:otherwise>
+          </xsl:choose>
+        </xsl:template>
+
+        <xsl:template name="arch">
+          <xsl:choose>
+            <xsl:when test="config/hardware-arch = 'x86_64'">
+              <xsl:text>x86_64</xsl:text>
+            </xsl:when>
+            <xsl:otherwise>
+              <xsl:text>i386</xsl:text>
+            </xsl:otherwise>
+          </xsl:choose>
+        </xsl:template>
+
+        <xsl:template match="/install-script-config">
+# Install script for <xsl:value-of select="os/short-id"/> profile <xsl:value-of select="script/profile"/>
+<xsl:if test="script/installation-source = 'media'">
+install
+cdrom
+</xsl:if>
+text
+keyboard <xsl:value-of select="config/l10n-keyboard"/>
+lang <xsl:value-of select="config/l10n-language"/>
+skipx
+network --bootproto dhcp
+rootpw <xsl:value-of select="config/admin-password"/>
+firewall --disabled
+authconfig --enableshadow --enablemd5
+selinux --enforcing
+timezone --utc <xsl:value-of select="config/l10n-timezone"/>
+bootloader --location=mbr
+zerombr
+
+clearpart --all --drives=<xsl:call-template name="target-disk"/>
+
+
+<xsl:choose>
+  <xsl:when test="os/version < 7">
+part /boot --fstype ext4 --size=1024 --ondisk=<xsl:call-template name="target-disk"/>
+  </xsl:when>
+  <xsl:otherwise>
+part /boot --fstype ext4 --recommended --ondisk=<xsl:call-template name="target-disk"/>
+  </xsl:otherwise>
+</xsl:choose>
+part pv.2 --size=1 --grow --ondisk=<xsl:call-template name="target-disk"/>
+volgroup VolGroup00 --pesize=32768 pv.2
+logvol swap --fstype swap --name=LogVol01 --vgname=VolGroup00 --size=768 --grow --maxsize=1536
+logvol / --fstype ext4 --name=LogVol00 --vgname=VolGroup00 --size=1024 --grow
+reboot
+
+<xsl:if test="script/installation-source = 'network'">
+url --url="http://mirror.centos.org/centos/<xsl:call-template name="version"/>/os/<xsl:call-template name="arch"/>"
+</xsl:if>
+
+%packages
+<xsl:choose>
+  <xsl:when test="os/version < 7">
+ at base
+  </xsl:when>
+  <xsl:otherwise>
+@^minimal
+  </xsl:otherwise>
+</xsl:choose>
+ at core
+
+%end
+	</xsl:template>
+      </xsl:stylesheet>
+    </template>
+  </install-script>
+</libosinfo>
-- 
2.19.2




More information about the Libosinfo mailing list