Automated install
Unattended installation requires what is called an answer file, often spelled answerfile.
It is an XML file that contains the answers to questions the installer would ask during a manual installation.
Here's an example:
<?xml version="1.0"?>
<installation srtype="ext">
<primary-disk>sda</primary-disk>
<guest-disk>sdb</guest-disk>
<guest-disk>sdc</guest-disk>
<keymap>us</keymap>
<root-password>mypassword</root-password>
<source type="url">http://pxehost.example.com/xcp-ng/</source>
<post-install-script type="url">
http://pxehost.example.com/myscripts/post-install-script
</post-install-script>
<admin-interface name="eth0" proto="dhcp" />
<timezone>Europe/Paris</timezone>
</installation>
TIP
Via PXE
Follow the previous section on Network boot (PXE) and add options that will fetch and use an answer file.
PXE unattended install - BIOS boot
Add answerfile=http://your_server/path/to/answerfile.xml install to the parameters passed to vmlinuz (the linux kernel of the installer).
Example:
menuentry "XCP-ng Install (serial)" {
multiboot2 /EFI/xcp-ng/xen.gz dom0_mem=2048M,max:2048M watchdog dom0_max_vcpus=4 com1=115200,8n1 console=com1,vga
module2 /EFI/xcp-ng/vmlinuz console=hvc0 console=tty0 answerfile_device=eth0 answerfile=http://your_server/path/to/answerfile.xml install
module2 /EFI/xcp-ng/install.img
}
Unattended installation with a custom ISO image
You may build a custom installation image that will automatically install XCP-ng. The answerfile can either be downloaded by the installer or embedded in the image itself.
Unattended installation ISO with remote config
If you can't or don't want to setup PXE but can still serve a file (the answerfile) from a server that will be available to the hosts during installation, you can create an automated installation image that will fetch its configuration from the network.
-
Prepare an answerfile and make it available from a local HTTP server.
-
Modify the boot configuration to use the remote answerfile:
-
For BIOS boot, edit
/boot/isolinux/isolinux.cfg. Locate theinstallboot entry, which should look like this:LABEL installKERNEL mboot.c32APPEND /boot/xen.gz dom0_max_vcpus=1-16 dom0_mem=max:8192M com1=115200,8n1 console=com1,vga --- /boot/vmlinuz console=hvc0 console=tty0 --- /install.imgAppend
answerfile=http://your_server/path/to/answerfile.xml installto the parameters passed to vmlinuz, before the last---:LABEL installKERNEL mboot.c32APPEND /boot/xen.gz dom0_max_vcpus=1-16 dom0_mem=max:8192M com1=115200,8n1 console=com1,vga --- /boot/vmlinuz console=hvc0 console=tty0 answerfile=http://your_server/path/to/answerfile.xml install --- /install.img -
For UEFI boot edit
/EFI/xenserver/grub.cfg(and/EFI/xenserver/grub-usb.cfgfor USB installation). Locate theinstallmenuentry, which should look like this:menuentry "install" {multiboot2 /boot/xen.gz dom0_max_vcpus=1-16 dom0_mem=max:8192M com1=115200,8n1 console=com1,vgamodule2 /boot/vmlinuz console=hvc0 console=tty0module2 /install.img}Append
answerfile=http://your_server/path/to/answerfile.xml installto the parameters passed to vmlinuz, in the line that starts withmodule2 /boot/vmlinuz:menuentry "install" {multiboot2 /boot/xen.gz dom0_max_vcpus=1-16 dom0_mem=max:8192M com1=115200,8n1 console=com1,vgamodule2 /boot/vmlinuz console=hvc0 console=tty0 answerfile=http://your_server/path/to/answerfile.xml installmodule2 /install.img} -
For an answerfile embedded in the image, append
answerfile=file:///answerfile.xml installto the parameters passed to vmlinuz, in the line that starts withmodule2 /boot/vmlinuz:menuentry "install" {multiboot2 /boot/xen.gz dom0_max_vcpus=1-16 dom0_mem=max:8192M com1=115200,8n1 console=com1,vgamodule2 /boot/vmlinuz console=hvc0 console=tty0 answerfile=file:///answerfile.xml installmodule2 /install.img}
-
-
Add your answerfile:
# cp answerfile.xml "$WORK_DIR/install/answerfile.xml"
Your ISO is ready for installation.
Software RAID in answerfile
For an automated install using an answer file, software raid can be enabled as follows:
<?xml version="1.0"?>
<installation mode="fresh" srtype="lvm">
<raid device="md127">
<disk>sda</disk>
<disk>sdb</disk>
</raid>
<primary-disk>md127</primary-disk>
<keymap>us</keymap>
<source type="url">https://xcp-ng.org/install/</source>
<admin-interface name="eth0" proto="dhcp" />
<timezone>Europe/London</timezone>
<root-password>secret</root-password>
</installation>
As an improvement and to delay the md resync (increasing install speed by about 500% on certain drives), we can use the following in the answer file:
<script stage="installation-start" type="url">http://your-server/noresync.sh</script>
The noresync.sh script would do something like this:
#!/bin/sh # echo 0 > /proc/sys/dev/raid/speed_limit_max # echo 0 > /proc/sys/dev/raid/speed_limit_min
Upon server reboot, normal md resync will take place.