Hi cobbler-dev,

On Tue, Jan 10, 2012 at 03:22:51PM -0500, Michael DeHaan wrote:
> On Tuesday, January 10, 2012 at 1:14 PM, Christian Horn wrote:
> 
> > there are some suse sles related things that could make sense to
> > be included directly in cobbler.

Suming up the patch (against current git):

- autoyast_sample.xml now usable as shipped

- additional autoyast_complex.xml which utilizes these:

  - new snippet that configurs kdump

  - a post snippet which is a wrapper for snippets that can also be used on 
RHEL.  
    Shell snippets which contain pure bash code are compatible.
    That way snippets can easily be shared between RHEL and SuSE deployments.
    I hope its sufficiently documented currently in the template.

  - example snippet name_of_pure_shell_snippet which contains an
    echo to fill /etc/motd as example

  - uses the existing hosts.xml snippet (just cosmetic modified)

- existing networking.xml modified, handles now hostname without domain
  and subnet->netmask conversion



Tested this for SLES11SP1:

- hostname, domainname setting
- network config for one interface
- 'cobbler status' properly getting triggered
- after deployments 'zypper install something' is configured to install
  things from the install repo, like 'yum install'
- no interaction required for the deployment



Notes:
- I did not make the root password configurable, used a $rootpw
  but this is no cobbler default variable/not implemented by default
- I dropped the package selection code as per Michaels note its
  also not in the Red Hat template/snippets
- Also not included the snippet which displays suse style post snippets



> send in a patch 

Attached.


cheers, Christian
diff -Naur cobbler.git/kickstarts/autoyast_complex.xml cobbler/kickstarts/autoyast_complex.xml
--- cobbler.git/kickstarts/autoyast_complex.xml	1970-01-01 01:00:00.000000000 +0100
+++ cobbler/kickstarts/autoyast_complex.xml	2012-01-13 19:23:23.332155099 +0100
@@ -0,0 +1,68 @@
+<?xml version="1.0"?>
+<!DOCTYPE profile>
+## wrapper working?
+## networking?
+<profile xmlns="http://www.suse.com/1.0/yast2ns"; xmlns:config="http://www.suse.com/1.0/configns";>
+  <deploy_image>
+    <image_installation config:type="boolean">false</image_installation>
+  </deploy_image>
+  ## without the next 6 lines autoyast will ask for confirmation bevore installation
+  <general>
+    <mode>
+      <confirm config:type="boolean">false</confirm>
+      <final_reboot config:type="boolean">true</final_reboot>	
+    </mode>
+  </general>
+  $SNIPPET('hosts.xml')
+  $SNIPPET('kdump.xml')
+  <keyboard>
+    <keymap>english</keymap>
+  </keyboard>
+  <language>
+    <language>en_US</language>
+    <languages></languages>
+  </language>
+  <login_settings/>
+  $SNIPPET('networking.xml')
+  <runlevel>
+    <default>3</default>
+  </runlevel>
+  <users config:type="list">
+    <user>
+      <encrypted config:type="boolean">true</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>
+	## password: cobbler
+	<user_password>$2a$05$OByGoYrDs05U3L62Sy0G4uMPsIx3JcUM5SBshs0xL0H6VYDFAvvGy</user_password>
+      <username>root</username>
+    </user>
+  </users>
+  <scripts>
+    ## we have to include the pre-scripts tag to get kickstart_start included
+    <pre-scripts config:type="list">
+    </pre-scripts>
+    <post-scripts config:type="list">
+
+	## This plugin wrapper provides the flexibility to call pure shell
+	## snippets which can be used directly on kickstart and with with
+	## wrapper on SuSE.
+	##
+	## exchange name_of_pure_shell_snippet with the name of this shell snippet
+	##
+	#set global $wrappedscript = 'name_of_pure_shell_snippet'
+	$SNIPPET('suse_scriptwrapper.xml')
+
+    </post-scripts>
+  </scripts>
+</profile>
diff -Naur cobbler.git/snippets/SuSE/hosts.xml cobbler/snippets/SuSE/hosts.xml
--- cobbler.git/snippets/SuSE/hosts.xml	2012-01-12 20:26:58.584464858 +0100
+++ cobbler/snippets/SuSE/hosts.xml	2012-01-13 19:22:33.289194539 +0100
@@ -1,23 +1,23 @@
 <host>
