I'm trying to install 20.04 with an auto install config file like this one:
user-data file:
version: 1
identity: hostname: hostname username: username password: $crypted_passBut I want the installation process to ONLY ask for the hostname, and for everything else to be automated. I feel like this should be possible because the docs say it is almost infinitely configurable.
I am installing with pxeboot/tftp, here is my install lines similar to the quick-start guide:
kernel installers/ubuntu/20.04/vmlinuz
initrd installers/ubuntu/20.04/initrd
append root=/dev/ram0 ramdisk_size=1500000 ip=dhcp url= autoinstall ds=nocloud-net;s=Here are some things I've tried:
identity in interactive-sections
This asks me for the language (why?) and all of the identity fields, also, the password is not pre-seeded
version: 1
interactive-sections: - identity
identity: hostname: hostname username: username password: $crypted_passremove hostname
This gives parsing error because hostname is required
version: 1
interactive-sections: - identity
identity: username: username password: $crypted_pass 2 Answers
A few options for possibly setting the hostname below. The first is the one I can propose which asks for the hostname. The others are ways you might provide it.
1. Interactive Sections
From AutomatedServerInstalls, you can mark a section as interactive. It also says that any values provided under interactive sections will be used as default values. Interactive sections may also prevent automatic reboot, but also make the locale section interactive if any sections are interactive.
It appears that you can set the identity section interactive. This may force you to agree to the username and password values, but they should be defaults.
The start of your autoinstall file might look like:
#cloud-init
version: 1
interactive-sections: - identity
identity: hostname: hostname username: username password: $crypted_passIf using an interactive section, I believe you are prompted to reboot. Pressing Alt-F2 to get to another prompt may allow you to run a script or commands to set hostname.
2. Late Commands
There is also a late-commands section. An example from Ubuntu Server 20.04 autoinstall shows where you can issue commands towards the end of the install. Perhaps you can figure out how to modify the hostname automatically at the end.
late-commands: - echo 'ubuntu ALL=(ALL) NOPASSWD:ALL' > /target/etc/sudoers.d/ubuntu - sed -ie 's/GRUB_CMDLINE_LINUX=.*/GRUB_CMDLINE_LINUX="net.ifnames=0 ipv6.disable=1 biosdevname=0"/' /target/etc/default/grub - curtin in-target --target /target update-grub23. user-data Section
Also in both of the links I referenced there is a user-data section. The documentation in AutomatedServerInstalls say that if you include this portion you do not need to include an identity section. Perhaps you can configure hostname in here, but you may have to setup users fully here as well. There is discussion of using this feature in this launchpad bug. The poster shares their auto-install config in this post, but I've got a part of it here for posterity.
user-data: password: "$6$exDY1mhS4KUYCE/2$zmn9ToZwTKLhCw.b4/b.ZRTIZM30JZ4QrOQ2aOXJ8yk96xpcCof0kxKwuX1kqLG/ygbJ1f8wxED22bTL4F46P0" username: ubuntu hostname: ubuntu-server users: - gecos: ubuntu groups: [adm, cdrom, dip, plugdev, lxd, sudo] lock-passwd: false name: ubuntu passwd: <SOME_PASSWORD_STRING> shell: /bin/bash sudo: ALL=(ALL) NOPASSWD:ALL ssh_authorized_keys: - ssh-rsa <SOME_RSA_KEY> 6 If you fix the IP address by mac before PXE boot in DHCP, just add reverse dns record for that IP before starting PXE and that host takes this reverse record as its hostame during install. You can do this for all automatically installed clients. But you have to fix their address before PXE boot by mac addresses.