Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ The table below shows the currently provided operating systems for each provider
| Amazon Linux 2023 | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Azure Linux 3 | ❌ | 💙 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| CentOS 9 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ |
| Flatcar | ✅ | 💙 | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ✅ | ❌ | 💙 | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | |
| Flatcar | ✅ | 💙 | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ✅ | ❌ | 💙 | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | |
| Oracle Linux 9 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Photon 4 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Photon 5 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | 💙 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
Expand Down
1 change: 1 addition & 0 deletions docs/book/src/capi/providers/vultr.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ for the different operating systems.

| File | Description |
|------|-------------|
| `flatcar-stable.json` | The settings for the Flatcar Stable image |
| `ubuntu-2204.json` | The settings for the Ubuntu 22.04 image |
| `ubuntu-2404.json` | The settings for the Ubuntu 24.04 image |
| `ubuntu-2604.json` | The settings for the Ubuntu 26.04 image |
22 changes: 20 additions & 2 deletions images/capi/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -193,6 +193,7 @@ deps-lint: deps-common
.PHONY: deps-vultr
deps-vultr: ## Installs/checks dependencies for Vultr builds
deps-vultr: deps-common
hack/ensure-jq.sh
$(PACKER) init packer/config.pkr.hcl
$(PACKER) init packer/vultr/config.pkr.hcl

Expand Down Expand Up @@ -412,7 +413,7 @@ HCLOUD_BUILD_NAMES ?= hcloud-ubuntu-2204 hcloud-ubuntu-2404 hcloud-ubuntu-2604 h

PROXMOX_BUILD_NAMES ?= proxmox-ubuntu-2204 proxmox-ubuntu-2404 proxmox-ubuntu-2404-efi proxmox-ubuntu-2604 proxmox-ubuntu-2604-efi proxmox-rockylinux-9 proxmox-flatcar

VULTR_BUILD_NAMES ?= vultr-ubuntu-2204 vultr-ubuntu-2404 vultr-ubuntu-2604
VULTR_BUILD_NAMES ?= vultr-ubuntu-2204 vultr-ubuntu-2404 vultr-ubuntu-2604 vultr-flatcar-stable

MAAS_BUILD_NAMES ?= maas-ubuntu-2204-efi maas-ubuntu-2404-efi maas-ubuntu-2604-efi
MAAS_ARM64_BUILD_NAMES ?= maas-ubuntu-2204-arm64 maas-ubuntu-2404-arm64
Expand Down Expand Up @@ -662,7 +663,22 @@ $(PROXMOX_VALIDATE_TARGETS): deps-proxmox set-ssh-password

.PHONY: $(VULTR_BUILD_TARGETS)
$(VULTR_BUILD_TARGETS): deps-vultr
$(PACKER) build $(PACKER_NODE_FLAGS) -var-file="$(abspath packer/vultr/$(subst build-vultr-,,$@).json)" $(ABSOLUTE_PACKER_VAR_FILES) packer/vultr/packer.json
@set -eu; \
VULTR_VAR_FILE="$(abspath packer/vultr/$(subst build-vultr-,,$@).json)"; \
VULTR_USERDATA_FILE="$$(jq -r '.userdata_file // empty' "$${VULTR_VAR_FILE}")"; \
PACKER_USERDATA_ARGS=(); \
VULTR_USERDATA_BASE64=""; \
if [[ -n "$${VULTR_USERDATA_FILE}" ]]; then \
if [[ ! -f "$${VULTR_USERDATA_FILE}" ]]; then \
echo "Vultr userdata_file not found: $${VULTR_USERDATA_FILE}" >&2; \
exit 1; \
fi; \
jq -e . "$${VULTR_USERDATA_FILE}" >/dev/null; \
VULTR_USERDATA_BASE64="$$( { base64 -w0 || base64; } 2>/dev/null < "$${VULTR_USERDATA_FILE}" | tr -d '\n' )"; \
echo "Vultr userdata preprocess: file=$${VULTR_USERDATA_FILE} bytes=$$(wc -c < "$${VULTR_USERDATA_FILE}") b64_len=$${#VULTR_USERDATA_BASE64}" >&2; \
PACKER_USERDATA_ARGS=(-var "userdata_base64=$${VULTR_USERDATA_BASE64}"); \
fi; \
$(PACKER) build $(PACKER_NODE_FLAGS) -var-file="$${VULTR_VAR_FILE}" $(ABSOLUTE_PACKER_VAR_FILES) "$${PACKER_USERDATA_ARGS[@]}" packer/vultr/packer.json