-  <hosts config:type="list">
-    <hosts_entry>
-      <host_address>127.0.0.1</host_address>
-      <names config:type="list">
-        <name>localhost</name>
-      </names>
-    </hosts_entry>
-    #set $ikeys = $interfaces.keys()
-    #for $iface in $ikeys
-    #set $idata = $interfaces[$iface]
-    #if $idata["interface_type"].lower() in ["","na","bridge","bond"]
-    <hosts_entry>
-      <host_address>$idata["ip_address"]</host_address>
-      <names config:type="list">
-        #set $my_interface_hostname_short = $idata["dns_name"].split('.',1)[:1][0]
-        <name>$idata["dns_name"].lower() $my_interface_hostname_short.lower()</name>
-      </names>
-    </hosts_entry>
-    #end if
-    #end for
-  </hosts>
-</host>
+    <hosts config:type="list">
+      <hosts_entry>
+        <host_address>127.0.0.1</host_address>
+        <names config:type="list">
+          <name>localhost</name>
+        </names>
+      </hosts_entry>
+      #set $ikeys = $interfaces.keys()
+      #for $iface in $ikeys
+      #set $idata = $interfaces[$iface]
+      #if $idata["interface_type"].lower() in ["","na","bridge","bond"]
+      <hosts_entry>
+        <host_address>$idata["ip_address"]</host_address>
+        <names config:type="list">
+          #set $my_interface_hostname_short = $idata["dns_name"].split('.',1)[:1][0]
+          <name>$idata["dns_name"].lower() $my_interface_hostname_short.lower()</name>
+        </names>
+      </hosts_entry>
+      #end if
+      #end for
+    </hosts>
+  </host>
diff -Naur cobbler.git/snippets/SuSE/kdump.xml cobbler/snippets/SuSE/kdump.xml
--- cobbler.git/snippets/SuSE/kdump.xml	1970-01-01 01:00:00.000000000 +0100
+++ cobbler/snippets/SuSE/kdump.xml	2012-01-13 19:22:33.289194539 +0100
@@ -0,0 +1,35 @@
+<kdump>
+    <!-- memory reservation -->
+    <!-- reserve 64 MB with 256MB to 2GB Memory and 128MB with more then 2GB Memory -->
+    <add_crash_kernel config:type="boolean">true</add_crash_kernel>
+    <crash_kernel>256M-2G:64M,2G-:128M</crash_kernel>
+  
+    <general>
+      <!-- dump target settings -->
+      <KDUMP_SAVEDIR>file:///var/crash</KDUMP_SAVEDIR>
+      <KDUMP_COPY_KERNEL>true</KDUMP_COPY_KERNEL>
+      <KDUMP_FREE_DISK_SIZE>64</KDUMP_FREE_DISK_SIZE>
+      <KDUMP_KEEP_OLD_DUMPS>4</KDUMP_KEEP_OLD_DUMPS>
+  
+      <!-- filtering and compression -->
+      <KDUMP_DUMPFORMAT>compressed</KDUMP_DUMPFORMAT>
+      <KDUMP_DUMPLEVEL>31</KDUMP_DUMPLEVEL>
+  
+      <!-- notification -->
+      <KDUMP_NOTIFICATION_TO></KDUMP_NOTIFICATION_TO>
+      <KDUMP_NOTIFICATION_CC></KDUMP_NOTIFICATION_CC>
+      <KDUMP_SMTP_SERVER></KDUMP_SMTP_SERVER>
+      <KDUMP_SMTP_USER></KDUMP_SMTP_USER>
+      <KDUMP_SMTP_PASSWORD></KDUMP_SMTP_PASSWORD>
+  
+      <!-- kdump kernel -->
+      <KDUMP_KERNELVER></KDUMP_KERNELVER>
+      <KDUMP_COMMANDLINE></KDUMP_COMMANDLINE>
+      <KDUMP_COMMANDLINE_APPEND></KDUMP_COMMANDLINE_APPEND>
+  
+      <!-- expert settings -->
+      <KDUMP_IMMEDIATE_REBOOT>yes</KDUMP_IMMEDIATE_REBOOT>
+      <KDUMP_VERBOSE>3</KDUMP_VERBOSE>
+      <KEXEC_OPTIONS></KEXEC_OPTIONS>
+    </general>
+  </kdump> 
diff -Naur cobbler.git/snippets/SuSE/name_of_pure_shell_snippet cobbler/snippets/SuSE/name_of_pure_shell_snippet
--- cobbler.git/snippets/SuSE/name_of_pure_shell_snippet	1970-01-01 01:00:00.000000000 +0100
+++ cobbler/snippets/SuSE/name_of_pure_shell_snippet	2012-01-13 19:22:33.289194539 +0100
@@ -0,0 +1 @@
+echo 'cobbler deployed SuSE system' >/etc/motd
diff -Naur cobbler.git/snippets/SuSE/networking.xml cobbler/snippets/SuSE/networking.xml
--- cobbler.git/snippets/SuSE/networking.xml	2012-01-12 20:26:58.584464858 +0100
+++ cobbler/snippets/SuSE/networking.xml	2012-01-13 19:22:34.038193945 +0100
@@ -1,107 +1,113 @@
 #if $hostname == ""
 #set $hostname = $system_name
 #end if
