Skip to content

Commit

Permalink
Merge pull request #1530 from alekitto/proxmox-ubuntu2404
Browse files Browse the repository at this point in the history
Add ubuntu 24.04 for Proxmox
  • Loading branch information
k8s-ci-robot committed Jul 30, 2024
2 parents a662bf4 + 02cc0a8 commit 3ecab2a
Show file tree
Hide file tree
Showing 8 changed files with 152 additions and 1 deletion.
1 change: 1 addition & 0 deletions docs/book/src/capi/providers/proxmox.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ the different operating systems.
| File | Description |
|--------------------|-----------------------------------------|
| `ubuntu-2204.json` | The settings for the Ubuntu 22.04 image |
| `ubuntu-2404.json` | The settings for the Ubuntu 24.04 image |

The full list of available environment vars can be found in the `variables` section of `images/capi/packer/proxmox/packer.json`.

Expand Down
3 changes: 2 additions & 1 deletion images/capi/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -370,7 +370,7 @@ NUTANIX_BUILD_NAMES ?= nutanix-ubuntu-2004 nutanix-ubuntu-2204 nutanix-ubuntu-24

HCLOUD_BUILD_NAMES ?= hcloud-ubuntu-2004 hcloud-ubuntu-2204 hcloud-ubuntu-2404 hcloud-centos-7 hcloud-rockylinux-8 hcloud-rockylinux-9 hcloud-flatcar

PROXMOX_BUILD_NAMES ?= proxmox-ubuntu-2204
PROXMOX_BUILD_NAMES ?= proxmox-ubuntu-2204 proxmox-ubuntu-2404

VULTR_BUILD_NAMES ?= vultr-ubuntu-2204

Expand Down Expand Up @@ -843,6 +843,7 @@ build-hcloud-flatcar: ## Builds the Hetzner Cloud Flatcar image
build-hcloud-all: $(HCLOUD_BUILD_TARGETS) ## Builds all Hetzner Cloud image

build-proxmox-ubuntu-2204: ## Builds the Proxmox ubuntu-2204 image
build-proxmox-ubuntu-2404: ## Builds the Proxmox ubuntu-2404 image

build-vultr-ubuntu-2204: ## Builds Ubuntu 22.04 Vultr Snapshot

Expand Down
3 changes: 3 additions & 0 deletions images/capi/ansible/roles/providers/tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@
- ansible.builtin.include_tasks: oci.yml
when: packer_builder_type.startswith('oracle-oci')

- ansible.builtin.include_tasks: proxmox.yml
when: packer_builder_type.startswith('proxmox')

- ansible.builtin.include_tasks: qemu.yml
when: packer_builder_type is search('qemu') and build_target is not search('raw')

Expand Down
57 changes: 57 additions & 0 deletions images/capi/ansible/roles/providers/tasks/proxmox.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# Copyright 2024 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.
---
- name: Install cloud-init packages
ansible.builtin.apt:
name: "{{ packages }}"
state: present
force_apt_get: true
vars:
packages:
- cloud-init
- cloud-guest-utils
- cloud-initramfs-copymods
- cloud-initramfs-dyn-netconf
when: ansible_os_family == "Debian"

- name: Install cloud-init packages
ansible.builtin.yum:
name: "{{ packages }}"
state: present
vars:
packages:
- cloud-init
- cloud-utils-growpart
when: ansible_os_family == "RedHat"

- name: Disable Hyper-V KVP protocol daemon on Ubuntu
ansible.builtin.systemd:
name: hv-kvp-daemon
state: stopped
enabled: false
when: ansible_os_family == "Debian"

- name: Copy networkd-dispatcher scripts to add DHCP provided NTP servers
ansible.builtin.template:
src: "{{ item.src }}"
dest: "{{ item.dest }}"
mode: a+x
vars:
server_dir: /var/lib/dhcp
chrony_helper_dir: /usr/libexec/chrony
loop:
- { src: files/etc/networkd-dispatcher/routable.d/20-chrony.j2, dest: /etc/networkd-dispatcher/routable.d/20-chrony }
- { src: files/etc/networkd-dispatcher/off.d/20-chrony.j2, dest: /etc/networkd-dispatcher/off.d/20-chrony }
- { src: files/etc/networkd-dispatcher/no-carrier.d/20-chrony.j2, dest: /etc/networkd-dispatcher/no-carrier.d/20-chrony }
when: ansible_os_family == "Debian"
Empty file.
75 changes: 75 additions & 0 deletions images/capi/packer/proxmox/linux/ubuntu/http/24.04/user-data
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
#cloud-config
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
ssh:
install-server: true
allow-pw: true
packages:
- qemu-guest-agent
apt:
mirror-selection:
primary:
- uri: http://archive.ubuntu.com/ubuntu
# Create a single-partition with no swap space. Kubernetes
# really dislikes the idea of anyone else managing memory.
# For more information on how partitioning is configured,
# please refer to https://curtin.readthedocs.io/en/latest/topics/storage.html.
storage:
grub:
replace_linux_default: false
config:
- type: disk
id: disk-0
size: largest
grub_device: true
preserve: false
ptable: msdos
wipe: superblock
- type: partition
id: partition-0
device: disk-0
size: -1
number: 1
preserve: false
flag: boot
- type: format
id: format-0
volume: partition-0
fstype: ext4
preserve: false
- type: mount
id: mount-0
device: format-0
path: /
updates: 'all'
# 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:
- swapoff -a
- rm -f /swapfile
- sed -ri '/\sswap\s/s/^#?/#/' /etc/fstab
- apt-get purge --auto-remove -y
- rm -rf /var/lib/apt/lists/*
1 change: 1 addition & 0 deletions images/capi/packer/proxmox/packer.json
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,7 @@
"--scp-extra-args",
"{{user `ansible_scp_extra_args`}}"
],
"pause_before": "10s",
"playbook_file": "./ansible/node.yml",
"type": "ansible",
"user": "builder"
Expand Down
13 changes: 13 additions & 0 deletions images/capi/packer/proxmox/ubuntu-2404.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"boot_command_prefix": "c<wait>linux /casper/vmlinuz --- autoinstall ds='nocloud-net;s=http://{{ .HTTPIP }}:{{ .HTTPPort }}/24.04/'<enter><wait10s>initrd /casper/initrd<enter><wait10s>boot<enter><wait10s>",
"build_name": "ubuntu-2404",
"distribution_version": "2404",
"distro_name": "ubuntu",
"iso_checksum": "8762f7e74e4d64d72fceb5f70682e6b069932deedb4949c6975d0f0fe0a91be3",
"iso_checksum_type": "sha256",
"iso_url": "https://releases.ubuntu.com/releases/24.04/ubuntu-24.04-live-server-amd64.iso",
"os_display_name": "Ubuntu 24.04",
"source_image": "ubuntu-20-04-x64",
"unmount_iso": "true",
"version": "24.04"
}

0 comments on commit 3ecab2a

Please sign in to comment.