Skip to main content

Automated install

VKB-1054Reference
📦 Applies to
XCP-ng
🗓️ Created
2024-03-13
🔄 Updated
2024-03-13

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.

  1. Prepare an answerfile and make it available from a local HTTP server.

  2. Extract the XCP-NG ISO file.

  3. Modify the boot configuration to use the remote answerfile:

    • For BIOS boot, edit /boot/isolinux/isolinux.cfg. Locate the install boot entry, which should look like this:

      LABEL install
      KERNEL mboot.c32
      APPEND /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.img

      Append answerfile=http://your_server/path/to/answerfile.xml install to the parameters passed to vmlinuz, before the last ---:

      LABEL install
      KERNEL mboot.c32
      APPEND /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.cfg for USB installation). Locate the install menuentry, 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,vga
      module2 /boot/vmlinuz console=hvc0 console=tty0
      module2 /install.img
      }

      Append answerfile=http://your_server/path/to/answerfile.xml install to the parameters passed to vmlinuz, in the line that starts with module2 /boot/vmlinuz:

      menuentry "install" {
      multiboot2 /boot/xen.gz dom0_max_vcpus=1-16 dom0_mem=max:8192M com1=115200,8n1 console=com1,vga
      module2 /boot/vmlinuz console=hvc0 console=tty0 answerfile=http://your_server/path/to/answerfile.xml install
      module2 /install.img
      }
    • For an answerfile embedded in the image, append answerfile=file:///answerfile.xml install to the parameters passed to vmlinuz, in the line that starts with module2 /boot/vmlinuz:

      menuentry "install" {
      multiboot2 /boot/xen.gz dom0_max_vcpus=1-16 dom0_mem=max:8192M com1=115200,8n1 console=com1,vga
      module2 /boot/vmlinuz console=hvc0 console=tty0 answerfile=file:///answerfile.xml install
      module2 /install.img
      }
  4. Extract install.img.

  5. Add your answerfile:

    root@dom0
    # cp answerfile.xml "$WORK_DIR/install/answerfile.xml"
  6. Build a new install.img with your changes.

  7. Build a new ISO with your changes.

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:

root@dom0
#!/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.