-#set $my_hostname = $hostname.split('.',1)[:1][0]
-#set $my_domainname = $hostname.split('.',1)[1:][0]
-<networking>
-  <keep_install_network config:type="boolean">false</keep_install_network>
-  <dhcp_options>
-    <dhclient_client_id></dhclient_client_id>
-    <dhclient_hostname_option></dhclient_hostname_option>
-  </dhcp_options>
-  <dns>
-    <dhcp_hostname config:type="boolean">false</dhcp_hostname>
-    <dhcp_resolv config:type="boolean">false</dhcp_resolv>
-    <write_hostname config:type="boolean">false</write_hostname>
-    <resolv_conf_policy></resolv_conf_policy>
-    <hostname>$my_hostname</hostname>
-    <domain>$my_domainname</domain>
-    #if $getVar("name_servers_search","") != ""
-    <searchlist config:type="list">
-    #for $sd in $name_servers_search
-      <search>$sd</search>
+#if $getVar("dns_name_eth0","") != ""
+	#set $my_hostname = $hostname.split('.',1)[:1][0]
+	#set $my_domainname = $dns_name_eth0
+#else
+	#set $my_hostname = $hostname
+	#set $my_domainname = "site"
+#end if
+
+  <networking>
+    <keep_install_network config:type="boolean">false</keep_install_network>
+    <dhcp_options>
+      <dhclient_client_id></dhclient_client_id>
+      <dhclient_hostname_option></dhclient_hostname_option>
+    </dhcp_options>
+    <dns>
+      <dhcp_hostname config:type="boolean">false</dhcp_hostname>
+      <dhcp_resolv config:type="boolean">false</dhcp_resolv>
+      <write_hostname config:type="boolean">false</write_hostname>
+      <resolv_conf_policy></resolv_conf_policy>
+      <hostname>$my_hostname</hostname>
+      <domain>$my_domainname</domain>
+      #if $getVar("name_servers_search","") != ""
+      <searchlist config:type="list">
+      #for $sd in $name_servers_search
+        <search>$sd</search>
+      #end for
+      </searchlist>
+      #end if
+      <nameservers config:type="list">
+      #for $ns in $name_servers
+        <nameserver>$ns</nameserver>
+      #end for
+      </nameservers>
+    </dns>
+    <interfaces config:type="list">
+    #set $ikeys = $interfaces.keys()
+    #for $iface in $ikeys
+      #set $idata = $interfaces[$iface]
+      #if $idata["interface_type"].lower() == "bond"
+      <interface>
+        <bonding_master>yes</bonding_master>
+        <bonding_module_opts>$idata["bonding_opts"].lower()</bonding_module_opts>
+        #set $loop_ikeys = $interfaces.keys()
+        #set $loop_counter = 0
+        #for $loop_iface in $loop_ikeys
+          #set $loop_idata = $interfaces[$loop_iface]
+          #if $loop_idata["interface_type"].lower == "bond_slave"
+             #if $loop_idata["interface_master"] != ""
+                #if $loop_idata["interface_master"].lower() == $iface.lower()
+                   <bonding_slave$loop_counter>$loop_iface</bonding_slave$loop_counter>
+                   #set $loop_counter += 1
+                #end if
+             #end if
+          #end if
+        #end for
+        <bootproto>static</bootproto>
+        <device>$iface</device>
+        <ipaddr>$idata["ip_address"]</ipaddr>
+        <netmask>$idata["netmask"]</netmask>
+        <startmode>auto</startmode>
+        <usercontrol>no</usercontrol>
+      </interface>
+      #end if
+      #if $idata["interface_type"].lower() in ["bond_slave","bridge_slave"]
+      <interface>
+        <bootproto>none</bootproto>
+        <device>$iface</device>
+        <startmode>off</startmode>
+        <usercontrol>no</usercontrol>
+      </interface>
+      #end if
+      #if $idata["interface_type"].lower() in ["","na"]
+      <interface>
+        <bootproto>static</bootproto>
+        <device>$iface</device>
+        <lladdr>$idata["mac_address"].lower()</lladdr>
+        <ipaddr>$idata["ip_address"]</ipaddr>
+        <netmask>$idata["netmask"]</netmask>
+        <startmode>auto</startmode>
+        <usercontrol>no</usercontrol>
+      </interface>
+      #end if
     #end for