.PHONY: $(VULTR_VALIDATE_TARGETS)
$(VULTR_VALIDATE_TARGETS): deps-vultr
Expand Down Expand Up @@ -904,6 +920,7 @@ build-proxmox-all: $(PROXMOX_BUILD_TARGETS) ## Builds all Proxmox images
build-vultr-ubuntu-2204: ## Builds Ubuntu 22.04 Vultr Snapshot
build-vultr-ubuntu-2404: ## Builds Ubuntu 24.04 Vultr Snapshot
build-vultr-ubuntu-2604: ## Builds Ubuntu 26.04 Vultr Snapshot
build-vultr-flatcar-stable: ## Builds Flatcar Stable Vultr Snapshot
build-vultr-all: $(VULTR_BUILD_TARGETS) ## Builds all Vultr Snapshots

build-scaleway-rockylinux-9: ## Builds Rocky Linux 9 Scaleway image
Expand Down Expand Up @@ -1066,6 +1083,7 @@ validate-proxmox-all: $(PROXMOX_VALIDATE_TARGETS) ## Validates all Proxmox Packe
validate-vultr-ubuntu-2204: ## Validates Ubuntu 22.04 Vultr Snapshot Packer config
validate-vultr-ubuntu-2404: ## Validates Ubuntu 24.04 Vultr Snapshot Packer config
validate-vultr-ubuntu-2604: ## Validates Ubuntu 26.04 Vultr Snapshot Packer config
validate-vultr-flatcar-stable: ## Validates Flatcar Stable Vultr Snapshot Packer config
validate-vultr-all: $(VULTR_VALIDATE_TARGETS) ## Validates all Vultr Snapshot Packer config

validate-scaleway-rockylinux-9: ## Validates Rocky Linux 9 Scaleway image Packer config
Expand Down
16 changes: 16 additions & 0 deletions images/capi/packer/vultr/flatcar-stable.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"ansible_extra_vars": "ansible_python_interpreter=/opt/bin/python",
"ansible_user": "core",
"build_name": "flatcar-stable",
"kubernetes_cni_source_type": "http",
"kubernetes_source_type": "http",
"os": "2077",
"python_path": "/opt/bin/builder-env/site-packages",
"snapshot_name_suffix": "on Flatcar Stable",
"source_image": "flatcar-stable-x64",
"ssh_username": "core",
"systemd_prefix": "/etc/systemd",
"sysusr_prefix": "/opt",
"sysusrlocal_prefix": "/opt",
"userdata_file": "packer/files/flatcar/ignition/bootstrap-cloud.json"
}
21 changes: 17 additions & 4 deletions images/capi/packer/vultr/packer.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,21 @@
"plan_id": "{{ user `plan` }}",
"region_id": "{{ user `region` }}",
"snapshot_description": "Cluster API Kubernetes {{ user `kubernetes_semver` }} {{ user `snapshot_name_suffix` }}",
"ssh_username": "root",
"ssh_username": "{{user `ssh_username`}}",
"tag": "cluster-api-{{ user `build_name` }}:{{ user `kubernetes_semver` | replace_all `.` `-` }}",
"type": "vultr"
"type": "vultr",
"userdata": "{{ user `userdata_base64` }}"
}
],
"provisioners": [
{
"environment_vars": [
"PYPY_HTTP_SOURCE={{user `pypy_http_source`}}"
],
"execute_command": "BUILD_NAME={{user `build_name`}}; if [[ \"${BUILD_NAME}\" == *\"flatcar\"* ]]; then sudo {{.Vars}} -S -E bash '{{.Path}}'; fi",
"script": "./packer/files/flatcar/scripts/bootstrap-flatcar.sh",
"type": "shell"
},
{
"ansible_env_vars": [
"ANSIBLE_SSH_ARGS='{{user `existing_ansible_ssh_args`}} {{user `ansible_common_ssh_args`}}'"
Expand All @@ -28,13 +37,14 @@
],
"playbook_file": "./ansible/node.yml",
"type": "ansible",
"user": "packer"
"user": "{{user `ansible_user`}}"
}
],
"variables": {
"ansible_common_vars": "",
"ansible_extra_vars": "",
"ansible_scp_extra_args": "",
"ansible_user": "packer",
"api_key": "{{env `VULTR_API_KEY`}}",
"build_timestamp": "{{timestamp}}",
"containerd_enable_limit_no_file": "false",
Expand Down Expand Up @@ -66,6 +76,9 @@
"os": "{{ user `os` }}",
"plan": "vc2-1c-1gb",
"region": "ewr",
"runc_version": null
"runc_version": null,
"ssh_username": "root",
"userdata_base64": "",
"userdata_file": ""
}
}