-
Star
(144)
You must be signed in to star a gist -
Fork
(36)
You must be signed in to fork a gist
-
-
Save s3rj1k/55b10cd20f31542046018fcce32f103e to your computer and use it in GitHub Desktop.
# For recent versions of Ubuntu: | |
- https://www.pugetsystems.com/labs/hpc/ubuntu-22-04-server-autoinstall-iso/ | |
# Docs: | |
- https://wiki.ubuntu.com/FoundationsTeam/AutomatedServerInstalls | |
- https://wiki.ubuntu.com/FoundationsTeam/AutomatedServerInstalls/ConfigReference | |
- https://cloudinit.readthedocs.io/en/latest/topics/datasources/nocloud.html | |
- https://discourse.ubuntu.com/t/please-test-autoinstalls-for-20-04/15250/53 | |
# Download ISO Installer: | |
wget https://ubuntu.volia.net/ubuntu-releases/20.04.3/ubuntu-20.04.3-live-server-amd64.iso | |
# Create ISO distribution dirrectory: | |
mkdir -p iso/nocloud/ | |
# Extract ISO using 7z: | |
7z x ubuntu-20.04.3-live-server-amd64.iso -x'![BOOT]' -oiso | |
# Or extract ISO using xorriso and fix permissions: | |
xorriso -osirrox on -indev "ubuntu-20.04.3-live-server-amd64.iso" -extract / iso && chmod -R +w iso | |
# Create empty meta-data file: | |
touch iso/nocloud/meta-data | |
# Copy user-data file: | |
cp user-data iso/nocloud/user-data | |
# Update boot flags with cloud-init autoinstall: | |
## Should look similar to this: initrd=/casper/initrd quiet autoinstall ds=nocloud;s=/cdrom/nocloud/ --- | |
sed -i 's|---|autoinstall ds=nocloud\\\;s=/cdrom/nocloud/ ---|g' iso/boot/grub/grub.cfg | |
sed -i 's|---|autoinstall ds=nocloud;s=/cdrom/nocloud/ ---|g' iso/isolinux/txt.cfg | |
# Disable mandatory md5 checksum on boot: | |
md5sum iso/.disk/info > iso/md5sum.txt | |
sed -i 's|iso/|./|g' iso/md5sum.txt | |
# (Optionally) Regenerate md5: | |
# The find will warn 'File system loop detected' and return non-zero exit status on the 'ubuntu' symlink to '.' | |
# To avoid that, temporarily move it out of the way | |
mv iso/ubuntu . | |
(cd iso; find '!' -name "md5sum.txt" '!' -path "./isolinux/*" -follow -type f -exec "$(which md5sum)" {} \; > ../md5sum.txt) | |
mv md5sum.txt iso/ | |
mv ubuntu iso | |
# Create Install ISO from extracted dir (ArchLinux): | |
xorriso -as mkisofs -r \ | |
-V Ubuntu\ custom\ amd64 \ | |
-o ubuntu-20.04.3-live-server-amd64-autoinstall.iso \ | |
-J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot \ | |
-boot-load-size 4 -boot-info-table \ | |
-eltorito-alt-boot -e boot/grub/efi.img -no-emul-boot \ | |
-isohybrid-gpt-basdat -isohybrid-apm-hfsplus \ | |
-isohybrid-mbr /usr/lib/syslinux/bios/isohdpfx.bin \ | |
iso/boot iso | |
# Create Install ISO from extracted dir (Ubuntu): | |
xorriso -as mkisofs -r \ | |
-V Ubuntu\ custom\ amd64 \ | |
-o ubuntu-20.04.3-live-server-amd64-autoinstall.iso \ | |
-J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot \ | |
-boot-load-size 4 -boot-info-table \ | |
-eltorito-alt-boot -e boot/grub/efi.img -no-emul-boot \ | |
-isohybrid-gpt-basdat -isohybrid-apm-hfsplus \ | |
-isohybrid-mbr /usr/lib/ISOLINUX/isohdpfx.bin \ | |
iso/boot iso | |
# After install: | |
- login with 'root:root' and change root user password | |
- set correct hostname with 'hostnamectl' |
#cloud-config | |
autoinstall: | |
version: 1 | |
interactive-sections: | |
- network | |
- storage | |
locale: en_US.UTF-8 | |
keyboard: | |
layout: us | |
ssh: | |
allow-pw: true | |
install-server: false | |
late-commands: | |
- curtin in-target --target=/target -- apt-get --purge -y --quiet=2 remove apport bcache-tools btrfs-progs byobu cloud-guest-utils cloud-initramfs-copymods cloud-initramfs-dyn-netconf friendly-recovery fwupd landscape-common lxd-agent-loader ntfs-3g open-vm-tools plymouth plymouth-theme-ubuntu-text popularity-contest rsync screen snapd sosreport tmux ufw | |
- curtin in-target --target=/target -- apt-get --purge -y --quiet=2 autoremove | |
- curtin in-target --target=/target -- apt-get clean | |
- sed -i 's/ENABLED=1/ENABLED=0/' /target/etc/default/motd-news | |
- sed -i 's|# en_US.UTF-8 UTF-8|en_US.UTF-8 UTF-8|' /target/etc/locale.gen | |
- curtin in-target --target=/target -- locale-gen | |
- ln -fs /dev/null /target/etc/systemd/system/connman.service | |
- ln -fs /dev/null /target/etc/systemd/system/display-manager.service | |
- ln -fs /dev/null /target/etc/systemd/system/motd-news.service | |
- ln -fs /dev/null /target/etc/systemd/system/motd-news.timer | |
- ln -fs /dev/null /target/etc/systemd/system/plymouth-quit-wait.service | |
- ln -fs /dev/null /target/etc/systemd/system/plymouth-start.service | |
- ln -fs /dev/null /target/etc/systemd/system/systemd-resolved.service | |
- ln -fs /usr/share/zoneinfo/Europe/Kiev /target/etc/localtime | |
- rm -f /target/etc/resolv.conf | |
- printf 'nameserver 8.8.8.8\nnameserver 1.1.1.1\noptions timeout:1\noptions attempts:1\noptions rotate\n' > /target/etc/resolv.conf | |
- rm -f /target/etc/update-motd.d/10-help-text | |
- rm -rf /target/root/snap | |
- rm -rf /target/snap | |
- rm -rf /target/var/lib/snapd | |
- rm -rf /target/var/snap | |
- curtin in-target --target=/target -- passwd -q -u root | |
- curtin in-target --target=/target -- passwd -q -x -1 root | |
- curtin in-target --target=/target -- passwd -q -e root | |
- sed -i 's|^root:.:|root:$6$3b873df474b55246$GIpSsujar7ihMzG8urUKpzF9/2yZJhR.msyFRa5ouGXOKRCVszsc4aBcE2yi3IuFVxtAGwrPKin2WAzK3qOtB.:|' /target/etc/shadow | |
user-data: | |
disable_root: false |
#cloud-config | |
autoinstall: | |
version: 1 | |
interactive-sections: | |
- network | |
- storage | |
locale: en_US.UTF-8 | |
keyboard: | |
layout: us | |
ssh: | |
allow-pw: true | |
install-server: false | |
late-commands: | |
- curtin in-target --target=/target -- apt-get --purge -y --quiet=2 remove apport bcache-tools btrfs-progs byobu cloud-guest-utils cloud-initramfs-copymods cloud-initramfs-dyn-netconf friendly-recovery fwupd landscape-common lxd-agent-loader ntfs-3g open-vm-tools plymouth plymouth-theme-ubuntu-text popularity-contest screen snapd sosreport tmux ufw | |
- curtin in-target --target=/target -- apt-get -qq update | |
- curtin in-target --target=/target -- apt-get -y install wget gnupg python2.7 openssh-server | |
- curtin in-target --target=/target -- apt-get -qq update | |
- curtin in-target --target=/target -- apt-get -y dist-upgrade | |
- curtin in-target --target=/target -- apt-get --purge -y --quiet=2 autoremove | |
- sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /target/etc/ssh/sshd_config | |
- sed -i 's/ENABLED=1/ENABLED=0/' /target/etc/default/motd-news | |
- sed -i 's|# en_US.UTF-8 UTF-8|en_US.UTF-8 UTF-8|' /target/etc/locale.gen | |
- curtin in-target --target=/target -- locale-gen | |
- ln -fs /dev/null /target/etc/systemd/system/connman.service | |
- ln -fs /dev/null /target/etc/systemd/system/display-manager.service | |
- ln -fs /dev/null /target/etc/systemd/system/motd-news.service | |
- ln -fs /dev/null /target/etc/systemd/system/motd-news.timer | |
- ln -fs /dev/null /target/etc/systemd/system/plymouth-quit-wait.service | |
- ln -fs /dev/null /target/etc/systemd/system/plymouth-start.service | |
- ln -fs /dev/null /target/etc/systemd/system/systemd-resolved.service | |
- ln -fs /usr/share/zoneinfo/Europe/Kiev /target/etc/localtime | |
- rm -f /target/etc/resolv.conf | |
- printf 'nameserver 8.8.8.8\nnameserver 1.1.1.1\noptions timeout:1\noptions attempts:1\noptions rotate\n' > /target/etc/resolv.conf | |
- rm -f /target/etc/update-motd.d/10-help-text | |
- rm -rf /target/root/snap | |
- rm -rf /target/snap | |
- rm -rf /target/var/lib/snapd | |
- rm -rf /target/var/snap | |
- curtin in-target --target=/target -- passwd -q -u root | |
- curtin in-target --target=/target -- passwd -q -x -1 root | |
- curtin in-target --target=/target -- passwd -q -e root | |
- sed -i 's|^root:.:|root:$6$3b873df474b55246$GIpSsujar7ihMzG8urUKpzF9/2yZJhR.msyFRa5ouGXOKRCVszsc4aBcE2yi3IuFVxtAGwrPKin2WAzK3qOtB.:|' /target/etc/shadow | |
- sed -i 's/ext4 defaults/ext4 prjquota,lazytime/g' /target/etc/fstab | |
- findmnt --real -U -n -t ext4 -o source | awk '{system("umount -l "$1)}' | |
- blkid -t TYPE="ext4" -o device | awk '{system("tune2fs -O project,quota -Q prjquota "$1)}' | |
user-data: | |
disable_root: false |
surter
commented
May 26, 2023
Help! I've looked high and low and I can't find anything that clearly shows how to set a static IP in the autoinstallation configuration file. The closest I've come is this (from here:https://netplan.readthedocs.io/en/latest/netplan-yaml/):
network:
ethernets:
eth0:
addresses:
- "10.0.0.15/24":
lifetime: 0
label: "maas"
- "2001:1::1/64"
which is ALMOST clear - except for that last line. What IS that? Can I omit it or is it necessary? If it's necessary, where/how d I find it?
It is an IPv6 address. Whether you need it depends on your setup.
The configuration will apply the addresses to eth0 but it still lacks nameservers and routes to function as probably expected. See the netplan manpage for infomration how to add those.
Jip. If you need examples. Just enter netplan static ip adress to Google there come 100 examples on how to do it ;). One is even in the netplan docs. You just have look for it ;)
https://netplan.readthedocs.io/en/latest/using-static-ip-addresses/
The last line is an IPv6 address which we don't use so you can leave that alone.
Thank you!