-    </searchlist>
-    #end if
-    <nameservers config:type="list">
-    #for $ns in $name_servers
-      <nameserver>$ns</nameserver>
+    </interfaces>
+    <managed config:type="boolean">false</managed>
+    <net-udev config:type="list">
+    #set $ikeys = $interfaces.keys()
+    #for $iface in $ikeys
+      #set $idata = $interfaces[$iface]
+      #if $idata["interface_type"].lower() not in ["bond","bridge"]
+      <rule>
+        <name>$iface</name>
+        <rule>ATTR{address}</rule>
+        <value>$idata["mac_address"].lower()</value>
+      </rule>
+      #end if
     #end for
-    </nameservers>
-  </dns>
-  <interfaces config:type="list">
-  #set $ikeys = $interfaces.keys()
-  #for $iface in $ikeys
-    #set $idata = $interfaces[$iface]
-    #if $idata["interface_type"].lower() == "bond"
-    <interface>
-      <bonding_master>yes</bonding_master>
-      <bonding_module_opts>$idata["bonding_opts"].lower()</bonding_module_opts>
-      #set $loop_ikeys = $interfaces.keys()
-      #set $loop_counter = 0
-      #for $loop_iface in $loop_ikeys
-        #set $loop_idata = $interfaces[$loop_iface]
-        #if $loop_idata["interface_type"].lower == "bond_slave"
-           #if $loop_idata["interface_master"] != ""
-              #if $loop_idata["interface_master"].lower() == $iface.lower()
-                 <bonding_slave$loop_counter>$loop_iface</bonding_slave$loop_counter>
-                 #set $loop_counter += 1
-              #end if
-           #end if
-        #end if
-      #end for
-      <bootproto>static</bootproto>
-      <device>$iface</device>
-      <ipaddr>$idata["ip_address"]</ipaddr>
-      <netmask>$idata["subnet"]</netmask>
-      <startmode>auto</startmode>
-      <usercontrol>no</usercontrol>
-    </interface>
-    #end if
-    #if $idata["interface_type"].lower() in ["bond_slave","bridge_slave"]
-    <interface>
-      <bootproto>none</bootproto>
-      <device>$iface</device>
-      <startmode>off</startmode>
-      <usercontrol>no</usercontrol>
-    </interface>
-    #end if
-    #if $idata["interface_type"].lower() in ["","na"]
-    <interface>
-      <bootproto>static</bootproto>
-      <device>$iface</device>
-      <lladdr>$idata["mac_address"].lower()</lladdr>
-      <ipaddr>$idata["ip_address"]</ipaddr>
-      <netmask>$idata["subnet"]</netmask>
-      <startmode>auto</startmode>
-      <usercontrol>no</usercontrol>
-    </interface>
-    #end if
-  #end for
-  </interfaces>
-  <managed config:type="boolean">false</managed>
-  <net-udev config:type="list">
-  #set $ikeys = $interfaces.keys()
-  #for $iface in $ikeys
-    #set $idata = $interfaces[$iface]
-    #if $idata["interface_type"].lower() not in ["bond","bridge"]
-    <rule>
-      <name>$iface</name>
-      <rule>ATTR{address}</rule>
-      <value>$idata["mac_address"].lower()</value>
-    </rule>
-    #end if
-  #end for
-  </net-udev>
-  <routing>
-    <ip_forward config:type="boolean">false</ip_forward>
-    <routes config:type="list">
-      <route>
-        <destination>default</destination>
-        <netmask>-</netmask>
-        <device>-</device>
-        <gateway>$gateway</gateway>
-      </route>
-    </routes>
-  </routing>
-</networking>
+    </net-udev>
+    <routing>
+      <ip_forward config:type="boolean">false</ip_forward>
+      <routes config:type="list">
+        <route>
+          <destination>default</destination>
+          <netmask>-</netmask>
+          <device>-</device>
+          <gateway>$gateway</gateway>
+        </route>
+      </routes>
+    </routing>
+  </networking>
diff -Naur cobbler.git/snippets/SuSE/suse_scriptwrapper.xml cobbler/snippets/SuSE/suse_scriptwrapper.xml
--- cobbler.git/snippets/SuSE/suse_scriptwrapper.xml	1970-01-01 01:00:00.000000000 +0100
+++ cobbler/snippets/SuSE/suse_scriptwrapper.xml	2012-01-13 19:22:34.038193945 +0100
@@ -0,0 +1,12 @@
+      <script>
+##        <debug config:type="boolean">true</debug>
+##        <feedback config:type="boolean">false</feedback>
+##        <location></location>
+##        <network_needed config:type="boolean">true</network_needed>
+        <interpreter>shell</interpreter>
+#set $filename = $wrappedscript.replace('/', '_')
+        <filename>$filename</filename>
+        <source><![CDATA[
+$SNIPPET($wrappedscript)
+]]></source>
+      </script>
_______________________________________________
cobbler-devel mailing list
[email protected]
https://fedorahosted.org/mailman/listinfo/cobbler-devel

Reply via email to