#cloud-config autoinstall: version: 1 locale: en_US keyboard: layout: us packages: - at identity: hostname: AutomationNVMeTesting # From kickstart configuration we'll take the 1st server user username: ss7841 password: '$6$Sox3bxS745$bOCMuae/UgDySbkXxQrdNxhUOaShX4rHnxZIq1U9vuT7Kd38/H4/2QqCAuPqv1jMv9u0I.22Vn5hY8Bo3gJJ5.' 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}') echo "Disk:$ROOTDRIVE" # Replace the placeholder with the actual disk name in the storage configuration sed -i "s|DISK_NAME_VARIABLE|$ROOTDRIVE|g" /autoinstall.yaml - sleep 5 storage: config: # Install GRUB in MBR - { ptable: gpt, path: /dev/DISK_NAME_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 } user-data: disable_root: false late-commands: - | # Set hashed root password sed -i 's|\(^root:\)[^:]*|\1$6$GI55lttDJCi8OZr6$FoTaQPnTWKJg3CxS4AFAxg0RbfMD.Rw6wf/dkIxBOJDQdTJmVG7.KaD8C/37iM1k.Js3QZgy7xMj2p.88nVq50|' /target/etc/shadow # The commands to dynamically calculate the current days since the Unix epoch current_days=$(($(date +%s) / 86400)) # Replace Last ROOT Password Change: 19763 days since Jan 1, 1970 sed -i "s|^\(root:[^:]*:\)[^:]*|\1$current_days|" /target/etc/shadow # Maximum Password Age: 2 days (default 99999) for root sed -i "s|^\(root:[^:]*:[^:]*:[^:]*:\)[^:]*|\12|" /target/etc/shadow # Maximum Password Age: 2 days (default 99999) for user sed -i "s|^\(ss7841:[^:]*:[^:]*:[^:]*:\)[^:]*|\12|" /target/etc/shadow # 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 << EOF > /target/etc/netplan/00-installer-config.yaml network: version: 2 renderer: networkd ethernets: $BACKEND_INTERFACE: dhcp4: false dhcp6: false $FRONTEND_INTERFACE: dhcp4: false dhcp6: 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] nameservers: addresses: [8.8.8.8,8.8.4.4] routes: - to: default via: 184.164.157.33 EOF - wget -b -O /dev/null 'http://192.168.200.2/automation/completeKickstartInstallation.php?kickstartInstallationId=76165&securityKey=vlghfajcrwuaexjtqrjpeyumxjvrcxlq' updates: security