Autoinstallation Profiles
An autoinstallation profile determines how the operating system will be installed. For example, you can specify additional kernel parameters to be passed to the installer.
The most important part of the profile is the "autoinstallation file." When you perform an installation manually, you must provide information to the installer, such as partitioning and networking information and user details. The autoinstallation file is a method of providing this information in a scripted form. This type of file is sometimes also referred to as an "answers file."
Within Uyuni, you can use two different types of profiles, depending on the operating system of the clients you want to install:
-
For SUSE Linux Enterprise or openSUSE clients, use AutoYaST.
-
For Red Hat Enterprise Linux clients, use Kickstart.
You can use both AutoYaST and Kickstart profiles if you want to install clients with different operating systems.
-
For information about how to declare profiles, see Declare the Profile
-
For information about AutoYaST profiles, see AutoYaST Profiles.
-
For information about Kickstart profiles, see Kickstart Profiles.
The autoinstallation file contained in the profile can include variables and code snippets. For information about variables and code snippets, see Templates Syntax.
1. Declare the Profile
When you have prepared an autoinstallation file and distribution, you can create profiles to manage autoinstallation on your Uyuni Server. The profile will determine how to install this distribution you selected. One way to create a profile is to upload an AutoYaST or Kickstart file. Alternatively, for Kickstart only, you can use the Web UI wizard.
-
In the Uyuni Web UI, navigate to
. -
Click Upload Kickstart/AutoYaST File.
-
In the
Label
field, type a name for the profile. Do not use spaces. -
In the
Autoinstall Tree
field, select the autoinstallable distribution to use for this profile. -
In the
Virtualization Type
field, select the type of virtualization to use for this profile, or selectNone
if you do not want to use this profile to create a new virtual machine. -
Copy the contents of your autoinstallation file into the
File Contents
field, or upload the file directly using theFile to Upload
field.For more information about the details to include here, see AutoYaST Profiles or Kickstart Profiles.
-
Click Create to create the profile.
-
In the Uyuni Web UI, navigate to
. -
Click Create Kickstart Profile.
-
In the
Label
field, type a name for the profile. Do not use spaces. -
In the
Base Channel
field, select the base channel to use for this profile. This field is populated from the distributions available. If the base channel you need is not available, check that you have created the distribution correctly. -
In the
Virtualization Type
field, select the type of virtualization to use for this profile, or selectNone
for no virtualization. -
Click Next.
-
In the
Distribution File Location
type the path to the installation media installed on the Uyuni Server. -
Click Next.
-
Provide a password for the root user on the client.
-
Click Finish.
-
Review the details of your new profile, and customize as required.
When you are creating your autoinstallation profile, you can check Always use the newest Tree for this base channel
.
This setting allows Uyuni to automatically pick the latest distribution that is associated with the specified base channel.
If you add new distributions later, Uyuni uses the most recently created or modified.
Changing the Virtualization Type
usually requires changes to the profile bootloader and partition options.
This can overwrite your customization.
Verify new or changed settings before saving them, by navigating to the Partitioning
tab.
The kernel options from the distribution and the profile are combined.
You can change the details and settings of your autoinstallation profiles by navigating to
and clicking the name of the profile you want to edit. Alternatively, navigate to , select the client you want to provision, and navigate to the subtab.2. AutoYaST Profiles
An AutoYaST profile consists of a Label
that identifies the profile, an Autoinstall Tree
that points to an autoinstallable distribution, various options, and, most importantly, an AutoYaST installation file.
The AutoYaST installation file is an XML file that give directions to the AutoYaST installer. AutoYaST calls it a "control file." For the full syntax of AutoYaST installation files, see https://doc.opensuse.org/projects/autoyast/#cha-configuration-installation-options.
SUSE provides templates of AutoYaST installation files that you can use as a starting point for your own custom files.
You will find the templates at https://github.com/SUSE/manager-build-profiles in the AutoYast
directory.
Each of these profiles requires you to set some variables before you use it.
Check the README
file included with the script to determine which variables you need.
For more information about using variables in AutoYaST scripts, see Variables.
These are the most important sections in the AutoYaST installation file for installing with Uyuni:
-
<add-on>
allows to add child channels to the installation. For an example, see https://doc.opensuse.org/projects/autoyast/#Software-Selections-additional. -
`<general>$SNIPPET('spacewalk/sles_no_signature_checks')</general>
disables signature checks -
<software>
allows to specify product for the Unified Installer-
See https://doc.opensuse.org/projects/autoyast/#CreateProfile-Software with a "<software>" example
-
-
<init-scripts config:type="list">$SNIPPET('spacewalk/minion_script')</init-scripts>
allows the client to register to Uyuni as a Salt client.
For more information about AutoYaST, see https://doc.opensuse.org/projects/autoyast/.
A more recent, Salt-based alternative to AutoYaST, is Yomi. For information about Yomi, see Install with Yomi.
3. Kickstart Profiles
Kickstart profiles offer a large number of configuration options. To create these profiles, you can upload them, or use a dedicated wizard.
Kickstart profiles allow you to use file preservation lists. If you have many custom configuration files located on a client you want to reinstall with Kickstart, you can save them as a list, and associate that list with the Kickstart profile.
-
In the Uyuni Web UI, navigate to
and click Create File Preservation List. -
Enter a suitable label, and list absolute paths to all files and directories you want to save.
-
Click Create List.
-
Include the file preservation list in your Kickstart profile.
-
Navigate to
and select the profile you want to edit, go to the subtab, and select the file preservation list to include.
File preservation lists are limited to a total size of 1 MB.
Special devices like |
For more information about Kickstart, see the Red Hat documentation.
4. Templates Syntax
Parts of your installation file are replaced during the installation. Variables are replaced with single values, and code snippets are replaced with whole sections of text. Escaped symbols or sections are not replaced.
A template engine called Cheetah allows Cobbler to do these replacements. This mechanism allows you to reinstall large numbers of systems, without having to manually create profiles for each of them.
You can create autoinstallation variables and code snippets within the Uyuni Web UI.
Within a profile, the Autoinstallation File
tab allows you to see the result of the substitutions.
-
For information about variables, see Variables.
-
For information about code snippets, see Code Snippets.
-
For information about escaping symbols or text blocks, see Escaping.
4.1. Variables
Autoinstallation variables can be used to substitute values into Kickstart and AutoYaST profiles.
To define a variable, from the profile, navigate to the Variables
subtab, and create a name=value
pair in the text box.
For example, you could create a variable that holds the IP address of the client, and another that holds the address of its gateway.
Those variables can then be defined for all the clients installed from the same profile.
To do that, add these lines to the Variables
text box:
ipaddr=192.168.0.28 gateway=192.168.0.1
To use the variable, prepend a $
sign in the profile to substitute the value.
For example, the network
part of a Kickstart file may look like the following:
network --bootproto=static --device=eth0 --onboot=on --ip=$ipaddr \ --gateway=$gateway
The $ipaddr
is resolved to 192.168.0.28
, and the $gateway
to 192.168.0.1
.
In installation files, variables use a hierarchy. System variables take precedence over profile variables, which in turn take precedence over distribution variables.
4.2. Code Snippets
Uyuni comes with a large number of predefined code snippets. Navigate to
to see the list of existing snippets.Use a snippet by inserting the $SNIPPET()
macro in your autoinstallation file.
For example, in Kickstart:
$SNIPPET('spacewalk/rhel_register_script')
Or, in AutoYaST:
<init-scripts config:type="list"> $SNIPPET('spacewalk/sles_register_script') </init-scripts>
The macro is parsed by Cobbler and substituted with the contents of the snippet. You can also store your own code snippets to use in autoinstallation files later on. Click Create Snippet to create a new code snippet.
This example sets up a Kickstart snippet for a common hard drive partition configuration:
clearpart --all part /boot --fstype ext3 --size=150 --asprimary part / --fstype ext3 --size=40000 --asprimary part swap --recommended part pv.00 --size=1 --grow volgroup vg00 pv.00 logvol /var --name=var vgname=vg00 --fstype ext3 --size=5000
Use the snippet with, for example:
$SNIPPET('my_partition')
4.3. Escaping
If the autoinstallation file contains shell script variables like $(example)
, the content needs to be escaped with a backslash: \$(example)
.
Escaping the $
symbol prevents the templating engine from evaluating the symbol as an internal variable.
Text blocks such as code fragments or scripts can be escaped by wrapping them with the \#raw
and \#end raw
directives.
For example:
#raw #!/bin/bash for i in {0..2}; do echo "$i - Hello World!" done #end raw
Any line with a #
symbol followed by a whitespace is treated as a comment and is therefore not evaluated.
For example:
# start some section (this is a comment) echo "Hello, world" # end some section (this is a comment)