Skip to content

Commit fede562

Browse files
authored
Merge pull request #1988 from joshfrench/arm64-amis
Add support for arm64-based AMIs
2 parents 0306dd4 + ed7ff4c commit fede562

9 files changed

Lines changed: 84 additions & 6 deletions

File tree

images/capi/Makefile

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -369,7 +369,7 @@ NODE_OVA_VSPHERE_BUILD_NAMES := $(addprefix node-ova-vsphere-,$(PLATFORMS_AND_V
369369
NODE_OVA_VSPHERE_BASE_BUILD_NAMES := $(addprefix node-ova-vsphere-base-,$(PLATFORMS_AND_VERSIONS))
370370
NODE_OVA_VSPHERE_CLONE_BUILD_NAMES := $(addprefix node-ova-vsphere-clone-,$(PLATFORMS_AND_VERSIONS))
371371

372-
AMI_BUILD_NAMES ?= ami-ubuntu-2204 ami-ubuntu-2404 ami-amazon-2 ami-amazon-2023 ami-flatcar ami-flatcar-arm64 ami-windows-2019
372+
AMI_BUILD_NAMES ?= ami-ubuntu-2204 ami-ubuntu-2404 ami-ubuntu-2204-arm64 ami-ubuntu-2404-arm64 ami-amazon-2 ami-amazon-2023 ami-amazon-2023-arm64 ami-flatcar ami-flatcar-arm64 ami-windows-2019
373373
HUAWEICLOUD_BUILD_NAMES ?= huaweicloud-ubuntu-2204
374374
GCE_BUILD_NAMES ?= gce-ubuntu-2204 gce-ubuntu-2404
375375

@@ -698,8 +698,11 @@ $(RAW_CLEAN_TARGETS):
698698
##@ Builds
699699
build-ami-amazon-2: ## Builds Amazon-2 Linux AMI
700700
build-ami-amazon-2023: ## Builds Amazon-2023 Linux AMI
701+
build-ami-amazon-2023-arm64: ## Builds Amazon-2023 Linux arm64 AMI
701702
build-ami-ubuntu-2204: ## Builds Ubuntu 22.04 AMI
703+
build-ami-ubuntu-2204-arm64: ## Builds Ubuntu 22.04 arm64 AMI
702704
build-ami-ubuntu-2404: ## Builds Ubuntu 24.04 AMI
705+
build-ami-ubuntu-2404-arm64: ## Builds Ubuntu 24.04 arm64 AMI
703706
build-ami-flatcar: ## Builds Flatcar
704707
build-ami-flatcar-arm64: ## Builds Flatcar arm64
705708
build-ami-windows-2019: ## Build Windows Server 2019 AMI Packer config
@@ -876,11 +879,13 @@ build-scaleway-all: $(SCALEWAY_BUILD_TARGETS) ## Builds all Scaleway images
876879
##@ Validate packer config
877880
validate-ami-amazon-2: ## Validates Amazon-2 Linux AMI Packer config
878881
validate-ami-amazon-2023: ## Validates Amazon-2023 Linux AMI Packer config
882+
validate-ami-amazon-2023-arm64: ## Validates Amazon-2023 Linux arm64 AMI Packer config
879883
validate-ami-flatcar: ## Validates Flatcar AMI Packer config
880884
validate-ami-flatcar-arm64: ## Validates Flatcar arm64 AMI Packer config
881885
validate-ami-ubuntu-2204: ## Validates Ubuntu 22.04 AMI Packer config
882-
886+
validate-ami-ubuntu-2204-arm64: ## Validates Ubuntu 22.04 arm64 AMI Packer config
883887
validate-ami-ubuntu-2404: ## Validates Ubuntu 24.04 AMI Packer config
888+
validate-ami-ubuntu-2404-arm64: ## Validates Ubuntu 24.04 arm64 AMI Packer config
884889
validate-ami-windows-2019: ## Validates Windows Server 2019 AMI Packer config
885890
validate-ami-all: $(AMI_VALIDATE_TARGETS) ## Validates all AMIs Packer config
886891

images/capi/ansible/roles/node/meta/main.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,9 @@ dependencies:
2929
vars:
3030
rpms: "{{ common_rpms }}"
3131
debs: "{{ common_debs }}"
32-
when: packer_builder_type == "oracle-oci" and ansible_facts['architecture'] == "aarch64"
32+
when: >
33+
ansible_facts['architecture'] == "aarch64"
34+
and ansible_facts['distribution'] not in ["VMware Photon OS", "Amazon"]
3335
3436
- role: setup
3537
vars:
@@ -45,7 +47,7 @@ dependencies:
4547
debs: "{{ common_debs + lookup('vars', 'common_' + build_target + '_debs') }}"
4648
when: >
4749
ansible_facts['distribution'] not in ["VMware Photon OS", "Amazon"]
48-
and not (packer_builder_type == "oracle-oci" and ansible_facts['architecture'] == "aarch64")
50+
and ansible_facts['architecture'] != "aarch64"
4951
and not packer_builder_type is search('qemu')
5052
5153
- role: setup

images/capi/ansible/roles/providers/tasks/aws.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,11 @@
5151
name: hv-kvp-daemon
5252
state: stopped
5353
enabled: false
54+
register: disable_hypervisor
55+
ignore_errors: true
56+
failed_when:
57+
- disable_hypervisor.failed
58+
- '"Could not find" not in (disable_hypervisor.msg | default(""))'
5459
when: ansible_facts['os_family'] == "Debian"
5560

5661
- name: Create cloud-init custom data source list
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
"amazon_ssm_agent_rpm": "https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_arm64/amazon-ssm-agent.rpm",
3+
"ami_filter_arch": "arm64",
4+
"ami_filter_name": "al2023-ami-minimal-2023.*-kernel-6.1*",
5+
"ami_filter_owners": "amazon",
6+
"arch": "arm64",
7+
"build_name": "amazon-2023-arm64",
8+
"builder_instance_type": "t4g.small",
9+
"distribution": "Amazon Linux",
10+
"distribution_release": "Amazon Linux 2023",
11+
"distribution_version": "2023",
12+
"distro_version": "2023",
13+
"epel_rpm_gpg_key": "",
14+
"goss_arch": "arm64",
15+
"redhat_epel_rpm": "",
16+
"root_device_name": "/dev/xvda",
17+
"source_ami": "",
18+
"ssh_username": "ec2-user"
19+
}

images/capi/packer/ami/packer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@
125125
"use_sudo": true,
126126
"vars_file": "{{user `goss_vars_file`}}",
127127
"vars_inline": {
128-
"ARCH": "amd64",
128+
"ARCH": "{{user `arch`}}",
129129
"OS": "{{user `distribution` | lower}}",
130130
"OS_VERSION": "{{user `distribution_version` | lower}}",
131131
"PROVIDER": "amazon",
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"ami_filter_arch": "arm64",
3+
"ami_filter_name": "ubuntu/images/*ubuntu-jammy-22.04-arm64-server-*",
4+
"ami_filter_owners": "099720109477",
5+
"ansible_extra_vars": "",
6+
"arch": "arm64",
7+
"build_name": "ubuntu-22.04-arm64",
8+
"builder_instance_type": "t4g.small",
9+
"distribution": "Ubuntu",
10+
"distribution_release": "jammy",
11+
"distribution_version": "22.04",
12+
"goss_arch": "arm64",
13+
"root_device_name": "/dev/sda1",
14+
"source_ami": "",
15+
"ssh_username": "ubuntu",
16+
"ubuntu_repo": "http://ports.ubuntu.com/ubuntu-ports",
17+
"ubuntu_security_repo": "http://ports.ubuntu.com/ubuntu-ports"
18+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"ami_filter_arch": "arm64",
3+
"ami_filter_name": "ubuntu/images/*ubuntu-noble-24.04-arm64-server-*",
4+
"ami_filter_owners": "099720109477",
5+
"ansible_extra_vars": "",
6+
"arch": "arm64",
7+
"build_name": "ubuntu-24.04-arm64",
8+
"builder_instance_type": "t4g.small",
9+
"distribution": "Ubuntu",
10+
"distribution_release": "noble",
11+
"distribution_version": "24.04",
12+
"goss_arch": "arm64",
13+
"root_device_name": "/dev/sda1",
14+
"source_ami": "",
15+
"ssh_username": "ubuntu",
16+
"ubuntu_repo": "http://ports.ubuntu.com/ubuntu-ports",
17+
"ubuntu_security_repo": "http://ports.ubuntu.com/ubuntu-ports"
18+
}

images/capi/packer/goss/goss-package.yaml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,16 @@ package:
5656
{{$key}}: {{$val}}
5757
{{end}}
5858
{{end}}
59+
# x86-only provider packages (hypervisor tools not available on arm64)
60+
{{if ne .Vars.arch "arm64"}}
61+
{{range $name, $vers := index .Vars .Vars.OS .Vars.PROVIDER "package-x86"}}
62+
{{$name}}:
63+
installed: true
64+
{{range $key, $val := $vers}}
65+
{{$key}}: {{$val}}
66+
{{end}}
67+
{{end}}
68+
{{end}}
5969

6070
# Iterate thru different OS Versions like RHEL7/8, Photon 3/4(future) etc.
6171
{{$distro_version := .Vars.OS_VERSION}}

images/capi/packer/goss/goss-vars.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -462,7 +462,8 @@ ubuntu:
462462
snap.amazon-ssm-agent.amazon-ssm-agent.service:
463463
enabled: true
464464
running: true
465-
package:
465+
package: {}
466+
package-x86:
466467
linux-cloud-tools-virtual:
467468
linux-tools-virtual:
468469
command:

0 commit comments

Comments
 (0)