#cloud-config autoinstall: version: 1 locale: en_US keyboard: layout: us identity: hostname: ubuntu22-test username: ubuntu password: $6$exDY1mhS4KUYCE/2$zmn9ToZwTKLhCw.b4/b.ZRTIZM30JZ4QrOQ2aOXJ8yk96xpcCof0kxKwuX1kqLG/ygbJ1f8wxED22bTL4F46P0 kernel: {package: linux-generic} ssh: { allow-pw: true, authorized-keys: [], install-server: true } early-commands: - | #!/bin/bash # Determine the first disk ROOTDRIVE=$(lsblk -ido KNAME,TYPE,SIZE,MODEL | grep -E '^(nvme|sd)' | grep disk | awk -F' ' 'NR==1{print $1}') # Set the disk path based on the type of the disk if [ "$ROOTDRIVE" = "nvme0n1" ]; then DISK_PATH="/dev/nvme0n1" elif [ "$ROOTDRIVE" = "sda" ]; then DISK_PATH="/dev/sda" fi echo "$DISK_PATH" DISK_NAME="${DISK_PATH#/dev/}" echo "$DISK_NAME" # Replace the placeholder with the actual disk path in the storage configuration sed -i "s|DISK_PATH_VARIABLE|$DISK_PATH|g" /autoinstall.yaml # Replace the placeholder with the actual disk name in the storage configuration sed -i "s|DISK_NAME_VARIABLE|$DISK_NAME|g" /autoinstall.yaml - sleep 5 storage: config: # Install GRUB in MBR - { ptable: gpt, path: DISK_PATH_VARIABLE, wipe: superblock-recursive, preserve: false, name: '', grub_device: true, type: disk, id: disk-DISK_NAME_VARIABLE } # BIOS boot partition - { device: disk-DISK_NAME_VARIABLE, size: 1048576, wipe: superblock, flag: bios_grub, number: 1, preserve: false, type: partition, id: partition-0 } - { device: disk-DISK_NAME_VARIABLE, size: 2147483648, wipe: superblock, number: 2, preserve: false, grub_device: false, type: partition, id: partition-1 } - { fstype: ext4, volume: partition-1, preserve: false, type: format, id: format-0 } - { device: disk-DISK_NAME_VARIABLE, size: -1, wipe: superblock, flag: '', number: 3, preserve: false, grub_device: false, type: partition, id: partition-2 } - { name: ubuntu-vg, devices: [ partition-2 ], preserve: false, type: lvm_volgroup, id: lvm_volgroup-0 } - { name: ubuntu-lv, volgroup: lvm_volgroup-0, size: -1, wipe: superblock, preserve: false, type: lvm_partition, id: lvm_partition-0 } - { fstype: ext4, volume: lvm_partition-0, preserve: false, type: format, id: format-1 } - { path: /, device: format-1, type: mount, id: mount-1 } - { path: /boot, device: format-0, type: mount, id: mount-0 } late-commands: - | # Remove the existing netplan configuration file rm /target/etc/netplan/00-installer-config.yaml # Detect Ethernet interfaces and store them in variables BACKEND_INTERFACE=$(ip ntable | grep dev | sort | uniq | sed -e 's/^.*dev //;/^lo/d' | head -n 1 | tail -n 1 | xargs) FRONTEND_INTERFACE=$(ip ntable | grep dev | sort | uniq | sed -e 's/^.*dev //;/^lo/d' | head -n 2 | tail -n 1 | xargs) # Generate the new netplan configuration file using the detected interfaces cat < /target/etc/netplan/00-installer-config.yaml network: version: 2 renderer: networkd ethernets: $BACKEND_INTERFACE: dhcp4: false $FRONTEND_INTERFACE: dhcp4: false addresses: [184.164.157.34/29,184.164.157.35/29,184.164.157.36/29,184.164.157.37/29,184.164.157.38/29] gateway4: 184.164.157.33 nameservers: addresses: [8.8.8.8,8.8.4.4] EOF - sed -i '/^ubuntu/s/99999/2/' /target/etc/shadow updates: security