Skip to content

Commit

Permalink
Add 2404 targets to the OVA and RAW builder, also 2204 to the raw bui…
Browse files Browse the repository at this point in the history
…lder
  • Loading branch information
MaxRink committed Jul 4, 2024
1 parent b29bf55 commit ce06092
Show file tree
Hide file tree
Showing 20 changed files with 552 additions and 3 deletions.
4 changes: 3 additions & 1 deletion docs/book/src/capi/providers/vsphere.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,9 @@ In addition to the configuration found in `images/capi/packer/config`, the `ova`
| `rhel-7.json` | The settings for the RHEL 7 image |
| `ubuntu-1804.json` | The settings for the Ubuntu 18.04 image |
| `ubuntu-2004.json` | The settings for the Ubuntu 20.04 image |
| `ubuntu-2204.json` | The settings for the Ubuntu 22.04 image |
| `ubuntu-2204.json` | The settings for the Ubuntu 22.04 image |
| `ubuntu-2204-efi.json` | The settings for the Ubuntu 22.04 EFI image |
| `ubuntu-2404-efi.json` | The settings for the Ubuntu 24.04 EFI image |
| `vsphere.json` | Additional settings needed when building on a remote vSphere |

### Photon specific options
Expand Down
10 changes: 10 additions & 0 deletions images/capi/ansible/roles/sysprep/tasks/debian.yml
Original file line number Diff line number Diff line change
Expand Up @@ -144,3 +144,13 @@
path: /etc/cloud/cloud.cfg.d/90-installer-network.cfg
state: absent
when: ansible_distribution_version is version('22.04', '>=')

- name: Remove subiquity install logs
ansible.builtin.file:
path: "{{ item }}"
state: absent
when: ansible_distribution_version is version('22.04', '>=')
loop:
- /var/log/installer/subiquity-server-debug.log
- /var/log/installer/subiquity-server-info.log
- /var/log/installer/
Empty file.
117 changes: 117 additions & 0 deletions images/capi/packer/ova/linux/ubuntu/http/24.04.efi/user-data
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
#cloud-config
# Copyright 2022 The Kubernetes Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# For more information on how autoinstall is configured, please refer to
# https://ubuntu.com/server/docs/install/autoinstall-reference
autoinstall:
version: 1
# Disable ssh server during installation, otherwise packer tries to connect and exceed max attempts
early-commands:
- systemctl stop ssh
# Configure the locale
locale: en_US.UTF-8
keyboard:
layout: us
grub:
reorder_uefi: false
replace_linux_default: false
# For more information on how partitioning is configured,
# please refer to https://curtin.readthedocs.io/en/latest/topics/storage.html.
storage:
swap:
size: 0
grub:
reorder_uefi: false
replace_linux_default: false
config:
- ptable: gpt
path: /dev/sda
wipe: superblock-recursive
preserve: false
name: ''
grub_device: false
type: disk
id: disk-sda
- device: disk-sda
# Create EFI partition of 512MB same as in Ubuntu 20.04
size: 536870912
wipe: superblock
flag: boot
number: 1
preserve: false
grub_device: true
type: partition
id: partition-0
- fstype: fat32
volume: partition-0
preserve: false
type: format
id: format-0
- device: disk-sda
size: -1
wipe: superblock
flag: ''
number: 2
preserve: false
grub_device: false
type: partition
id: partition-1
- fstype: ext4
volume: partition-1
preserve: false
type: format
id: format-1
- path: /
device: format-1
type: mount
id: mount-1
- path: /boot/efi
device: format-0
type: mount
id: mount-0
updates: "all"
ssh:
install-server: true
allow-pw: true
# Customize the list of packages installed.
packages:
- open-vm-tools
# Create the default user.
# Ensures the "builder" user doesn't require a password to use sudo.
user-data:
users:
- name: builder
# openssl passwd -6 -stdin <<< builder
passwd: $6$xyz$UtXVazU08Q5b8AW.TJ3MPYZglyXa3Ttf2RCel8MCUPlEYO1evWxeWBhZ2QqivU/Ij4tqYAxMCqc2ujEM4dMSe1
groups: [adm, cdrom, dip, plugdev, lxd, sudo]
lock-passwd: false
sudo: ALL=(ALL) NOPASSWD:ALL
shell: /bin/bash

