The template in this example is based on the SUSE CaaS Platform 4 template, customized to make use of Uyuni. It includes channels and client registration scripts to install a SUSE CaaS Platform 4 cluster with Uyuni autoinstallation. This script is intended for you to use as a basis for your own autoinstallation scripts.
Example: Script for autoinstallation of a SUSE CaaS Platform 4 node
<?xml version="1.0"?>
<!DOCTYPE profile>
<profile xmlns="http://www.suse.com/1.0/yast2ns" xmlns:config="http://www.suse.com/1.0/configns">
<bootloader>
<global>
<generic_mbr>true</generic_mbr>
<gfxmode>auto</gfxmode>
<hiddenmenu>false</hiddenmenu>
<os_prober>false</os_prober>
<terminal>gfxterm</terminal>
<timeout config:type="integer">8</timeout>
<suse_btrfs config:type="boolean">true</suse_btrfs>
</global>
</bootloader>
<general>
<ask-list config:type="list"/>
<mode>
<confirm config:type="boolean">false</confirm>
</mode>
<proposals config:type="list"/>
<storage>
<partition_alignment config:type="symbol">align_optimal</partition_alignment>
<start_multipath config:type="boolean">false</start_multipath>
</storage>
<signature-handling>
<accept_file_without_checksum config:type="boolean">true</accept_file_without_checksum>
<accept_non_trusted_gpg_key config:type="boolean">true</accept_non_trusted_gpg_key>
<accept_unknown_gpg_key config:type="boolean">true</accept_unknown_gpg_key>
<accept_unsigned_file config:type="boolean">true</accept_unsigned_file>
<accept_verification_failed config:type="boolean">false</accept_verification_failed>
<import_gpg_key config:type="boolean">true</import_gpg_key>
</signature-handling>
</general>
<!-- configure local storage -->
<partitioning config:type="list">
<drive>
<use>all</use>
<partitions config:type="list">
<partition>
<mount>/boot/efi</mount>
<size>200mb</size>
<partition_id config:type="integer">1</partition_id>
<filesystem config:type="symbol">vfat</filesystem>
</partition>
<partition>
<filesystem config:type="symbol">ext4</filesystem>
<mount>/</mount>
<size>max</size>
</partition>
</partitions>
</drive>
</partitioning>
<!-- don't import any ssh configuration from previously-installed OS -->
<ssh_import>
<copy_config config:type="boolean">false</copy_config>
<import config:type="boolean">false</import>
</ssh_import>
<!-- configure language and timezone -->
<keyboard>
<keymap>english-us</keymap>
</keyboard>
<language>
<language>en_US</language>
<languages/>
</language>
<timezone>
<hwclock>UTC</hwclock>
<timezone>Etc/GMT</timezone>
</timezone>
<!-- set up networking -->
<networking>
<dhcp_options>
<dhclient_client_id/>
<dhclient_hostname_option>AUTO</dhclient_hostname_option>
</dhcp_options>
<dns>
<dhcp_hostname config:type="boolean">true</dhcp_hostname>
<resolv_conf_policy>auto</resolv_conf_policy>
<write_hostname config:type="boolean">false</write_hostname>
</dns>
<interfaces config:type="list">
<interface>
<bootproto>dhcp</bootproto>
<device>eth0</device>
<dhclient_set_default_route>yes</dhclient_set_default_route>
<startmode>auto</startmode>
</interface>
<interface>
<bootproto>static</bootproto>
<device>lo</device>
<firewall>no</firewall>
<ipaddr>127.0.0.1</ipaddr>
<netmask>255.0.0.0</netmask>
<network>127.0.0.0</network>
<prefixlen>8</prefixlen>
<startmode>nfsroot</startmode>
<usercontrol>no</usercontrol>
</interface>
</interfaces>
<ipv6 config:type="boolean">true</ipv6>
<keep_install_network config:type="boolean">true</keep_install_network>
<setup_before_proposal config:type="boolean">true</setup_before_proposal>
<managed config:type="boolean">false</managed>
<routing>
<ipv4_forward config:type="boolean">true</ipv4_forward>
<ipv6_forward config:type="boolean">true</ipv6_forward>
</routing>
</networking>
<!-- configure ntp client -->
<ntp-client>
<ntp_policy>auto</ntp_policy>
<ntp_servers config:type="list">
<ntp_server>
<!-- replace ntp server address value bellow with one from your infrastructure -->
<address>0.novell.pool.ntp.org</address>
<iburst config:type="boolean">true</iburst>
<offline config:type="boolean">true</offline>
</ntp_server>
</ntp_servers>
<ntp_sync>systemd</ntp_sync>
</ntp-client>
<!-- install required packages -->
<software>
<image/>
<products config:type="list">
<product>SLES</product>
</products>
<instsource/>
<patterns config:type="list">
<pattern>base</pattern>
<pattern>enhanced_base</pattern>
<pattern>minimal_base</pattern>
<pattern>basesystem</pattern>
</patterns>
<packages config:type="list">
<package>sles-release</package>
<package>sle-module-containers-release</package>
<package>sle-module-basesystem-release</package>
<package>caasp-release</package>
</packages>
</software>
<services-manager>
<default_target>multi-user</default_target>
<services>
<disable config:type="list">
<service>purge-kernels</service>
</disable>
<enable config:type="list">
<service>sshd</service>
<service>chronyd</service>
</enable>
</services>
</services-manager>
<!-- disable root password and add ssh keys -->
<users config:type="list">
<user>
<username>root</username>
<user_password>linux</user_password>
<encrypted config:type="boolean">false</encrypted>
</user>
<user>
<username>sles</username>
<user_password>linux</user_password>
<encrypted config:type="boolean">false</encrypted>
</user>
</users>
<add-on>
<add_on_products config:type="list">
<listentry>
<ask_on_error config:type="boolean">true</ask_on_error>
<media_url>http://$redhat_management_server/ks/dist/child/sle-module-basesystem15-sp1-pool-x86_64/$distrotree</media_url>
<name>sle-module-basesystem15-sp1-pool-x86_64</name>
<product>sle-module-basesystem15-sp1-pool-x86_64</product>
<product_dir>/</product_dir>
</listentry>
<listentry>
<ask_on_error config:type="boolean">true</ask_on_error>
<media_url>http://$redhat_management_server/ks/dist/child/sle-module-basesystem15-sp1-updates-x86_64/$distrotree</media_url>
<name>sle-module-basesystem15-sp1-updates-x86_64</name>
<product>sle-module-basesystem15-sp1-updates-x86_64</product>
<product_dir>/</product_dir>
</listentry>
<listentry>
<ask_on_error config:type="boolean">true</ask_on_error>
<media_url>http://$redhat_management_server/ks/dist/child/sle-product-sles15-sp1-updates-x86_64/$distrotree</media_url>
<name>sle-product-sles15-sp1-updates-x86_64</name>
<product>sle-product-sles15-sp1-updates-x86_64</product>
<product_dir>/</product_dir>
</listentry>
<listentry>
<ask_on_error config:type="boolean">true</ask_on_error>
<media_url>http://$redhat_management_server/ks/dist/child/sle-module-server-applications15-sp1-pool-x86_64/$distrotree</media_url>
<name>sle-module-server-applications15-sp1-pool-x86_64</name>
<product>sle-module-server-applications15-sp1-pool-x86_64</product>
<product_dir>/</product_dir>
</listentry>
<listentry>
<ask_on_error config:type="boolean">true</ask_on_error>
<media_url>http://$redhat_management_server/ks/dist/child/sle-module-server-applications15-sp1-updates-x86_64/$distrotree</media_url>
<name>sle-module-server-applications15-sp1-updates-x86_64</name>
<product>sle-module-server-applications15-sp1-updates-x86_64</product>
<product_dir>/</product_dir>
</listentry>
<listentry>
<media_url>http://$redhat_management_server/ks/dist/child/sle-manager-tools15-pool-x86_64-sp1/$distrotree</media_url>
<name>sle-manager-tools15-pool-x86_64-sp1</name>
<product>sle-manager-tools15-pool-x86_64-sp1</product>
<product_dir>/</product_dir>
</listentry>
<listentry>
<media_url>http://$redhat_management_server/ks/dist/child/sle-manager-tools15-pool-x86_64-sp1/$distrotree</media_url>
<name>sle-manager-tools15-updates-x86_64-sp1</name>
<product>sle-manager-tools15-updates-x86_64-sp1</product>
<product_dir>/</product_dir>
</listentry>
<listentry>
<media_url>http://$redhat_management_server/ks/dist/child/sle-module-containers15-sp1-pool-x86_64/$distrotree</media_url>
<name>sle-module-containers15-sp1-pool-x86_64 </name>
<product>sle-module-containers15-sp1-pool-x86_64</product>
<product_dir>/</product_dir>
</listentry>
<listentry>
<media_url>http://$redhat_management_server/ks/dist/child/sle-module-containers15-sp1-updates-x86_64/$distrotree</media_url>
<name>sle-module-containers15-sp1-updates-x86_64</name>
<product>sle-module-containers15-sp1-updates-x86_64</product>
<product_dir>/</product_dir>
</listentry>
<listentry>
<media_url>http://$redhat_management_server/ks/dist/child/suse-caasp-4.0-pool-x86_64-sp1/$distrotree</media_url>
<name>suse-caasp-4.0-pool-x86_64-sp1</name>
<product>suse-caasp-4.0-pool-x86_64-sp1</product>
<product_dir>/</product_dir>
</listentry>
<listentry>
<media_url>http://$redhat_management_server/ks/dist/child/suse-caasp-4.0-updates-x86_64-sp1/$distrotree</media_url>
<name>suse-caasp-4.0-updates-x86_64-sp1</name>
<product>suse-caasp-4.0-updates-x86_64-sp1</product>
<product_dir>/</product_dir>
</listentry>
</add_on_products>
</add-on>
<!-- register -->
<suse_register>
<do_registration config:type="boolean">true</do_registration>
<install_updates config:type="boolean">true</install_updates>
<email><!-- replace this comment with an email address used for registration --></email>
<reg_code><!-- replace this comment with a CaaSP registration code --></reg_code>
<slp_discovery config:type="boolean">false</slp_discovery>
<addons config:type="list">
<addon>
<name>sle-module-containers</name>
<version>15.1</version>
<arch>x86_64</arch>
</addon>
<addon>
<name>caasp</name>
<version>4.0</version>
<arch>x86_64</arch>
<reg_code><!-- replace this comment with a CaaSP registration code --></reg_code>
</addon>
</addons>
</suse_register>
<scripts>
<chroot-scripts config:type="list">
<script>
<chrooted config:type="boolean">true</chrooted>
<filename>add_sles_sudo_rule.sh</filename>
<interpreter>shell</interpreter>
<source>
<![CDATA[
#!/bin/sh
echo "Defaults:sles !targetpw
sles ALL=(ALL,ALL) NOPASSWD: ALL" > /etc/sudoers.d/sles
]]>
</source>
</script>
</chroot-scripts>
<init-scripts config:type="list">
$SNIPPET('spacewalk/minion_script')
</init-scripts>
</scripts>
</profile>