# This command runs after all other steps; it:
# 1. Disables swapfiles
# 2. Removes the existing swapfile
# 3. Removes the swapfile entry from /etc/fstab
# 4. Removes snapd, https://bugs.launchpad.net/subiquity/+bug/1946609
# 5. Cleans up any packages that are no longer required
# 6. Removes the cached list of packages
late-commands:
- curtin in-target --target=/target -- swapoff -a
- curtin in-target --target=/target -- rm -f /swap.img
- curtin in-target --target=/target -- sed -ri '/\sswap\s/s/^#?/#/' /etc/fstab
- chroot /target apt-get purge -y snapd
- curtin in-target --target=/target -- apt-get purge --auto-remove -y
- curtin in-target --target=/target -- apt-get clean
- curtin in-target --target=/target -- rm -rf /var/lib/apt/lists/*
11 changes: 11 additions & 0 deletions images/capi/packer/ova/packer-node.json
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@
"{{user `boot_command_suffix`}}"
],
"boot_wait": "{{user `boot_wait`}}",
"cd_files": "{{user `cd_files`}}",
"cd_label": "{{user `cd_label`}}",
"cdrom_adapter_type": "{{user `cdrom_adapter_type`}}",
"communicator": "ssh",
"cores": "{{user `cpu_cores`}}",
Expand Down Expand Up @@ -90,6 +92,8 @@
"{{user `boot_command_suffix`}}"
],
"boot_wait": "{{user `boot_wait`}}",
"cd_files": "{{user `cd_files`}}",
"cd_label": "{{user `cd_label`}}",
"cdrom_adapter_type": "{{user `cdrom_adapter_type`}}",
"communicator": "ssh",
"cores": "{{user `cpu_cores`}}",
Expand Down Expand Up @@ -140,6 +144,8 @@
"{{user `boot_command_suffix`}}"
],
"boot_wait": "{{user `boot_wait`}}",
"cd_files": "{{user `cd_files`}}",
"cd_label": "{{user `cd_label`}}",
"cdrom_type": "{{user `cdrom_type`}}",
"cluster": "{{user `cluster`}}",
"communicator": "ssh",
Expand Down Expand Up @@ -199,6 +205,8 @@
"{{user `boot_command_suffix`}}"
],
"boot_wait": "{{user `boot_wait`}}",
"cd_files": "{{user `cd_files`}}",
"cd_label": "{{user `cd_label`}}",
"cdrom_type": "{{user `cdrom_type`}}",
"cluster": "{{user `cluster`}}",
"communicator": "ssh",
Expand Down Expand Up @@ -234,6 +242,7 @@
"network_card": "{{user `network_card`}}"
}
],
"notes": "Builddate: {{isotime \"2006-01-02T15:04\"}}, containerd_version: {{user `containerd_version`}} vsphere_guest_os_type: {{user `vsphere_guest_os_type`}} kubernetes_cni_semver: {{user `kubernetes_cni_semver`}} kubernetes_semver: {{user `kubernetes_semver`}} kubernetes_source_type: {{user `kubernetes_source_type`}} vm_version: {{user `vmx_version`}}",
"password": "{{user `password`}}",
"resource_pool": "{{user `resource_pool`}}",
"shutdown_command": "echo '{{user `ssh_password`}}' | sudo -S -E sh -c 'userdel -f -r {{user `ssh_username`}} && rm -f /etc/sudoers.d/{{user `ssh_username` }} && {{user `shutdown_command`}}'",
Expand All @@ -257,6 +266,8 @@
{
"CPUs": "{{user `cpu`}}",
"RAM": "{{user `memory`}}",
"cd_files": "{{user `cd_files`}}",
"cd_label": "{{user `cd_label`}}",
"cluster": "{{user `cluster`}}",
"communicator": "ssh",
"convert_to_template": "{{user `convert_to_template`}}",
Expand Down
18 changes: 18 additions & 0 deletions images/capi/packer/ova/ubuntu-2404-efi.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"boot_command_prefix": "c<wait>linux /casper/vmlinuz ipv6.disable={{ user `boot_disable_ipv6` }} --- autoinstall ds='nocloud-net;s=http://{{ .HTTPIP }}:{{ .HTTPPort }}/24.04.efi/'<enter><wait>initrd /casper/initrd<enter><wait>boot<enter>",
"boot_disable_ipv6": "0",
"boot_media_path": "/media/HTTP",
"build_name": "ubuntu-{{user `distro_version` | replace_all \".\" \"\" }}-efi",
"distro_arch": "amd64",
"distro_name": "ubuntu",
"distro_version": "24.04",
"firmware": "efi",
"floppy_dirs": "./packer/ova/linux/{{user `distro_name`}}/http/",
"guest_os_type": "ubuntu-64",
"iso_checksum": "https://releases.ubuntu.com/noble/SHA256SUMS",
"iso_checksum_type": "file",
"iso_url": "https://releases.ubuntu.com/noble/ubuntu-24.04-live-server-amd64.iso",
"os_display_name": "Ubuntu 24.04",
"shutdown_command": "shutdown -P now",
"vsphere_guest_os_type": "ubuntu64Guest"
}
Empty file.
111 changes: 111 additions & 0 deletions images/capi/packer/raw/linux/ubuntu/http/22.04.efi/user-data
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
#cloud-config
# Copyright 2022 The Kubernetes Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# For more information on how autoinstall is configured, please refer to
# https://ubuntu.com/server/docs/install/autoinstall-reference
autoinstall:
version: 1
# Disable ssh server during installation, otherwise packer tries to connect and exceed max attempts
early-commands:
- systemctl stop ssh
# Configure the locale
locale: en_US.UTF-8
keyboard:
layout: us
grub:
reorder_uefi: false
replace_linux_default: false
# For more information on how partitioning is configured,
# please refer to https://curtin.readthedocs.io/en/latest/topics/storage.html.
storage:
config:
- ptable: gpt
path: /dev/sda
wipe: superblock-recursive
preserve: false
name: ''
grub_device: false
type: disk
id: disk-sda
- device: disk-sda
# Create EFI partition of 512MB same as in Ubuntu 20.04
size: 536870912
wipe: superblock
flag: boot
number: 1
preserve: false
grub_device: true
type: partition
id: partition-0
- fstype: fat32
volume: partition-0
preserve: false
type: format
id: format-0
- device: disk-sda
size: -1
wipe: superblock
flag: ''
number: 2
preserve: false
grub_device: false
type: partition
id: partition-1
- fstype: ext4
volume: partition-1
preserve: false
type: format
id: format-1
- path: /
device: format-1
type: mount
id: mount-1
- path: /boot/efi
device: format-0
type: mount
id: mount-0
updates: "all"
ssh:
install-server: true
allow-pw: true
# Create the default user.
# Ensures the "builder" user doesn't require a password to use sudo.
user-data:
users:
- name: builder
# openssl passwd -6 -stdin <<< builder
passwd: $6$xyz$UtXVazU08Q5b8AW.TJ3MPYZglyXa3Ttf2RCel8MCUPlEYO1evWxeWBhZ2QqivU/Ij4tqYAxMCqc2ujEM4dMSe1
groups: [adm, cdrom, dip, plugdev, lxd, sudo]
lock-passwd: false
sudo: ALL=(ALL) NOPASSWD:ALL
shell: /bin/bash

# This command runs after all other steps; it:
# 1. Disables swapfiles
# 2. Removes the existing swapfile
# 3. Removes the swapfile entry from /etc/fstab
# 4. Cleans up any packages that are no longer required
# 5. Removes the cached list of packages
late-commands:
- |
if [ -d /sys/firmware/efi ]; then
apt-get install -y efibootmgr
efibootmgr -o $(efibootmgr | perl -n -e '/Boot(.+)\* ubuntu/ && print $1')
fi
- swapoff -a
- rm -f /swapfile
- sed -ri '/\sswap\s/s/^#?/#/' /etc/fstab
- apt-get purge --auto-remove -y
- rm -rf /var/lib/apt/lists/*
Empty file.
Loading

0 comments on commit ce06092

Please sign in to comment.