├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md └── PULL_REQUEST_TEMPLATE.md ├── .gitignore ├── CONTRIBUTING.md ├── LICENSE ├── Makefile ├── OWNERS ├── OWNERS_ALIASES ├── README.md ├── RELEASE.md ├── SECURITY_CONTACTS ├── cloudbuild.yaml ├── code-of-conduct.md ├── docs ├── OWNERS └── book │ ├── .gitignore │ ├── Makefile │ ├── book.toml │ ├── build.sh │ └── src │ ├── SUMMARY.md │ ├── capi │ ├── capi.md │ ├── container-image.md │ ├── containerd │ │ └── customizing-containerd.md │ ├── ecr-credential-provider.md │ ├── goss │ │ └── goss.md │ ├── providers │ │ ├── 3dsoutscale.md │ │ ├── aws.md │ │ ├── azure.md │ │ ├── cloudstack.md │ │ ├── digitalocean.md │ │ ├── gcp.md │ │ ├── hcloud.md │ │ ├── huaweicloud.md │ │ ├── ibmcloud.md │ │ ├── maas.md │ │ ├── nutanix.md │ │ ├── oci.md │ │ ├── openstack-remote.md │ │ ├── openstack.md │ │ ├── proxmox.md │ │ ├── raw.md │ │ ├── vsphere.md │ │ └── vultr.md │ ├── quickstart.md │ ├── releasing.md │ └── windows │ │ └── windows.md │ ├── glossary.md │ └── introduction.md ├── images └── capi │ ├── .ansible-lint-ignore │ ├── .dockerignore │ ├── .gitignore │ ├── Dockerfile │ ├── Makefile │ ├── README.md │ ├── ansible.cfg │ ├── ansible │ ├── .gitignore │ ├── firstboot.yml │ ├── node.yml │ ├── python.yml │ ├── roles │ │ ├── containerd │ │ │ ├── defaults │ │ │ │ └── main.yml │ │ │ ├── tasks │ │ │ │ ├── debian.yml │ │ │ │ ├── main.yml │ │ │ │ ├── photon.yml │ │ │ │ └── redhat.yml │ │ │ └── templates │ │ │ │ └── etc │ │ │ │ ├── containerd │ │ │ │ └── config.toml │ │ │ │ ├── crictl.yaml │ │ │ │ └── systemd │ │ │ │ └── system │ │ │ │ ├── containerd-flatcar.conf │ │ │ │ └── containerd.service.d │ │ │ │ ├── http-proxy.conf │ │ │ │ ├── limit-nofile.conf │ │ │ │ ├── max-tasks.conf │ │ │ │ └── memory-pressure.conf │ │ ├── ecr_credential_provider │ │ │ ├── defaults │ │ │ │ └── main.yml │ │ │ ├── tasks │ │ │ │ └── main.yaml │ │ │ └── templates │ │ │ │ └── var │ │ │ │ └── usr │ │ │ │ └── ecr-credential-provider │ │ │ │ └── ecr-credential-provider-config │ │ ├── firstboot │ │ │ ├── README.md │ │ │ ├── defaults │ │ │ ├── meta │ │ │ │ └── main.yml │ │ │ └── tasks │ │ │ │ ├── main.yaml │ │ │ │ ├── photon.yml │ │ │ │ └── qemu.yml │ │ ├── gpu │ │ │ ├── README.md │ │ │ ├── defaults │ │ │ │ └── main.yml │ │ │ ├── tasks │ │ │ │ ├── amd.yml │ │ │ │ ├── main.yml │ │ │ │ └── nvidia.yml │ │ │ └── templates │ │ │ │ ├── etc │ │ │ │ └── modprobe.d │ │ │ │ │ └── blocklist-nouveau.conf │ │ │ │ └── gridd.conf.j2 │ │ ├── kubernetes │ │ │ ├── defaults │ │ │ │ └── main.yml │ │ │ ├── files │ │ │ │ ├── etc │ │ │ │ │ └── profile.d │ │ │ │ │ │ └── kubernetes.sh │ │ │ │ ├── tmp │ │ │ │ │ └── modify-k8s-img.sh │ │ │ │ └── usr │ │ │ │ │ └── libexec │ │ │ │ │ └── kubernetes │ │ │ │ │ └── kubelet-resource-sizing.sh │ │ │ ├── tasks │ │ │ │ ├── azurelinux.yml │ │ │ │ ├── crictl-url.yml │ │ │ │ ├── debian.yml │ │ │ │ ├── ecrpull.yml │ │ │ │ ├── kubeadmpull.yml │ │ │ │ ├── main.yml │ │ │ │ ├── photon.yml │ │ │ │ ├── redhat.yml │ │ │ │ └── url.yml │ │ │ └── templates │ │ │ │ ├── etc │ │ │ │ ├── kubeadm.yml │ │ │ │ ├── kubernetes-version │ │ │ │ ├── sysconfig │ │ │ │ │ └── kubelet │ │ │ │ └── yum.repos.d │ │ │ │ │ └── kubernetes.repo │ │ │ │ └── usr │ │ │ │ └── lib │ │ │ │ └── systemd │ │ │ │ └── system │ │ │ │ ├── kubelet.service │ │ │ │ └── kubelet.service.d │ │ │ │ ├── 10-kubeadm.conf │ │ │ │ └── 11-resource-sizing.conf │ │ ├── load_additional_components │ │ │ ├── defaults │ │ │ │ └── main.yml │ │ │ └── tasks │ │ │ │ ├── executables.yml │ │ │ │ ├── main.yml │ │ │ │ ├── registry.yml │ │ │ │ ├── s3.yml │ │ │ │ └── url.yml │ │ ├── multipathd │ │ │ ├── README.md │ │ │ ├── defaults │ │ │ │ └── main.yml │ │ │ ├── files │ │ │ │ └── multipath.conf │ │ │ └── tasks │ │ │ │ └── main.yml │ │ ├── node │ │ │ ├── defaults │ │ │ │ └── main.yml │ │ │ ├── files │ │ │ │ ├── etc │ │ │ │ │ └── audit │ │ │ │ │ │ └── rules.d │ │ │ │ │ │ ├── containerd.rules │ │ │ │ │ │ └── containerd.rules-flatcar │ │ │ │ └── usr │ │ │ │ │ └── local │ │ │ │ │ └── bin │ │ │ │ │ └── etcd-network-tuning.sh │ │ │ ├── meta │ │ │ │ └── main.yml │ │ │ ├── tasks │ │ │ │ ├── amazonLinux.yml │ │ │ │ ├── main.yml │ │ │ │ └── photon.yml │ │ │ └── templates │ │ │ │ └── etc │ │ │ │ └── udev │ │ │ │ └── rules.d │ │ │ │ └── 90-etcd-tuning.rules │ │ ├── providers │ │ │ ├── defaults │ │ │ │ └── main.yml │ │ │ ├── files │ │ │ │ ├── cloud-init-features.patch │ │ │ │ ├── etc │ │ │ │ │ ├── azure │ │ │ │ │ │ └── iptables │ │ │ │ │ ├── cloud │ │ │ │ │ │ └── cloud.cfg.d │ │ │ │ │ │ │ ├── 05_logging.cfg │ │ │ │ │ │ │ ├── 15_azure-vnet.cfg │ │ │ │ │ │ │ └── 90_dpkg.cfg │ │ │ │ │ ├── networkd-dispatcher │ │ │ │ │ │ ├── no-carrier.d │ │ │ │ │ │ │ └── 20-chrony.j2 │ │ │ │ │ │ ├── off.d │ │ │ │ │ │ │ └── 20-chrony.j2 │ │ │ │ │ │ └── routable.d │ │ │ │ │ │ │ └── 20-chrony.j2 │ │ │ │ │ ├── systemd │ │ │ │ │ │ └── system │ │ │ │ │ │ │ ├── cloud-config.service.d │ │ │ │ │ │ │ └── boot-order.conf │ │ │ │ │ │ │ ├── cloud-final.service.d │ │ │ │ │ │ │ └── boot-order.conf │ │ │ │ │ │ │ └── modify-cloud-init-cfg.service │ │ │ │ │ └── vmware-tools │ │ │ │ │ │ └── tools.conf │ │ │ │ ├── maas │ │ │ │ │ └── curtin │ │ │ │ │ │ ├── NOTICE.md │ │ │ │ │ │ ├── curtin-hooks │ │ │ │ │ │ ├── install-custom-packages │ │ │ │ │ │ └── setup-bootloader │ │ │ │ └── usr │ │ │ │ │ ├── lib │ │ │ │ │ └── python3 │ │ │ │ │ │ ├── dist-packages │ │ │ │ │ │ └── cloudinit │ │ │ │ │ │ │ ├── feature_overrides.py │ │ │ │ │ │ │ └── sources │ │ │ │ │ │ │ └── DataSourceEc2Kubernetes.py │ │ │ │ │ │ └── site-packages │ │ │ │ │ │ └── cloudinit │ │ │ │ │ │ └── feature_overrides.py │ │ │ │ │ ├── libexec │ │ │ │ │ └── chrony-helper │ │ │ │ │ └── local │ │ │ │ │ └── bin │ │ │ │ │ └── modify-cloud-init-cfg.sh │ │ │ ├── tasks │ │ │ │ ├── aws.yml │ │ │ │ ├── awscliv2.yml │ │ │ │ ├── azure.yml │ │ │ │ ├── azurecli.yml │ │ │ │ ├── cloudstack.yml │ │ │ │ ├── googlecompute.yml │ │ │ │ ├── hcloud.yml │ │ │ │ ├── huaweicloud.yml │ │ │ │ ├── maas-ubuntu.yml │ │ │ │ ├── maas.yml │ │ │ │ ├── main.yml │ │ │ │ ├── nutanix-redhat.yml │ │ │ │ ├── nutanix-ubuntu.yml │ │ │ │ ├── nutanix.yml │ │ │ │ ├── oci.yml │ │ │ │ ├── openstack.yml │ │ │ │ ├── outscale.yml │ │ │ │ ├── proxmox.yml │ │ │ │ ├── qemu.yml │ │ │ │ ├── raw.yml │ │ │ │ ├── vmware-photon.yml │ │ │ │ ├── vmware-redhat.yml │ │ │ │ ├── vmware-ubuntu.yml │ │ │ │ └── vmware.yml │ │ │ └── templates │ │ │ │ └── etc │ │ │ │ └── logrotate.d │ │ │ │ └── messages.j2 │ │ ├── python │ │ │ ├── defaults │ │ │ │ └── main.yml │ │ │ └── tasks │ │ │ │ ├── flatcar.yml │ │ │ │ └── main.yml │ │ ├── security │ │ │ ├── README.md │ │ │ ├── defaults │ │ │ │ └── main.yml │ │ │ └── tasks │ │ │ │ ├── falco.yml │ │ │ │ ├── main.yml │ │ │ │ └── trivy.yml │ │ ├── setup │ │ │ ├── defaults │ │ │ │ └── main.yml │ │ │ ├── files │ │ │ │ └── etc │ │ │ │ │ └── systemd │ │ │ │ │ └── system-environment-generators │ │ │ │ │ └── 10-flatcar-path │ │ │ ├── tasks │ │ │ │ ├── azurelinux.yml │ │ │ │ ├── bootstrap-flatcar.yml │ │ │ │ ├── debian.yml │ │ │ │ ├── flatcar.yml │ │ │ │ ├── main.yml │ │ │ │ ├── photon.yml │ │ │ │ ├── redhat.yml │ │ │ │ └── rpm_repos.yml │ │ │ └── templates │ │ │ │ ├── etc │ │ │ │ └── apt │ │ │ │ │ ├── apt.conf.d │ │ │ │ │ └── 90proxy │ │ │ │ │ ├── sources.list.d │ │ │ │ │ └── ubuntu.sources.j2 │ │ │ │ │ └── sources.list.j2 │ │ │ │ └── photon_bash_profile │ │ └── sysprep │ │ │ ├── defaults │ │ │ └── main.yml │ │ │ ├── files │ │ │ └── etc │ │ │ │ ├── default │ │ │ │ └── grub.d │ │ │ │ │ └── 50-cloudimg-settings.cfg │ │ │ │ ├── hosts │ │ │ │ └── netplan │ │ │ │ └── 51-kubevirt-netplan.yaml │ │ │ ├── handlers │ │ │ └── main.yml │ │ │ └── tasks │ │ │ ├── azurelinux.yml │ │ │ ├── debian.yml │ │ │ ├── flatcar.yml │ │ │ ├── main.yml │ │ │ ├── photon.yml │ │ │ ├── redhat.yml │ │ │ └── rpm_repos.yml │ └── windows │ │ ├── OWNERS │ │ ├── ansible_winrm.ps1 │ │ ├── example.vars.yml │ │ ├── node_windows.yml │ │ └── roles │ │ ├── cloudbase-init │ │ ├── tasks │ │ │ └── main.yml │ │ └── templates │ │ │ ├── cloudbase-init-unattend.conf │ │ │ └── cloudbase-init.conf │ │ ├── debug │ │ ├── defaults │ │ │ └── main.yml │ │ └── tasks │ │ │ └── main.yml │ │ ├── gmsa │ │ ├── defaults │ │ │ └── main.yml │ │ ├── files │ │ │ └── install-gmsa-keyvault-plugin.ps1 │ │ └── tasks │ │ │ ├── gmsa_keyvault.yml │ │ │ └── main.yml │ │ ├── kubernetes │ │ ├── defaults │ │ │ └── main.yml │ │ ├── tasks │ │ │ ├── kubelet.yml │ │ │ ├── main.yml │ │ │ ├── nssm.yml │ │ │ ├── sc.yml │ │ │ └── url.yml │ │ └── templates │ │ │ └── StartKubelet.ps1 │ │ ├── load_additional_components │ │ ├── defaults │ │ │ └── main.yml │ │ └── tasks │ │ │ ├── executables.yml │ │ │ ├── main.yml │ │ │ ├── registry.yml │ │ │ └── url.yml │ │ ├── providers │ │ ├── defaults │ │ │ └── main.yml │ │ ├── files │ │ │ └── vmware │ │ │ │ └── vmtools │ │ │ │ └── tools.conf │ │ └── tasks │ │ │ ├── azure.yml │ │ │ ├── main.yml │ │ │ └── vmware.yml │ │ ├── runtimes │ │ ├── defaults │ │ │ └── main.yml │ │ ├── tasks │ │ │ ├── containerd.yml │ │ │ └── main.yml │ │ └── templates │ │ │ └── config.toml │ │ └── systemprep │ │ ├── defaults │ │ └── main.yml │ │ └── tasks │ │ ├── main.yml │ │ ├── ssh-archive.yml │ │ └── ssh-feature.yml │ ├── azure_targets.sh │ ├── cloudinit │ ├── .gitignore │ ├── Makefile │ ├── README.md │ ├── ca.crt │ ├── ca.key │ ├── id_rsa.capi │ ├── id_rsa.capi.pub │ ├── meta-data │ └── user-data │ ├── hack │ ├── boxes-flatcar.sh │ ├── convert-cloudstack-image.sh │ ├── ensure-ansible-lint.sh │ ├── ensure-ansible-windows.sh │ ├── ensure-ansible.sh │ ├── ensure-azure-cli.sh │ ├── ensure-boskosctl.sh │ ├── ensure-ct.sh │ ├── ensure-go.sh │ ├── ensure-jq.sh │ ├── ensure-kpromo.sh │ ├── ensure-ovftool.sh │ ├── ensure-packer.sh │ ├── ensure-powervs.sh │ ├── ensure-python.sh │ ├── ensure-s3.sh │ ├── ensure-shellcheck.sh │ ├── ensure-vhdutil.sh │ ├── ensure-yq.sh │ ├── generate-goss-specs.py │ ├── get-project-maintainers.sh │ ├── image-build-flatcar.sh │ ├── image-build-ova.py │ ├── image-govc-cloudinit.sh │ ├── image-grok-latest-flatcar-version.sh │ ├── image-new-kube.py │ ├── image-post-create-config.sh │ ├── image-ssh.sh │ ├── image-upload.py │ ├── ovf_eula.txt │ ├── ovf_template.xml │ ├── set-ssh-password.sh │ ├── update-iso-checksums.sh │ ├── utils.sh │ └── windows-ova-unattend.py │ ├── kubevirt-Dockerfile │ ├── packer │ ├── .gitignore │ ├── ami │ │ ├── OWNERS │ │ ├── amazon-2.json │ │ ├── amazon-2023.json │ │ ├── centos-7.json │ │ ├── flatcar-arm64.json │ │ ├── flatcar.json │ │ ├── packer-windows.json │ │ ├── packer.json │ │ ├── rhel-8.json │ │ ├── rockylinux-8.json │ │ ├── scripts │ │ │ ├── sysprep_prerequisites.ps1 │ │ │ └── winrm_bootstrap.txt │ │ ├── ubuntu-2004.json │ │ ├── ubuntu-2204.json │ │ ├── ubuntu-2404.json │ │ └── windows-2019.json │ ├── azure │ │ ├── .pipelines │ │ │ ├── build-sig.yaml │ │ │ ├── clean-sig.yaml │ │ │ ├── k8s-config.yaml │ │ │ ├── promote-sig.yaml │ │ │ ├── sig-publishing-info.yaml │ │ │ ├── stages.yaml │ │ │ └── test-sig.yaml │ │ ├── OWNERS │ │ ├── azure-config.json │ │ ├── azure-sig-cvm.json │ │ ├── azure-sig-gen2.json │ │ ├── azure-sig.json │ │ ├── azure-vhd.json │ │ ├── azurelinux-3-gen2.json │ │ ├── azurelinux-3.json │ │ ├── centos-7-gen2.json │ │ ├── centos-7.json │ │ ├── config.pkr.hcl │ │ ├── flatcar-gen2.json │ │ ├── flatcar.json │ │ ├── mariner-2-gen2.json │ │ ├── mariner-2.json │ │ ├── packer-windows.json │ │ ├── packer.json │ │ ├── rhel-8.json │ │ ├── scripts │ │ │ ├── disable-windows-prepull.json │ │ │ ├── ensure-kustomize.sh │ │ │ ├── init-sig.sh │ │ │ ├── init-vhd.sh │ │ │ ├── parse-prow-creds.sh │ │ │ ├── sysprep.ps1 │ │ │ └── test-templates │ │ │ │ ├── linux │ │ │ │ └── kustomization.yaml │ │ │ │ ├── patches │ │ │ │ ├── azuremachinetemplate-controlplane.yaml │ │ │ │ ├── azuremachinetemplate-windows.yaml │ │ │ │ ├── azuremachinetemplate-workload.yaml │ │ │ │ ├── kubeadmcontrolplane-windows.yaml │ │ │ │ └── machinedeployment-windows.yaml │ │ │ │ └── windows │ │ │ │ └── kustomization.yaml │ │ ├── sku-template.json │ │ ├── ubuntu-2004-cvm.json │ │ ├── ubuntu-2004-gen2.json │ │ ├── ubuntu-2004.json │ │ ├── ubuntu-2204-cvm.json │ │ ├── ubuntu-2204-gen2.json │ │ ├── ubuntu-2204.json │ │ ├── ubuntu-2404-cvm.json │ │ ├── ubuntu-2404-gen2.json │ │ ├── ubuntu-2404.json │ │ ├── windows-2019-containerd-cvm.json │ │ ├── windows-2019-containerd.json │ │ ├── windows-2022-containerd-cvm.json │ │ ├── windows-2022-containerd.json │ │ ├── windows-2025-containerd.json │ │ └── windows-annual-containerd.json │ ├── config.pkr.hcl │ ├── config │ │ ├── additional_components.json │ │ ├── ansible-args.json │ │ ├── cni.json │ │ ├── common.json │ │ ├── containerd.json │ │ ├── ecr_credential_provider.json │ │ ├── goss-args.json │ │ ├── kubernetes.json │ │ ├── ppc64le │ │ │ ├── cni.json │ │ │ ├── common.json │ │ │ ├── containerd.json │ │ │ └── kubernetes.json │ │ ├── wasm-shims.json │ │ └── windows │ │ │ ├── OWNERS │ │ │ ├── ansible-args-windows.json │ │ │ ├── cloudbase-init.json │ │ │ ├── common.json │ │ │ ├── containerd.json │ │ │ └── kubernetes.json │ ├── digitalocean │ │ ├── OWNERS │ │ ├── centos-7.json │ │ ├── config.pkr.hcl │ │ ├── packer.json │ │ ├── ubuntu-2004.json │ │ ├── ubuntu-2204.json │ │ └── ubuntu-2404.json │ ├── files │ │ └── flatcar │ │ │ ├── README.md │ │ │ ├── clc │ │ │ ├── bootstrap-cloud.yaml │ │ │ └── bootstrap-pass-auth.yaml │ │ │ ├── ignition │ │ │ ├── bootstrap-cloud.json │ │ │ └── bootstrap-pass-auth.json │ │ │ └── scripts │ │ │ └── bootstrap-flatcar.sh │ ├── gce │ │ ├── OWNERS │ │ ├── ci │ │ │ └── nightly │ │ │ │ ├── README.md │ │ │ │ ├── overwrite-1-30.json │ │ │ │ ├── overwrite-1-31.json │ │ │ │ ├── overwrite-1-32.json │ │ │ │ └── overwrite-1-33.json │ │ ├── config.pkr.hcl │ │ ├── packer.json │ │ ├── rhel-8.json │ │ ├── ubuntu-2004.json │ │ ├── ubuntu-2204.json │ │ └── ubuntu-2404.json │ ├── goss │ │ ├── goss-command.yaml │ │ ├── goss-files.yaml │ │ ├── goss-kernel-params.yaml │ │ ├── goss-package.yaml │ │ ├── goss-service.yaml │ │ ├── goss-vars.yaml │ │ └── goss.yaml │ ├── hcloud │ │ ├── OWNERS │ │ ├── centos-7.json │ │ ├── config.pkr.hcl │ │ ├── flatcar-arm64.json │ │ ├── flatcar.json │ │ ├── hcloud-config.json │ │ ├── packer-flatcar.json │ │ ├── packer.json │ │ ├── rockylinux-8.json │ │ ├── rockylinux-9.json │ │ ├── scripts │ │ │ └── install-flatcar.sh │ │ ├── ubuntu-2004.json │ │ ├── ubuntu-2204.json │ │ └── ubuntu-2404.json │ ├── huaweicloud │ │ ├── config.pkr.hcl │ │ ├── packer.json │ │ └── ubuntu-2204.json │ ├── maas │ │ ├── .gitignore │ │ ├── OWNERS │ │ ├── README.md │ │ ├── cloud-init │ │ │ ├── meta-data │ │ │ └── user-data.tmpl │ │ ├── config.pkr.hcl │ │ ├── linux │ │ │ └── ubuntu │ │ │ │ └── http │ │ │ │ ├── 22.04.efi.qemu │ │ │ │ ├── meta-data │ │ │ │ └── user-data.tmpl │ │ │ │ ├── 22.04.efi │ │ │ │ ├── meta-data │ │ │ │ └── user-data.tmpl │ │ │ │ ├── 22.04 │ │ │ │ ├── meta-data │ │ │ │ └── user-data.tmpl │ │ │ │ ├── 23.04 │ │ │ │ ├── meta-data │ │ │ │ └── user-data.tmpl │ │ │ │ ├── 24.04.efi │ │ │ │ ├── meta-data │ │ │ │ └── user-data.tmpl │ │ │ │ ├── 24.04 │ │ │ │ ├── meta-data │ │ │ │ └── user-data.tmpl │ │ │ │ └── base │ │ │ │ ├── preseed-efi.cfg.tmpl │ │ │ │ └── preseed.cfg.tmpl │ │ ├── maas-ubuntu-2204-efi.json │ │ ├── maas-ubuntu-2404-efi.json │ │ ├── packer.json.tmpl │ │ └── scripts │ │ │ └── generate-maas-image.sh │ ├── nutanix │ │ ├── .gitignore │ │ ├── OWNERS │ │ ├── config.pkr.hcl │ │ ├── flatcar.json │ │ ├── linux │ │ │ └── cloud-init │ │ │ │ ├── rhel │ │ │ │ ├── 8 │ │ │ │ │ └── user-data.tmpl │ │ │ │ └── 9 │ │ │ │ │ └── user-data.tmpl │ │ │ │ ├── rockylinux │ │ │ │ ├── 8 │ │ │ │ │ └── user-data.tmpl │ │ │ │ └── 9 │ │ │ │ │ └── user-data.tmpl │ │ │ │ └── ubuntu │ │ │ │ ├── 20.04 │ │ │ │ └── user-data.tmpl │ │ │ │ ├── 22.04 │ │ │ │ └── user-data.tmpl │ │ │ │ └── 24.04 │ │ │ │ └── user-data.tmpl │ │ ├── nutanix.json │ │ ├── packer-windows.json │ │ ├── packer.json.tmpl │ │ ├── rhel-8.json │ │ ├── rhel-9.json │ │ ├── rockylinux-8.json │ │ ├── rockylinux-9.json │ │ ├── ubuntu-2004.json │ │ ├── ubuntu-2204.json │ │ ├── ubuntu-2404.json │ │ ├── windows-2022.json │ │ └── windows │ │ │ ├── disable-network-discovery.cmd │ │ │ ├── sysprep.ps1 │ │ │ └── windows-2022 │ │ │ └── autounattend.xml │ ├── oci │ │ ├── config.pkr.hcl │ │ ├── oracle-linux-8.json │ │ ├── oracle-linux-9.json │ │ ├── packer-windows.json │ │ ├── packer.json │ │ ├── scripts │ │ │ ├── attach_secondary_vnic.ps1 │ │ │ ├── enable_second_nic.ps1 │ │ │ ├── set_bootstrap.sh │ │ │ ├── sysprep.ps1 │ │ │ ├── unset_bootstrap.sh │ │ │ └── winrm_bootstrap_template.txt │ │ ├── ubuntu-2004.json │ │ ├── ubuntu-2204.json │ │ ├── windows-2019.json │ │ └── windows-2022.json │ ├── openstack │ │ ├── OWNERS │ │ ├── config.pkr.hcl │ │ ├── flatcar.json │ │ ├── packer.json │ │ ├── rockylinux-9.json │ │ ├── ubuntu-2004.json │ │ ├── ubuntu-2204.json │ │ └── ubuntu-2404.json │ ├── outscale │ │ ├── ci │ │ │ └── nightly │ │ │ │ ├── overwrite-1-21.json │ │ │ │ ├── overwrite-1-22.json │ │ │ │ ├── overwrite-1-23.json │ │ │ │ ├── overwrite-1-24.json │ │ │ │ └── overwrite-1-25.json │ │ ├── config.pkr.hcl │ │ ├── packer.json │ │ ├── ubuntu-2004.json │ │ └── ubuntu-2204.json │ ├── ova │ │ ├── .gitignore │ │ ├── OWNERS │ │ ├── centos-7.json │ │ ├── config.pkr.hcl │ │ ├── flatcar.json │ │ ├── linux │ │ │ ├── centos │ │ │ │ └── http │ │ │ │ │ ├── 7 │ │ │ │ │ └── ks.cfg.tmpl │ │ │ │ │ └── 8 │ │ │ │ │ └── ks.cfg.tmpl │ │ │ ├── photon │ │ │ │ └── http │ │ │ │ │ ├── 3 │ │ │ │ │ └── ks.json.tmpl │ │ │ │ │ ├── 4 │ │ │ │ │ └── ks.json.tmpl │ │ │ │ │ └── 5 │ │ │ │ │ └── ks.json.tmpl │ │ │ ├── rhel │ │ │ │ └── http │ │ │ │ │ ├── 7 │ │ │ │ │ └── ks.cfg.tmpl │ │ │ │ │ ├── 8 │ │ │ │ │ └── ks.cfg.tmpl │ │ │ │ │ └── 9 │ │ │ │ │ └── ks.cfg.tmpl │ │ │ ├── rockylinux │ │ │ │ └── http │ │ │ │ │ ├── 8 │ │ │ │ │ └── ks.cfg.tmpl │ │ │ │ │ └── 9 │ │ │ │ │ └── ks.cfg.tmpl │ │ │ └── ubuntu │ │ │ │ └── http │ │ │ │ ├── 20.04 │ │ │ │ ├── preseed-efi.cfg │ │ │ │ └── preseed.cfg │ │ │ │ ├── 22.04.efi │ │ │ │ ├── meta-data │ │ │ │ └── user-data.tmpl │ │ │ │ ├── 22.04 │ │ │ │ ├── meta-data │ │ │ │ └── user-data.tmpl │ │ │ │ ├── 24.04.efi │ │ │ │ ├── meta-data │ │ │ │ └── user-data.tmpl │ │ │ │ ├── 24.04 │ │ │ │ ├── meta-data │ │ │ │ └── user-data.tmpl │ │ │ │ └── base │ │ │ │ ├── preseed-efi.cfg.tmpl │ │ │ │ └── preseed.cfg.tmpl │ │ ├── packer-common.json.tmpl │ │ ├── packer-node.json │ │ ├── packer-windows.json │ │ ├── photon-3.json │ │ ├── photon-4.json │ │ ├── photon-5.json │ │ ├── rhel-7.json │ │ ├── rhel-8.json │ │ ├── rhel-9.json │ │ ├── rockylinux-8.json │ │ ├── rockylinux-9.json │ │ ├── ubuntu-2004-efi.json │ │ ├── ubuntu-2004.json │ │ ├── ubuntu-2204-efi.json │ │ ├── ubuntu-2204.json │ │ ├── ubuntu-2404-efi.json │ │ ├── ubuntu-2404.json │ │ ├── vmx.json │ │ ├── vsphere.json │ │ ├── windows-2019-efi.json │ │ ├── windows-2019.json │ │ ├── windows-2022-efi.json │ │ ├── windows-2022.json │ │ └── windows │ │ │ ├── disable-network-discovery.cmd │ │ │ ├── disable-winrm.ps1 │ │ │ ├── enable-winrm.ps1 │ │ │ ├── pvscsi │ │ │ ├── amd64 │ │ │ │ ├── pvscsi.cat │ │ │ │ ├── pvscsi.inf │ │ │ │ ├── pvscsi.sys │ │ │ │ └── txtsetup.oem │ │ │ └── i386 │ │ │ │ ├── pvscsi.cat │ │ │ │ ├── pvscsi.inf │ │ │ │ ├── pvscsi.sys │ │ │ │ └── txtsetup.oem │ │ │ ├── sysprep.ps1 │ │ │ ├── windows-2019-efi │ │ │ └── autounattend.xml │ │ │ ├── windows-2019 │ │ │ └── autounattend.xml │ │ │ ├── windows-2022-efi │ │ │ └── autounattend.xml │ │ │ └── windows-2022 │ │ │ └── autounattend.xml │ ├── powervs │ │ ├── centos-8.json │ │ ├── centos-9.json │ │ └── packer.json │ ├── proxmox │ │ ├── .gitignore │ │ ├── README.md │ │ ├── config.pkr.hcl │ │ ├── flatcar.json │ │ ├── linux │ │ │ ├── rockylinux │ │ │ │ └── http │ │ │ │ │ └── 9 │ │ │ │ │ └── ks.cfg.tmpl │ │ │ └── ubuntu │ │ │ │ └── http │ │ │ │ ├── 22.04 │ │ │ │ ├── meta-data │ │ │ │ └── user-data.tmpl │ │ │ │ ├── 24.04.efi │ │ │ │ ├── meta-data │ │ │ │ └── user-data.tmpl │ │ │ │ └── 24.04 │ │ │ │ ├── meta-data │ │ │ │ └── user-data.tmpl │ │ ├── packer.json.tmpl │ │ ├── rockylinux-9.json │ │ ├── ubuntu-2204.json │ │ ├── ubuntu-2404-efi.json │ │ └── ubuntu-2404.json │ ├── qemu │ │ ├── .gitignore │ │ ├── OWNERS │ │ ├── README.md │ │ ├── cloud-init │ │ │ ├── meta-data │ │ │ └── user-data.tmpl │ │ ├── config.pkr.hcl │ │ ├── linux │ │ │ ├── centos │ │ │ │ └── http │ │ │ │ │ ├── 7 │ │ │ │ │ └── ks.cfg.tmpl │ │ │ │ │ ├── 8 │ │ │ │ │ └── ks.cfg.tmpl │ │ │ │ │ └── 9 │ │ │ │ │ └── ks.cfg.tmpl │ │ │ ├── rhel │ │ │ │ └── http │ │ │ │ │ ├── 8 │ │ │ │ │ └── ks.cfg.tmpl │ │ │ │ │ └── 9 │ │ │ │ │ └── ks.cfg.tmpl │ │ │ ├── rockylinux │ │ │ │ └── http │ │ │ │ │ ├── 8 │ │ │ │ │ └── ks.cfg.tmpl │ │ │ │ │ └── 9 │ │ │ │ │ └── ks.cfg.tmpl │ │ │ └── ubuntu │ │ │ │ └── http │ │ │ │ ├── 20.04 │ │ │ │ ├── preseed-efi.cfg │ │ │ │ └── preseed.cfg │ │ │ │ ├── 22.04.efi.qemu │ │ │ │ ├── meta-data │ │ │ │ └── user-data.tmpl │ │ │ │ ├── 22.04.efi │ │ │ │ ├── meta-data │ │ │ │ └── user-data.tmpl │ │ │ │ ├── 22.04 │ │ │ │ ├── meta-data │ │ │ │ └── user-data.tmpl │ │ │ │ ├── 23.04 │ │ │ │ ├── meta-data │ │ │ │ └── user-data.tmpl │ │ │ │ ├── 24.04.efi │ │ │ │ ├── meta-data │ │ │ │ └── user-data.tmpl │ │ │ │ ├── 24.04 │ │ │ │ ├── meta-data │ │ │ │ └── user-data.tmpl │ │ │ │ └── base │ │ │ │ ├── preseed-efi.cfg.tmpl │ │ │ │ └── preseed.cfg.tmpl │ │ ├── packer.json.tmpl │ │ ├── qemu-centos-7.json │ │ ├── qemu-centos-9.json │ │ ├── qemu-flatcar.json │ │ ├── qemu-rhel-8.json │ │ ├── qemu-rhel-9.json │ │ ├── qemu-rockylinux-8-cloudimg.json │ │ ├── qemu-rockylinux-8.json │ │ ├── qemu-rockylinux-9-cloudimg.json │ │ ├── qemu-rockylinux-9.json │ │ ├── qemu-ubuntu-2004-efi.json │ │ ├── qemu-ubuntu-2004.json │ │ ├── qemu-ubuntu-2204-cloudimg.json │ │ ├── qemu-ubuntu-2204-efi.json │ │ ├── qemu-ubuntu-2204.json │ │ ├── qemu-ubuntu-2304.json │ │ ├── qemu-ubuntu-2404-efi.json │ │ ├── qemu-ubuntu-2404.json │ │ └── scripts │ │ │ └── build_kubevirt_image.sh │ ├── raw │ │ ├── .gitignore │ │ ├── OWNERS │ │ ├── linux │ │ │ ├── rhel │ │ │ │ └── http │ │ │ │ │ ├── 8 │ │ │ │ │ └── ks.cfg.tmpl │ │ │ │ │ └── 9 │ │ │ │ │ ├── ks-efi.cfg.tmpl │ │ │ │ │ └── ks.cfg.tmpl │ │ │ └── ubuntu │ │ │ │ └── http │ │ │ │ ├── 20.04 │ │ │ │ ├── preseed-efi.cfg │ │ │ │ └── preseed.cfg │ │ │ │ ├── 22.04.efi │ │ │ │ ├── meta-data │ │ │ │ └── user-data.tmpl │ │ │ │ ├── 22.04 │ │ │ │ ├── meta-data │ │ │ │ └── user-data.tmpl │ │ │ │ ├── 24.04.efi │ │ │ │ ├── meta-data │ │ │ │ └── user-data.tmpl │ │ │ │ ├── 24.04 │ │ │ │ ├── meta-data │ │ │ │ └── user-data.tmpl │ │ │ │ └── base │ │ │ │ ├── preseed-efi.cfg.tmpl │ │ │ │ └── preseed.cfg.tmpl │ │ ├── packer.json.tmpl │ │ ├── raw-flatcar.json │ │ ├── raw-rhel-8.json │ │ ├── raw-rhel-9-efi.json │ │ ├── raw-rhel-9.json │ │ ├── raw-ubuntu-2004-efi.json │ │ ├── raw-ubuntu-2004.json │ │ ├── raw-ubuntu-2204-efi.json │ │ ├── raw-ubuntu-2204.json │ │ ├── raw-ubuntu-2404-efi.json │ │ └── raw-ubuntu-2404.json │ └── vultr │ │ ├── config.pkr.hcl │ │ ├── packer.json │ │ └── ubuntu-2204.json │ └── scripts │ ├── ci-azure-e2e.sh │ ├── ci-container-image.sh │ ├── ci-disable-goss-inspect.json │ ├── ci-gce-nightly.sh │ ├── ci-gce.sh │ ├── ci-goss-populate.sh │ ├── ci-json-sort.sh │ ├── ci-lint.sh │ ├── ci-outscale-nightly.sh │ ├── ci-ova.sh │ ├── ci-packer-validate.sh │ └── release-update-docs.sh └── netlify.toml /.gitignore: -------------------------------------------------------------------------------- 1 | .vscode/ 2 | .idea/ 3 | .venv/ 4 | -------------------------------------------------------------------------------- /OWNERS: -------------------------------------------------------------------------------- 1 | # See the OWNERS docs at https://go.k8s.io/owners 2 | 3 | approvers: 4 | - image-builder-maintainers 5 | 6 | reviewers: 7 | - image-builder-maintainers 8 | - image-builder-reviewers 9 | 10 | emeritus_approvers: 11 | - akutz 12 | - CecileRobertMichon 13 | - codenrhoden 14 | - detiber 15 | - figo 16 | - justinsb 17 | - luxas 18 | - moshloop 19 | - timothysc 20 | -------------------------------------------------------------------------------- /RELEASE.md: -------------------------------------------------------------------------------- 1 | # Image Builder Releases 2 | 3 | The current release of Image Builder is [v0.1.44][] (May 27, 2025). The corresponding container image is `registry.k8s.io/scl-image-builder/cluster-node-image-builder-amd64:v0.1.44`. 4 | 5 | ## Release Process 6 | 7 | For more detail about image-builder project releases, see the [Image Builder Book][]. 8 | 9 | 10 | [v0.1.44]: https://github.com/kubernetes-sigs/image-builder/releases/tag/v0.1.44 11 | [Image Builder Book]: https://image-builder.sigs.k8s.io/capi/releasing.html 12 | -------------------------------------------------------------------------------- /SECURITY_CONTACTS: -------------------------------------------------------------------------------- 1 | # Defined below are the security contacts for this repo. 2 | # 3 | # They are the contact point for the Product Security Committee to reach out 4 | # to for triaging and handling of incoming issues. 5 | # 6 | # The below names agree to abide by the 7 | # [Embargo Policy](https://git.k8s.io/security/private-distributors-list.md#embargo-policy) 8 | # and will be removed and replaced if they violate that agreement. 9 | # 10 | # DO NOT REPORT SECURITY VULNERABILITIES DIRECTLY TO THESE NAMES, FOLLOW THE 11 | # INSTRUCTIONS AT https://kubernetes.io/security/ 12 | 13 | timothysc 14 | justinsb 15 | luxas 16 | -------------------------------------------------------------------------------- /cloudbuild.yaml: -------------------------------------------------------------------------------- 1 | # See https://cloud.google.com/cloud-build/docs/build-config 2 | timeout: 3000s 3 | options: 4 | substitution_option: ALLOW_LOOSE 5 | steps: 6 | # 'gcr.io/k8s-staging-test-infra/gcb-docker-gcloud:v20211008-60e346af' 7 | - name: 'gcr.io/k8s-staging-test-infra/gcb-docker-gcloud@sha256:67925b5897028eaab9a481c4ee9df00ab58d02e24103dfd1fe34cff81d9d0fb9' 8 | entrypoint: make 9 | env: 10 | - DOCKER_CLI_EXPERIMENTAL=enabled 11 | - TAG=$_GIT_TAG 12 | - DOCKER_BUILDKIT=1 13 | args: ['-C', 'images/capi', 'release-staging'] 14 | substitutions: 15 | # _GIT_TAG will be filled with a git-based tag for the image, of the form vYYYYMMDD-hash, and 16 | # can be used as a substitution 17 | _GIT_TAG: '12345' 18 | -------------------------------------------------------------------------------- /code-of-conduct.md: -------------------------------------------------------------------------------- 1 | # Kubernetes Community Code of Conduct 2 | 3 | Please refer to our [Kubernetes Community Code of Conduct](https://git.k8s.io/community/code-of-conduct.md) 4 | -------------------------------------------------------------------------------- /docs/OWNERS: -------------------------------------------------------------------------------- 1 | # See the OWNERS docs at https://go.k8s.io/owners 2 | 3 | # Maintainers are expected to refrain from approving documentation changes 4 | # which don't relate to their area of maintenance. 5 | approvers: 6 | - cluster-api-aws-maintainers 7 | - cluster-api-azure-maintainers 8 | - cluster-api-cloudstack-maintainers 9 | - cluster-api-digitalocean-maintainers 10 | - cluster-api-gcp-maintainers 11 | - cluster-api-maintainers 12 | - cluster-api-nutanix-maintainers 13 | - cluster-api-openstack-maintainers 14 | - cluster-api-vsphere-maintainers 15 | - image-builder-maintainers 16 | - image-builder-raw-maintainers 17 | - image-builder-windows-maintainers 18 | -------------------------------------------------------------------------------- /docs/book/.gitignore: -------------------------------------------------------------------------------- 1 | book/ 2 | -------------------------------------------------------------------------------- /docs/book/Makefile: -------------------------------------------------------------------------------- 1 | # Copyright 2019 The Kubernetes Authors. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | MDBOOK = /tmp/mdbook 16 | .PHONY: serve 17 | serve: 18 | $(MDBOOK) serve 19 | -------------------------------------------------------------------------------- /docs/book/book.toml: -------------------------------------------------------------------------------- 1 | [book] 2 | authors = ["The Image Builder Maintainers"] 3 | language = "en" 4 | multilingual = false 5 | src = "src" 6 | title = "The Image Builder Book" 7 | 8 | [output.html] 9 | curly-quotes = true 10 | git-repository-url = "https://sigs.k8s.io/image-builder" 11 | -------------------------------------------------------------------------------- /docs/book/src/capi/providers/vultr.md: -------------------------------------------------------------------------------- 1 | # Building Images for Vultr 2 | 3 | ## Prerequisites for Vultr 4 | 5 | - A Vultr account 6 | - Export environment variable for `VULTR_API_KEY` 7 | 8 | ## Building Images 9 | 10 | The build [prerequisites](../capi.md#prerequisites) for using `image-builder` for 11 | building Vultr images are managed by running: 12 | 13 | ```bash 14 | make deps-vultr 15 | ``` 16 | 17 | From the `images/capi` directory, run `make build-vultr-` where `` is the desired operating system. The available choices are listed via `make help`. 18 | 19 | ### Configuration 20 | 21 | In addition to the configuration found in `images/capi/packer/config`, the `Vultr` 22 | directory includes the JSON files that define the default configuration for Ubuntu 22.04 23 | 24 | | File | Description | 25 | |------|-------------| 26 | | `ubuntu-2204.json` | The settings for the Ubuntu 22.04 image | 27 | -------------------------------------------------------------------------------- /docs/book/src/introduction.md: -------------------------------------------------------------------------------- 1 | # Kubernetes Image Builder 2 | 3 | This is the official documentation for the Kubernetes [Image Builder](https://github.com/kubernetes-sigs/image-builder). 4 | 5 | ## Introduction 6 | 7 | The Kubernetes Image Builder is a SIG Cluster Lifecycle sponsored project for building Kubernetes virtual machine images across multiple infrastructure providers. The resulting VM images are specifically intended to be used with [Cluster API](https://github.com/kubernetes-sigs/cluster-api) but should be suitable for other setups that rely on Kubeadm. 8 | -------------------------------------------------------------------------------- /images/capi/.dockerignore: -------------------------------------------------------------------------------- 1 | # Ignore all files 2 | * 3 | 4 | # Exceptions 5 | !ansible 6 | !ansible.cfg 7 | !cloudinit 8 | !hack 9 | !packer 10 | !Makefile 11 | !azure_targets.sh 12 | -------------------------------------------------------------------------------- /images/capi/.gitignore: -------------------------------------------------------------------------------- 1 | /guestinfo-datasource.json 2 | /capv-image-uploader.json 3 | /packer_cache/ 4 | /output-*/ 5 | /output/ 6 | /.bin/ 7 | /.local/bin/ 8 | manifest.json 9 | **.DS_Store 10 | 11 | # Goss test droppings 12 | debug-goss-spec.yaml 13 | goss-spec.yaml 14 | -------------------------------------------------------------------------------- /images/capi/README.md: -------------------------------------------------------------------------------- 1 | # Image Builder for Cluster API 2 | 3 | The Image Builder can be used to build images intended for use with Kubernetes [CAPI](https://cluster-api.sigs.k8s.io/) providers. Each provider has its own format of images that it can work with. For example, AWS instances use AMIs, and vSphere uses OVAs. 4 | 5 | For detailed documentation, see https://image-builder.sigs.k8s.io/capi/capi.html. 6 | -------------------------------------------------------------------------------- /images/capi/ansible.cfg: -------------------------------------------------------------------------------- 1 | # Copyright 2018 The Kubernetes Authors. 2 | 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | [defaults] 16 | remote_tmp = /tmp/.ansible 17 | display_skipped_hosts = False 18 | 19 | [ssh_connection] 20 | pipelining = False 21 | -------------------------------------------------------------------------------- /images/capi/ansible/.gitignore: -------------------------------------------------------------------------------- 1 | *.pyc -------------------------------------------------------------------------------- /images/capi/ansible/roles/containerd/defaults/main.yml: -------------------------------------------------------------------------------- 1 | # Copyright 2020 The Kubernetes Authors. 2 | 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | containerd_config_file: etc/containerd/config.toml 16 | containerd_gvisor_runtime: false 17 | containerd_gvisor_version: latest 18 | -------------------------------------------------------------------------------- /images/capi/ansible/roles/containerd/tasks/debian.yml: -------------------------------------------------------------------------------- 1 | # Copyright 2018 The Kubernetes Authors. 2 | 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | - name: Install libseccomp2 package 16 | ansible.builtin.apt: 17 | name: libseccomp2 18 | state: present 19 | -------------------------------------------------------------------------------- /images/capi/ansible/roles/containerd/tasks/photon.yml: -------------------------------------------------------------------------------- 1 | # Copyright 2019 The Kubernetes Authors. 2 | 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | - name: Install libseccomp package 16 | ansible.builtin.command: tdnf install libseccomp -y 17 | -------------------------------------------------------------------------------- /images/capi/ansible/roles/containerd/tasks/redhat.yml: -------------------------------------------------------------------------------- 1 | # Copyright 2018 The Kubernetes Authors. 2 | 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | - name: Install libseccomp package 16 | ansible.builtin.yum: 17 | name: libseccomp 18 | state: present 19 | lock_timeout: 60 20 | -------------------------------------------------------------------------------- /images/capi/ansible/roles/containerd/templates/etc/crictl.yaml: -------------------------------------------------------------------------------- 1 | runtime-endpoint: unix://{{ containerd_cri_socket }} 2 | -------------------------------------------------------------------------------- /images/capi/ansible/roles/containerd/templates/etc/systemd/system/containerd-flatcar.conf: -------------------------------------------------------------------------------- 1 | [Service] 2 | Environment=PATH=/opt/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin 3 | ExecStartPre=mkdir -p /run/docker/libcontainerd 4 | ExecStartPre=ln -fs /run/containerd/containerd.sock /run/docker/libcontainerd/docker-containerd.sock 5 | ExecStart= 6 | ExecStart=/opt/bin/containerd --config /etc/containerd/config.toml 7 | -------------------------------------------------------------------------------- /images/capi/ansible/roles/containerd/templates/etc/systemd/system/containerd.service.d/http-proxy.conf: -------------------------------------------------------------------------------- 1 | [Service] 2 | {% if http_proxy %} 3 | Environment="HTTP_PROXY={{ http_proxy }}" 4 | {% endif %} 5 | {% if https_proxy %} 6 | Environment="HTTPS_PROXY={{ https_proxy }}" 7 | {% endif %} 8 | {% if no_proxy %} 9 | Environment="NO_PROXY={{ no_proxy }}" 10 | {% endif %} 11 | -------------------------------------------------------------------------------- /images/capi/ansible/roles/containerd/templates/etc/systemd/system/containerd.service.d/limit-nofile.conf: -------------------------------------------------------------------------------- 1 | [Service] 2 | # LimitNOFILE=infinity on Azure Linux means 1073741816, which has caused issues 3 | # running some software in containers such as mysql5 and sshd. 4 | LimitNOFILE=1048576 5 | -------------------------------------------------------------------------------- /images/capi/ansible/roles/containerd/templates/etc/systemd/system/containerd.service.d/max-tasks.conf: -------------------------------------------------------------------------------- 1 | [Service] 2 | # Do not limit the number of tasks that can be spawned by containerd 3 | TasksMax=infinity 4 | -------------------------------------------------------------------------------- /images/capi/ansible/roles/containerd/templates/etc/systemd/system/containerd.service.d/memory-pressure.conf: -------------------------------------------------------------------------------- 1 | [Service] 2 | # Decreases the likelihood that containerd is killed due to memory 3 | # pressure. 4 | # 5 | # Please see the following link for more information about the 6 | # OOMScoreAdjust configuration property: 7 | # https://www.freedesktop.org/software/systemd/man/systemd.exec.html#OOMScoreAdjust= 8 | OOMScoreAdjust=-999 9 | -------------------------------------------------------------------------------- /images/capi/ansible/roles/ecr_credential_provider/templates/var/usr/ecr-credential-provider/ecr-credential-provider-config: -------------------------------------------------------------------------------- 1 | apiVersion: kubelet.config.k8s.io/v1 2 | kind: CredentialProviderConfig 3 | providers: 4 | - name: ecr-credential-provider 5 | matchImages: {{ ecr_credential_provider_match_images }} 6 | defaultCacheDuration: "12h" 7 | apiVersion: credentialprovider.kubelet.k8s.io/v1 8 | env: 9 | - name: AWS_PROFILE 10 | value: "{{ ecr_credential_provider_aws_profile }}" 11 | -------------------------------------------------------------------------------- /images/capi/ansible/roles/firstboot/README.md: -------------------------------------------------------------------------------- 1 | This role is to be used for operating systems that require some operations 2 | that require a reboot. 3 | -------------------------------------------------------------------------------- /images/capi/ansible/roles/firstboot/defaults: -------------------------------------------------------------------------------- 1 | ../node/defaults -------------------------------------------------------------------------------- /images/capi/ansible/roles/firstboot/tasks/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | # Copyright 2020 The Kubernetes Authors. 3 | 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | - ansible.builtin.include_tasks: photon.yml 17 | when: ansible_os_family == "VMware Photon OS" 18 | 19 | - ansible.builtin.include_tasks: qemu.yml 20 | when: packer_builder_type is search('qemu') 21 | -------------------------------------------------------------------------------- /images/capi/ansible/roles/firstboot/tasks/qemu.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Copyright 2022 The Kubernetes Authors. 3 | 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | # no-op task just to have something for the role to do. Right now 17 | # all the work happens in the setup role 18 | - ansible.builtin.meta: noop 19 | -------------------------------------------------------------------------------- /images/capi/ansible/roles/gpu/defaults/main.yml: -------------------------------------------------------------------------------- 1 | # Copyright 2024 The Kubernetes Authors. 2 | 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | --- 16 | gpu_amd_usecase: dkms 17 | gpu_block_nouveau_loading: false 18 | gpu_systemd_networkd_update_initramfs: >- 19 | {%- if ansible_os_family == 'VMware Photon OS' -%} dracut -f{%- elif ansible_os_family == 'Debian' -%} update-initramfs -u{%- endif -%} 20 | gpu_nvidia_ceph: false 21 | -------------------------------------------------------------------------------- /images/capi/ansible/roles/gpu/templates/etc/modprobe.d/blocklist-nouveau.conf: -------------------------------------------------------------------------------- 1 | #block nouveau it from being loaded by default by the kernel 2 | blacklist nouveau 3 | # options nouveau modeset=0 -- If the module is built into the kernel, then this disables it 4 | # This is to more like future-proofing against future kernels 5 | options nouveau modeset=0 6 | {% if gpu_block_nouveau_loading | bool %} 7 | #Prevent from loading even when tried to be loaded (either manual or using some other instrument) 8 | install nouveau /bin/false 9 | {% endif %} 10 | -------------------------------------------------------------------------------- /images/capi/ansible/roles/gpu/templates/gridd.conf.j2: -------------------------------------------------------------------------------- 1 | # Copyright 2023 The Kubernetes Authors. 2 | 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FeatureType={{ gridd_feature_type }} 16 | -------------------------------------------------------------------------------- /images/capi/ansible/roles/kubernetes/files/etc/profile.d/kubernetes.sh: -------------------------------------------------------------------------------- 1 | # shellcheck shell=sh disable=SC2166,SC2157,SC3044 2 | 3 | # Check for interactive bash 4 | if [ "x${BASH_VERSION-}" != x -a "x${PS1-}" ]; then 5 | ADMIN_CONF=/etc/kubernetes/admin.conf 6 | SUPER_ADMIN_CONF=/etc/kubernetes/super-admin.conf 7 | 8 | if [ -r "${SUPER_ADMIN_CONF}" ]; then 9 | export KUBECONFIG="${SUPER_ADMIN_CONF}" 10 | elif [ -r "${ADMIN_CONF}" ]; then 11 | export KUBECONFIG="${ADMIN_CONF}" 12 | fi 13 | 14 | alias k=kubectl 15 | __load_completion kubectl >/dev/null 2>&1 || true 16 | complete -F __start_kubectl k 2>/dev/null || true 17 | fi 18 | -------------------------------------------------------------------------------- /images/capi/ansible/roles/kubernetes/files/tmp/modify-k8s-img.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if [ "$#" -eq 0 ];then 4 | echo "Usage: $0 " 5 | else 6 | FILE=$1 7 | DIR="/tmp/${FILE%%.*}" 8 | mkdir -p ${DIR} 9 | tar xf /tmp/${FILE} -C ${DIR} 10 | sed -i "s/${FILE%%.*}\-amd64\:/${FILE%%.*}\:/" "${DIR}/manifest.json" 11 | sed -i "s/${FILE%%.*}\-amd64/${FILE%%.*}/" "${DIR}/repositories" 12 | tar cf "${DIR}.tar" -C ${DIR} . 13 | rm -rf ${DIR} 14 | fi -------------------------------------------------------------------------------- /images/capi/ansible/roles/kubernetes/tasks/kubeadmpull.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Create kubeadm config file 3 | ansible.builtin.template: 4 | dest: /etc/kubeadm.yml 5 | src: "{{ kubeadm_template }}" 6 | mode: "0600" 7 | 8 | - name: Kubeadm pull images 9 | ansible.builtin.shell: kubeadm config images pull --config /etc/kubeadm.yml --cri-socket {{ containerd_cri_socket }} 10 | 11 | - name: Delete kubeadm config 12 | ansible.builtin.file: 13 | path: /etc/kubeadm.yml 14 | state: absent 15 | when: ansible_os_family != "Flatcar" 16 | -------------------------------------------------------------------------------- /images/capi/ansible/roles/kubernetes/templates/etc/kubeadm.yml: -------------------------------------------------------------------------------- 1 | apiVersion: kubeadm.k8s.io/v1beta3 2 | kind: ClusterConfiguration 3 | imageRepository: {{ kubernetes_container_registry }} 4 | kubernetesVersion: {{ kubernetes_semver }} 5 | dns: 6 | imageRepository: {{ kubernetes_container_registry }}/coredns 7 | --- 8 | apiVersion: kubeadm.k8s.io/v1beta3 9 | kind: InitConfiguration 10 | nodeRegistration: 11 | criSocket: {{ containerd_cri_socket }} 12 | -------------------------------------------------------------------------------- /images/capi/ansible/roles/kubernetes/templates/etc/kubernetes-version: -------------------------------------------------------------------------------- 1 | {{ kubernetes_semver }} -------------------------------------------------------------------------------- /images/capi/ansible/roles/kubernetes/templates/etc/sysconfig/kubelet: -------------------------------------------------------------------------------- 1 | KUBELET_EXTRA_ARGS={{ kubelet_extra_args }} -------------------------------------------------------------------------------- /images/capi/ansible/roles/kubernetes/templates/etc/yum.repos.d/kubernetes.repo: -------------------------------------------------------------------------------- 1 | [kubernetes] 2 | name=kubernetes 3 | description=the kubernetes yum repo 4 | baseurl={{ kubernetes_rpm_repo }} 5 | gpgcheck={{ kubernetes_rpm_gpg_check }} 6 | gpgkey={{ kubernetes_rpm_gpg_key }} 7 | enabled=1 8 | -------------------------------------------------------------------------------- /images/capi/ansible/roles/kubernetes/templates/usr/lib/systemd/system/kubelet.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=kubelet: The Kubernetes Node Agent 3 | Documentation=https://kubernetes.io/docs/home/ 4 | Wants=network-online.target 5 | After=network-online.target 6 | 7 | [Service] 8 | ExecStart={{ sysusr_prefix }}/bin/kubelet 9 | Restart=always 10 | StartLimitInterval=0 11 | RestartSec=10 12 | 13 | [Install] 14 | WantedBy=multi-user.target 15 | -------------------------------------------------------------------------------- /images/capi/ansible/roles/kubernetes/templates/usr/lib/systemd/system/kubelet.service.d/11-resource-sizing.conf: -------------------------------------------------------------------------------- 1 | [Service] 2 | EnvironmentFile=-/run/kubelet/extra-args.env 3 | ExecStartPre={{ sysusr_prefix }}/libexec/kubernetes/kubelet-resource-sizing.sh 4 | -------------------------------------------------------------------------------- /images/capi/ansible/roles/load_additional_components/tasks/executables.yml: -------------------------------------------------------------------------------- 1 | # Copyright 2021 The Kubernetes Authors. 2 | 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | - name: Download additional executables 16 | ansible.builtin.get_url: 17 | url: "{{ item }}" 18 | dest: "{{ additional_executables_destination_path }}" 19 | mode: "0711" 20 | loop: "{{ additional_executables_list.split(',') }}" 21 | retries: 5 22 | delay: 3 23 | -------------------------------------------------------------------------------- /images/capi/ansible/roles/load_additional_components/tasks/registry.yml: -------------------------------------------------------------------------------- 1 | # Copyright 2021 The Kubernetes Authors. 2 | 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | - name: Pull additional images from registry 16 | ansible.builtin.shell: CONTAINERD_NAMESPACE="k8s.io" {{ sysusr_prefix }}/bin/ctr --address={{ containerd_cri_socket }} images pull {{ item }} 17 | loop: "{{ additional_registry_images_list.split(',') }}" 18 | retries: 5 19 | delay: 3 20 | -------------------------------------------------------------------------------- /images/capi/ansible/roles/multipathd/defaults/main.yml: -------------------------------------------------------------------------------- 1 | # Copyright 2025 The Kubernetes Authors. 2 | 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | # The path to the custom multipath.conf file 16 | multipathd_custom_conf_file_path: "" 17 | -------------------------------------------------------------------------------- /images/capi/ansible/roles/multipathd/files/multipath.conf: -------------------------------------------------------------------------------- 1 | # Copyright 2025 The Kubernetes Authors. 2 | 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | # Default value. This file was created because you did not set the variable 'multipathd_custom_conf_file_path'. 16 | defaults { 17 | user_friendly_names yes 18 | } 19 | -------------------------------------------------------------------------------- /images/capi/ansible/roles/multipathd/tasks/main.yml: -------------------------------------------------------------------------------- 1 | # Copyright 2025 The Kubernetes Authors. 2 | 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | - name: Copy Custom multipath.conf File 16 | ansible.builtin.copy: 17 | src: "{{ multipathd_custom_conf_file_path if multipathd_custom_conf_file_path | length > 0 else 'files/multipath.conf' }}" 18 | dest: /etc/multipath.conf 19 | mode: "0644" 20 | -------------------------------------------------------------------------------- /images/capi/ansible/roles/node/files/etc/audit/rules.d/containerd.rules: -------------------------------------------------------------------------------- 1 | -w /var/lib/containerd/ -p rwxa -k containerd 2 | -w /etc/containerd/ -p rwxa -k containerd 3 | -w /etc/systemd/system/containerd.service -p rwxa -k containerd 4 | -w /etc/systemd/system/containerd.service.d/ -p rwxa -k containerd 5 | -w /run/containerd/ -p rwxa -k containerd 6 | -w /usr/local/bin/containerd-shim -p rwxa -k containerd 7 | -w /usr/local/bin/containerd-shim-runc-v1 -p rwxa -k containerd 8 | -w /usr/local/bin/containerd-shim-runc-v2 -p rwxa -k containerd 9 | -w /usr/local/sbin/runc -p rwxa -k containerd 10 | -w /usr/local/bin/containerd -p rwxa -k containerd 11 | -------------------------------------------------------------------------------- /images/capi/ansible/roles/node/files/etc/audit/rules.d/containerd.rules-flatcar: -------------------------------------------------------------------------------- 1 | -w /var/lib/containerd/ -p rwxa -k containerd 2 | -w /etc/containerd/ -p rwxa -k containerd 3 | -w /etc/systemd/system/containerd.service -p rwxa -k containerd 4 | -w /etc/systemd/system/containerd.service.d/ -p rwxa -k containerd 5 | -w /run/containerd/ -p rwxa -k containerd 6 | -w /opt/bin/containerd-shim -p rwxa -k containerd 7 | -w /opt/bin/containerd-shim-runc-v1 -p rwxa -k containerd 8 | -w /opt/bin/containerd-shim-runc-v2 -p rwxa -k containerd 9 | -w /opt/bin/runc -p rwxa -k containerd 10 | -w /opt/bin/containerd -p rwxa -k containerd 11 | -------------------------------------------------------------------------------- /images/capi/ansible/roles/node/templates/etc/udev/rules.d/90-etcd-tuning.rules: -------------------------------------------------------------------------------- 1 | # Copyright 2022 The Kubernetes Authors. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | ACTION=="add", SUBSYSTEM=="net", SUBSYSTEMS=="pci|xen|vmbus" RUN+="{{ external_binary_path }}/etcd-network-tuning.sh $name" 16 | -------------------------------------------------------------------------------- /images/capi/ansible/roles/providers/defaults/main.yml: -------------------------------------------------------------------------------- 1 | # Copyright 2021 The Kubernetes Authors. 2 | 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | networkd_dispatcher_download_url: https://gitlab.com/craftyguy/networkd-dispatcher/-/archive/2.1/networkd-dispatcher-2.1.tar.gz 16 | packer_builder_type: "" 17 | build_target: virt 18 | var_log_messages_maxsize: 100M 19 | -------------------------------------------------------------------------------- /images/capi/ansible/roles/providers/files/cloud-init-features.patch: -------------------------------------------------------------------------------- 1 | ERROR_ON_USER_DATA_FAILURE = False 2 | -------------------------------------------------------------------------------- /images/capi/ansible/roles/providers/files/etc/azure/iptables: -------------------------------------------------------------------------------- 1 | *filter 2 | :INPUT ACCEPT [0:0] 3 | :FORWARD ACCEPT [0:0] 4 | :OUTPUT ACCEPT [0:0] 5 | -A FORWARD -d 168.63.129.16/32 -p tcp -m tcp --dport 80 -m comment --comment "block traffic to 168.63.129.16 for cve-2021-27075" -j DROP 6 | -A OUTPUT -d 168.63.129.16/32 -p tcp -m owner --uid-owner 0 -j ACCEPT 7 | -A OUTPUT -d 168.63.129.16/32 -p tcp -m conntrack --ctstate INVALID,NEW -j DROP 8 | COMMIT 9 | -------------------------------------------------------------------------------- /images/capi/ansible/roles/providers/files/etc/cloud/cloud.cfg.d/15_azure-vnet.cfg: -------------------------------------------------------------------------------- 1 | ## We need the below configuration on Azure flavor VMs to enable DHCP on eth0 2 | ## instead of Azure's IMDS endpoint. This configuration supports CNIs that 3 | ## use extra available IPs on the host to assign them to the scheduled pods. 4 | ## CNIs operating in overlay mode do not get affected by this configuration update. 5 | ## We apply this configuration to the VM before its first boot, and not via 6 | ## cloud-init's VM user data(customData), because network will get setup before reading 7 | ## customData. Please refer for more context: 8 | ## - https://github.com/kubernetes-sigs/image-builder/pull/1090#issuecomment-1468552870 9 | ## - https://github.com/kubernetes-sigs/image-builder/pull/1090#issuecomment-1462944511 10 | ## 11 | ## Also refer to the PR adding this configuration for complete history and conversation. 12 | ## - https://github.com/kubernetes-sigs/image-builder/pull/1090 13 | ## 14 | datasource: 15 | Azure: 16 | apply_network_config: false 17 | -------------------------------------------------------------------------------- /images/capi/ansible/roles/providers/files/etc/cloud/cloud.cfg.d/90_dpkg.cfg: -------------------------------------------------------------------------------- 1 | datasource_list: [ Ec2Kubernetes ] 2 | -------------------------------------------------------------------------------- /images/capi/ansible/roles/providers/files/etc/networkd-dispatcher/no-carrier.d/20-chrony.j2: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # This is a networkd-dispatcher script for chronyd to handle its NTP 4 | # sources. It sets the NTP sources online or offline when a network 5 | # interface is configured or removed. On DHCP change, chrony will 6 | # update its NTP sources passed from DHCP options. 7 | 8 | export LC_ALL=C 9 | 10 | DHCP_SERVER_FILE={{ server_dir }}/chrony.servers.$IFACE 11 | 12 | clear_servers_from_dhcp() { 13 | if [ -f "$DHCP_SERVER_FILE" ]; then 14 | rm -f "$DHCP_SERVER_FILE" 15 | {{ chrony_helper_dir }}/chrony-helper update-daemon || : 16 | fi 17 | } 18 | 19 | if [ "$STATE" = "no-carrier" ]; then 20 | clear_servers_from_dhcp 21 | # The onoffline command tells chronyd to switch all sources to 22 | # the online (routable) or offline (off) status according to the current network configuration. 23 | chronyc onoffline > /dev/null 2>&1 24 | fi 25 | 26 | exit 0 -------------------------------------------------------------------------------- /images/capi/ansible/roles/providers/files/etc/networkd-dispatcher/off.d/20-chrony.j2: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # This is a networkd-dispatcher script for chronyd to handle its NTP 4 | # sources. It sets the NTP sources online or offline when a network 5 | # interface is configured or removed. On DHCP change, chrony will 6 | # update its NTP sources passed from DHCP options. 7 | 8 | export LC_ALL=C 9 | 10 | DHCP_SERVER_FILE={{ server_dir }}/chrony.servers.$IFACE 11 | 12 | clear_servers_from_dhcp() { 13 | if [ -f "$DHCP_SERVER_FILE" ]; then 14 | rm -f "$DHCP_SERVER_FILE" 15 | {{ chrony_helper_dir }}/chrony-helper update-daemon || : 16 | fi 17 | } 18 | 19 | if [ "$STATE" = "off" ]; then 20 | clear_servers_from_dhcp 21 | # The onoffline command tells chronyd to switch all sources to 22 | # the online (routable) or offline (off) status according to the current network configuration. 23 | chronyc onoffline > /dev/null 2>&1 24 | fi 25 | 26 | exit 0 -------------------------------------------------------------------------------- /images/capi/ansible/roles/providers/files/etc/networkd-dispatcher/routable.d/20-chrony.j2: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # This is a networkd-dispatcher script for chronyd to handle its NTP 4 | # sources. It sets the NTP sources online or offline when a network 5 | # interface is configured or removed. On DHCP change, chrony will 6 | # update its NTP sources passed from DHCP options. 7 | 8 | export LC_ALL=C 9 | 10 | DHCP_SERVER_FILE={{ server_dir }}/chrony.servers.$IFACE 11 | 12 | add_servers_from_dhcp() { 13 | if [ -f "$DHCP_SERVER_FILE" ]; then 14 | rm -f "$DHCP_SERVER_FILE" 15 | fi 16 | echo "$json" | jq -r 'select(.NTP !=null) .NTP[]' >> $DHCP_SERVER_FILE 17 | {{ chrony_helper_dir }}/chrony-helper update-daemon || : 18 | } 19 | 20 | if [ "$STATE" = "routable" ]; then 21 | add_servers_from_dhcp 22 | # The onoffline command tells chronyd to switch all sources to 23 | # the online (routable) or offline (off) status according to the current network configuration. 24 | chronyc onoffline > /dev/null 2>&1 25 | fi 26 | 27 | exit 0 -------------------------------------------------------------------------------- /images/capi/ansible/roles/providers/files/etc/systemd/system/cloud-config.service.d/boot-order.conf: -------------------------------------------------------------------------------- 1 | [Unit] 2 | After=containerd.service 3 | Wants=containerd.service -------------------------------------------------------------------------------- /images/capi/ansible/roles/providers/files/etc/systemd/system/cloud-final.service.d/boot-order.conf: -------------------------------------------------------------------------------- 1 | [Unit] 2 | After=containerd.service 3 | Wants=containerd.service -------------------------------------------------------------------------------- /images/capi/ansible/roles/providers/files/etc/systemd/system/modify-cloud-init-cfg.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Modify cloud-init config 3 | After=cloud-final.service 4 | AssertFileIsExecutable=/usr/local/bin/modify-cloud-init-cfg.sh 5 | 6 | [Install] 7 | WantedBy=cloud-init.target 8 | 9 | [Service] 10 | Type=simple 11 | ExecStart=/usr/local/bin/modify-cloud-init-cfg.sh 12 | SuccessExitStatus=0 -------------------------------------------------------------------------------- /images/capi/ansible/roles/providers/files/etc/vmware-tools/tools.conf: -------------------------------------------------------------------------------- 1 | [guestinfo] 2 | exclude-nics=antrea-*,cali*,cilium*,lxc*,ovs-system,br*,flannel*,veth*,vxlan_sys_*,genev_sys_*,gre_sys_*,stt_sys_*,????????-?????? 3 | 4 | -------------------------------------------------------------------------------- /images/capi/ansible/roles/providers/files/maas/curtin/NOTICE.md: -------------------------------------------------------------------------------- 1 | # Attribution 2 | All the script in this folder is derived from the original work by Alexsander de Souza (Canonical), 3 | available at https://github.com/canonical/packer-maas. -------------------------------------------------------------------------------- /images/capi/ansible/roles/providers/files/maas/curtin/install-custom-packages: -------------------------------------------------------------------------------- 1 | #!/bin/bash -ex 2 | # 3 | exit 0 -------------------------------------------------------------------------------- /images/capi/ansible/roles/providers/files/maas/curtin/setup-bootloader: -------------------------------------------------------------------------------- 1 | #!/bin/bash -ex 2 | # 3 | # This script was copied as-is from: 4 | # Source: https://github.com/canonical/packer-maas 5 | # Original Author: Alexsander de Souza 6 | 7 | export DEBIAN_FRONTEND=noninteractive 8 | 9 | # Clean up remnants from packer-maas vm install 10 | rm /var/cache/debconf/config.dat 11 | dpkg --configure -a 12 | 13 | # Update the package lists before attempting to install the kernel 14 | apt-get update 15 | # Ensure the existence of linux-image-generic for non-cloudimg images. 16 | #apt-get -y install linux-image-generic 17 | 18 | dpkg-reconfigure grub-efi-amd64 19 | update-grub 20 | 21 | grub-install \ 22 | --target=x86_64-efi \ 23 | --efi-directory=/boot/efi \ 24 | --bootloader-id=ubuntu \ 25 | --recheck 26 | 27 | update-initramfs -uk all 28 | 29 | efibootmgr -v 30 | 31 | -------------------------------------------------------------------------------- /images/capi/ansible/roles/providers/files/usr/lib/python3/dist-packages/cloudinit/feature_overrides.py: -------------------------------------------------------------------------------- 1 | ERROR_ON_USER_DATA_FAILURE = False 2 | -------------------------------------------------------------------------------- /images/capi/ansible/roles/providers/files/usr/lib/python3/site-packages/cloudinit/feature_overrides.py: -------------------------------------------------------------------------------- 1 | ERROR_ON_USER_DATA_FAILURE = False 2 | -------------------------------------------------------------------------------- /images/capi/ansible/roles/providers/files/usr/local/bin/modify-cloud-init-cfg.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | sed -i '/^preserve_hostname/s/false/true/' /etc/cloud/cloud.cfg 4 | -------------------------------------------------------------------------------- /images/capi/ansible/roles/providers/tasks/maas-ubuntu.yml: -------------------------------------------------------------------------------- 1 | - name: Create /curtin directory 2 | ansible.builtin.file: 3 | path: /curtin 4 | state: directory 5 | mode: "0775" 6 | 7 | - name: Copy curtin scripts to /curtin 8 | ansible.builtin.copy: 9 | src: "files/maas/curtin/{{ item }}" 10 | dest: "/curtin/{{ item }}" 11 | mode: "0750" 12 | loop: 13 | - curtin-hooks 14 | - install-custom-packages 15 | - setup-bootloader 16 | -------------------------------------------------------------------------------- /images/capi/ansible/roles/providers/tasks/maas.yml: -------------------------------------------------------------------------------- 1 | - name: Include QEMU tasks 2 | ansible.builtin.include_tasks: qemu.yml 3 | 4 | - name: Include MaaS Specific configs for Ubuntu Distro 5 | ansible.builtin.include_tasks: maas-ubuntu.yml 6 | when: ansible_os_family == "Debian" 7 | -------------------------------------------------------------------------------- /images/capi/ansible/roles/providers/tasks/outscale.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Install cloud-init packages 3 | ansible.builtin.apt: 4 | name: "{{ packages }}" 5 | state: present 6 | force_apt_get: true 7 | vars: 8 | packages: 9 | - cloud-init 10 | - cloud-guest-utils 11 | - cloud-initramfs-copymods 12 | - cloud-initramfs-dyn-netconf 13 | -------------------------------------------------------------------------------- /images/capi/ansible/roles/providers/templates/etc/logrotate.d/messages.j2: -------------------------------------------------------------------------------- 1 | /var/log/messages { 2 | compress 3 | nodateext 4 | rotate 5 5 | daily 6 | maxsize {{ var_log_messages_maxsize }} 7 | missingok 8 | notifempty 9 | copytruncate 10 | } -------------------------------------------------------------------------------- /images/capi/ansible/roles/python/defaults/main.yml: -------------------------------------------------------------------------------- 1 | # Copyright 2018 The Kubernetes Authors. 2 | 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | --- 16 | pypy_python_version: "3.6" 17 | pypy_version: 7.2.0 18 | pypy_download_path: /tmp/pypy.tar.bz2 19 | pypy_install_path: /opt 20 | -------------------------------------------------------------------------------- /images/capi/ansible/roles/security/README.md: -------------------------------------------------------------------------------- 1 | # Security 2 | 3 | The security role enables the installation of Trivy and/or Falco to be installed directly into the image rather than 4 | having to run privileged pods. 5 | 6 | They can be individually enabled using the following `ansible_user_vars`. They are able to be installed in 7 | the `node_custom_roles_pre`, `node_custom_roles_post` or just as a role reference. 8 | 9 | ```json 10 | { 11 | "ansible_user_vars": "security_install_falco=true security_install_trivy=true", 12 | "node_custom_roles_pre": "security" 13 | } 14 | ``` -------------------------------------------------------------------------------- /images/capi/ansible/roles/security/defaults/main.yml: -------------------------------------------------------------------------------- 1 | # Copyright 2024 The Kubernetes Authors. 2 | 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | security_install_falco: "" 17 | security_install_trivy: "" 18 | -------------------------------------------------------------------------------- /images/capi/ansible/roles/security/tasks/main.yml: -------------------------------------------------------------------------------- 1 | # Copyright 2024 The Kubernetes Authors. 2 | 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | --- 16 | 17 | - name: Install Falco 18 | ansible.builtin.import_tasks: falco.yml 19 | when: security_install_falco | bool 20 | 21 | - name: Install Trivy 22 | ansible.builtin.import_tasks: trivy.yml 23 | when: security_install_trivy | bool 24 | -------------------------------------------------------------------------------- /images/capi/ansible/roles/setup/files/etc/systemd/system-environment-generators/10-flatcar-path: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | . /etc/profile 3 | echo "PATH=$PATH" 4 | -------------------------------------------------------------------------------- /images/capi/ansible/roles/setup/tasks/bootstrap-flatcar.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Flatcar ships without Python installed 3 | 4 | - name: Check if bootstrap is needed 5 | ansible.builtin.raw: stat /opt/bin/.bootstrapped 6 | register: need_bootstrap 7 | environment: {} 8 | failed_when: false 9 | changed_when: false 10 | tags: 11 | - facts 12 | 13 | - name: Set the ansible_python_interpreter fact 14 | ansible.builtin.set_fact: 15 | ansible_python_interpreter: "{{ external_binary_path }}/python" 16 | tags: 17 | - facts 18 | 19 | # Some tasks are not compatible with Flatcar, so to centralize and deduplicate the logic of checking 20 | # if we run on Flatcar, we define it here. 21 | # 22 | # This is required until https://github.com/ansible/ansible/issues/77537 is fixed and used. 23 | - name: Override Flatcar's OS family 24 | ansible.builtin.set_fact: 25 | ansible_os_family: Flatcar 26 | when: ansible_os_family == "Flatcar Container Linux by Kinvolk" 27 | tags: 28 | - facts 29 | -------------------------------------------------------------------------------- /images/capi/ansible/roles/setup/templates/etc/apt/apt.conf.d/90proxy: -------------------------------------------------------------------------------- 1 | Acquire { 2 | {% if http_proxy %} 3 | http::Proxy "{{ http_proxy }}"; 4 | {% endif %} 5 | {% if https_proxy %} 6 | https::Proxy "{{ https_proxy }}"; 7 | {% endif %} 8 | } -------------------------------------------------------------------------------- /images/capi/ansible/roles/setup/templates/etc/apt/sources.list.d/ubuntu.sources.j2: -------------------------------------------------------------------------------- 1 | Types: deb 2 | URIs: http://us.archive.ubuntu.com/ubuntu/ 3 | Suites: {{ ansible_distribution_release }} {{ ansible_distribution_release }}-updates {{ ansible_distribution_release }}-backports 4 | Components: main restricted universe multiverse 5 | Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg 6 | 7 | Types: deb 8 | URIs: http://security.ubuntu.com/ubuntu/ 9 | Suites: {{ ansible_distribution_release }}-security 10 | Components: main restricted universe multiverse 11 | Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg -------------------------------------------------------------------------------- /images/capi/ansible/roles/setup/templates/etc/apt/sources.list.j2: -------------------------------------------------------------------------------- 1 | deb {{ ubuntu_repo }} {{ ansible_distribution_release }} main restricted universe 2 | deb {{ ubuntu_repo }} {{ ansible_distribution_release }}-updates main restricted universe 3 | deb {{ ubuntu_repo }} {{ ansible_distribution_release }}-backports main restricted universe 4 | deb {{ ubuntu_security_repo }} {{ ansible_distribution_release }}-security main restricted universe 5 | -------------------------------------------------------------------------------- /images/capi/ansible/roles/setup/templates/photon_bash_profile: -------------------------------------------------------------------------------- 1 | PATH=$PATH:/usr/sbin:/usr/local/sbin 2 | export PATH 3 | -------------------------------------------------------------------------------- /images/capi/ansible/roles/sysprep/defaults/main.yml: -------------------------------------------------------------------------------- 1 | # Copyright 2019 The Kubernetes Authors. 2 | 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | extra_repos: "" 16 | pip_conf_file: "" 17 | remove_extra_repos: false 18 | flatcar_disable_autologin: false 19 | -------------------------------------------------------------------------------- /images/capi/ansible/roles/sysprep/files/etc/default/grub.d/50-cloudimg-settings.cfg: -------------------------------------------------------------------------------- 1 | # Cloud Image specific Grub settings for Cloud Images 2 | # This file was created/modified by the k8s image-builder process 3 | 4 | # Set the recordfail timeout 5 | GRUB_RECORDFAIL_TIMEOUT=0 6 | 7 | # Do not wait on grub prompt 8 | GRUB_TIMEOUT=0 9 | 10 | # Set the default commandline 11 | GRUB_CMDLINE_LINUX_DEFAULT="console=tty1 console=ttyS0" 12 | 13 | # Set the grub console type 14 | GRUB_TERMINAL=console 15 | -------------------------------------------------------------------------------- /images/capi/ansible/roles/sysprep/files/etc/hosts: -------------------------------------------------------------------------------- 1 | 127.0.0.1 localhost localhost.local 2 | ::1 localhost ip6-localhost ip6-loopback 3 | -------------------------------------------------------------------------------- /images/capi/ansible/roles/sysprep/files/etc/netplan/51-kubevirt-netplan.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | network: 3 | version: 2 4 | ethernets: 5 | id0: 6 | match: 7 | name: enp*s* 8 | dhcp4: true 9 | -------------------------------------------------------------------------------- /images/capi/ansible/roles/sysprep/handlers/main.yml: -------------------------------------------------------------------------------- 1 | # Copyright 2024 The Kubernetes Authors. 2 | 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | - name: Update debian grub 16 | ansible.builtin.shell: | 17 | update-grub 18 | changed_when: true 19 | -------------------------------------------------------------------------------- /images/capi/ansible/windows/OWNERS: -------------------------------------------------------------------------------- 1 | # See the OWNERS docs at https://go.k8s.io/owners 2 | 3 | approvers: 4 | - image-builder-windows-maintainers 5 | -------------------------------------------------------------------------------- /images/capi/ansible/windows/roles/gmsa/defaults/main.yml: -------------------------------------------------------------------------------- 1 | # Copyright 2022 The Kubernetes Authors. 2 | 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | gmsa_keyvault: "{{ true if (gmsa_keyvault_url is defined) and (gmsa_keyvault_url | length > 0) else false }}" 17 | -------------------------------------------------------------------------------- /images/capi/ansible/windows/roles/gmsa/tasks/main.yml: -------------------------------------------------------------------------------- 1 | # Copyright 2022 The Kubernetes Authors. 2 | 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | - ansible.builtin.import_tasks: gmsa_keyvault.yml 16 | when: gmsa_keyvault | bool 17 | -------------------------------------------------------------------------------- /images/capi/ansible/windows/roles/kubernetes/defaults/main.yml: -------------------------------------------------------------------------------- 1 | # Copyright 2018 The Kubernetes Authors. 2 | 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | kubernetes_bins: 16 | - kubeadm 17 | - kubectl 18 | - kubelet 19 | -------------------------------------------------------------------------------- /images/capi/ansible/windows/roles/kubernetes/tasks/url.yml: -------------------------------------------------------------------------------- 1 | # Copyright 2020 The Kubernetes Authors. 2 | 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | - name: Download kubernetes binaries 16 | ansible.windows.win_get_url: 17 | url: "{{ kubernetes_base_url }}/{{ item }}.exe" 18 | dest: "{{ kubernetes_install_path }}\\" 19 | loop: "{{ kubernetes_bins }}" 20 | retries: 5 21 | delay: 3 22 | register: kubernetes_download 23 | until: kubernetes_download is not failed 24 | -------------------------------------------------------------------------------- /images/capi/ansible/windows/roles/load_additional_components/defaults/main.yml: -------------------------------------------------------------------------------- 1 | # Copyright 2021 The Kubernetes Authors. 2 | 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | additional_registry_images: "" 17 | additional_registry_images_list: "" 18 | additional_url_images: "" 19 | additional_url_images_list: "" 20 | additional_executables: "" 21 | additional_executables_list: "" 22 | additional_executables_destination_path: "" 23 | -------------------------------------------------------------------------------- /images/capi/ansible/windows/roles/load_additional_components/tasks/main.yml: -------------------------------------------------------------------------------- 1 | # Copyright 2021 The Kubernetes Authors. 2 | 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | - ansible.builtin.import_tasks: executables.yml 16 | when: additional_executables | bool 17 | 18 | - ansible.builtin.import_tasks: registry.yml 19 | when: additional_registry_images | bool 20 | 21 | - ansible.builtin.import_tasks: url.yml 22 | when: additional_url_images | bool 23 | -------------------------------------------------------------------------------- /images/capi/ansible/windows/roles/providers/defaults/main.yml: -------------------------------------------------------------------------------- 1 | # Copyright 2021 The Kubernetes Authors. 2 | 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | packer_builder_type: "" 16 | -------------------------------------------------------------------------------- /images/capi/ansible/windows/roles/providers/files/vmware/vmtools/tools.conf: -------------------------------------------------------------------------------- 1 | [guestinfo] 2 | exclude-nics=vEthernet*,antrea-*,cali*,cilium*,lxc*,ovs-system,flannel*,veth*,vxlan_sys_*,genev_sys_*,gre_sys_*,stt_sys_*,????????-?????? 3 | -------------------------------------------------------------------------------- /images/capi/ansible/windows/roles/providers/tasks/main.yml: -------------------------------------------------------------------------------- 1 | # you may not use this file except in compliance with the License. 2 | # You may obtain a copy of the License at 3 | 4 | # http://www.apache.org/licenses/LICENSE-2.0 5 | 6 | # Unless required by applicable law or agreed to in writing, software 7 | # distributed under the License is distributed on an "AS IS" BASIS, 8 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 9 | # See the License for the specific language governing permissions and 10 | # limitations under the License. 11 | --- 12 | - ansible.builtin.include_tasks: azure.yml 13 | when: packer_builder_type.startswith('azure') 14 | 15 | - ansible.builtin.include_tasks: vmware.yml 16 | when: packer_builder_type is search('vmware') or packer_builder_type is search('vsphere') 17 | -------------------------------------------------------------------------------- /images/capi/ansible/windows/roles/providers/tasks/vmware.yml: -------------------------------------------------------------------------------- 1 | # Copyright 2024 The Kubernetes Authors. 2 | 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | - name: Create provider vmtools config file 16 | ansible.windows.win_copy: 17 | src: vmware/vmtools/tools.conf 18 | dest: 'C:\ProgramData\VMware\VMware Tools\tools.conf' 19 | -------------------------------------------------------------------------------- /images/capi/ansible/windows/roles/runtimes/defaults/main.yml: -------------------------------------------------------------------------------- 1 | # Copyright 2020 The Kubernetes Authors. 2 | 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | pause_image: mcr.microsoft.com/oss/kubernetes/pause:3.9 16 | containerd_additional_settings: "" 17 | containerd_config_file: config.toml 18 | 19 | prepull: false 20 | prepull_images: 21 | 2019: 22 | - mcr.microsoft.com/windows/servercore:ltsc2019 23 | - mcr.microsoft.com/windows/nanoserver:1809 24 | - "{{ pause_image }}" 25 | -------------------------------------------------------------------------------- /images/capi/ansible/windows/roles/runtimes/tasks/main.yml: -------------------------------------------------------------------------------- 1 | # Copyright 2020 The Kubernetes Authors. 2 | 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | - ansible.builtin.import_tasks: containerd.yml 16 | when: runtime == "containerd" 17 | -------------------------------------------------------------------------------- /images/capi/ansible/windows/roles/systemprep/defaults/main.yml: -------------------------------------------------------------------------------- 1 | # Copyright 2020 The Kubernetes Authors. 2 | 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | windows_updates_kbs_numbers: "{{ (windows_updates_kbs | default('')) | split | select('string') | list }}" 16 | windows_updates_category_names: "{{ (windows_updates_categories | default('')) | split | select('string') | list }}" 17 | ssh_source_url: "{{ ssh_source_url if ssh_source_url is defined else '' }}" 18 | -------------------------------------------------------------------------------- /images/capi/ansible/windows/roles/systemprep/tasks/ssh-feature.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Copyright 2021 The Kubernetes Authors. 3 | 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | # Requires admin rights to install 17 | # https://docs.ansible.com/ansible/latest/user_guide/become.html#become-and-windows 18 | - name: Install OpenSSH 19 | ansible.windows.win_shell: Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0 20 | become: true 21 | become_method: runas 22 | become_user: SYSTEM 23 | -------------------------------------------------------------------------------- /images/capi/azure_targets.sh: -------------------------------------------------------------------------------- 1 | VHD_TARGETS="ubuntu-2004 ubuntu-2204 ubuntu-2404 centos-7 mariner-2 azurelinux-3 rhel-8 windows-2019-containerd windows-2022-containerd" 2 | VHD_CI_TARGETS="ubuntu-2204 ubuntu-2404 azurelinux-3 windows-2022-containerd" 3 | SIG_TARGETS="ubuntu-2004 ubuntu-2204 ubuntu-2404 centos-7 mariner-2 azurelinux-3 rhel-8 windows-2019-containerd windows-2022-containerd windows-2025-containerd flatcar" 4 | SIG_CI_TARGETS="ubuntu-2204 ubuntu-2404 azurelinux-3 windows-2022-containerd windows-2025-containerd flatcar" 5 | SIG_GEN2_TARGETS="ubuntu-2004 ubuntu-2204 ubuntu-2404 centos-7 mariner-2 azurelinux-3 flatcar" 6 | SIG_GEN2_CI_TARGETS="ubuntu-2204 ubuntu-2404 azurelinux-3 flatcar" 7 | SIG_CVM_TARGETS="ubuntu-2004 ubuntu-2204 ubuntu-2404 windows-2019-containerd windows-2022-containerd" 8 | SIG_CVM_CI_TARGETS="ubuntu-2204 ubuntu-2404 windows-2022-containerd" 9 | -------------------------------------------------------------------------------- /images/capi/cloudinit/.gitignore: -------------------------------------------------------------------------------- 1 | /*.iso 2 | /*.tar.gz 3 | /.cidata-* -------------------------------------------------------------------------------- /images/capi/cloudinit/Makefile: -------------------------------------------------------------------------------- 1 | all: build 2 | 3 | CONFIG_DIR ?= .cidata-$(shell date +%s) 4 | CONFIG_DIR ?= $(abspath $(CONFIG_DIR)) 5 | 6 | ifneq (,$(strip $(KUBERNETES_VERSION))) 7 | ISO ?= cidata-$(KUBERNETES_VERSION).iso 8 | endif 9 | ISO ?= cidata.iso 10 | ISO := $(abspath $(ISO)) 11 | 12 | $(ISO): 13 | @rm -f $@ 14 | @mkdir -p $(CONFIG_DIR) && cp user-data meta-data $(CONFIG_DIR)/ 15 | ifneq (,$(strip $(KUBERNETES_VERSION))) 16 | sed 's/kubernetesVersion: v1.13.6/kubernetesVersion: $(KUBERNETES_VERSION)/' >$(CONFIG_DIR)/user-data /dev/null))) 20 | cd $(CONFIG_DIR) && genisoimage -output $@ -volid cidata -joliet -rock user-data meta-data 21 | else 22 | hdiutil makehybrid -o $@ -hfs -joliet -iso -default-volume-name cidata $(CONFIG_DIR) 23 | endif 24 | @rm -fr $(CONFIG_DIR) 25 | .PHONY: $(ISO) 26 | 27 | build: $(ISO) 28 | 29 | clean: 30 | rm -fr .cidata-* *.iso *.tar.gz 31 | .PHONY: clean 32 | -------------------------------------------------------------------------------- /images/capi/cloudinit/README.md: -------------------------------------------------------------------------------- 1 | # Cloud-init Test Data 2 | 3 | The files in this directory: 4 | 5 | * **Are** example data used for testing 6 | * Are **not** included in any of the images 7 | * Should **not** be used in production systems 8 | -------------------------------------------------------------------------------- /images/capi/cloudinit/id_rsa.capi.pub: -------------------------------------------------------------------------------- 1 | ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDFIKszT265HYuhwWJ3CwozCKXI3y94bQoocQf1/ERq7XkWJ57W3rkbpMXtM0l1IKfhjnkRzFkXDa5WgRYFvAosh68LeKmYhoJYOKnyvx/nYBT/aYWdLu/edgv8T8GYKG1MiU6RdNvsGsXIAKhknBtcsmTcR2niEwOmXQ5M/P3oMswWk+4WIcWyJU6BWAQbK/alVn5kIRQFas47k6Pkm1Tg7TKv+MOX6JPzv8gOqxvqcXFKoEcTthC2JsKvmRwAOtLrBHh5BMzOKV9G+CnmgzmM/p6qU1nfebvDNuBtzThURP0lTcJGmf+g5WtbJ8vdUd+MAFZGpvoARl1v1s4Ubked capi 2 | -------------------------------------------------------------------------------- /images/capi/cloudinit/meta-data: -------------------------------------------------------------------------------- 1 | cleanup-guestinfo: 2 | - userdata 3 | instance-id: iid-capi 4 | local-hostname: capi.vm 5 | network: 6 | version: 2 7 | ethernets: 8 | nics: 9 | match: 10 | name: ens* 11 | dhcp4: yes 12 | dhcp6: yes 13 | -------------------------------------------------------------------------------- /images/capi/hack/get-project-maintainers.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # Copyright 2023 The Kubernetes Authors. 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); 6 | # you may not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | 17 | set -euo pipefail 18 | 19 | REPO_ROOT=$(dirname "${BASH_SOURCE[0]}")/../../.. 20 | 21 | KEYS=() 22 | while IFS='' read -r line; do KEYS+=("$line"); done < <(yq e '.aliases["image-builder-maintainers"][]' ${REPO_ROOT}/OWNERS_ALIASES) 23 | echo "${KEYS[@]/#/@}" 24 | -------------------------------------------------------------------------------- /images/capi/hack/image-grok-latest-flatcar-version.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -ue 2 | 3 | [[ -n ${DEBUG:-} ]] && set -o xtrace 4 | 5 | channel="$1" 6 | 7 | curl -L -s \ 8 | "https://www.flatcar.org/releases-json/releases-$channel.json" \ 9 | | jq -r 'to_entries[] | "\(.key)"' \ 10 | | grep -v "current" \ 11 | | sort --version-sort \ 12 | | tail -n1 13 | -------------------------------------------------------------------------------- /images/capi/kubevirt-Dockerfile: -------------------------------------------------------------------------------- 1 | FROM registry.access.redhat.com/ubi8/ubi:latest AS builder 2 | ADD --chown=107:107 /disk/image.qcow2 3 | 4 | FROM scratch 5 | COPY --from=builder /disk/* /disk/ 6 | -------------------------------------------------------------------------------- /images/capi/packer/.gitignore: -------------------------------------------------------------------------------- 1 | /packer_cache/ 2 | /output-*/ 3 | /output/ -------------------------------------------------------------------------------- /images/capi/packer/ami/OWNERS: -------------------------------------------------------------------------------- 1 | # See the OWNERS docs at https://go.k8s.io/owners 2 | 3 | approvers: 4 | - cluster-api-aws-maintainers 5 | -------------------------------------------------------------------------------- /images/capi/packer/ami/amazon-2.json: -------------------------------------------------------------------------------- 1 | { 2 | "ami_filter_arch": "x86_64", 3 | "ami_filter_name": "amzn2-ami-hvm-2*", 4 | "ami_filter_owners": "amazon", 5 | "arch": "amd64", 6 | "build_name": "amazon-2", 7 | "distribution": "Amazon Linux", 8 | "distribution_release": "Amazon Linux 2", 9 | "distribution_version": "2", 10 | "distro_version": "2", 11 | "root_device_name": "/dev/xvda", 12 | "source_ami": "", 13 | "ssh_username": "ec2-user" 14 | } 15 | -------------------------------------------------------------------------------- /images/capi/packer/ami/amazon-2023.json: -------------------------------------------------------------------------------- 1 | { 2 | "ami_filter_arch": "x86_64", 3 | "ami_filter_name": "al2023-ami-minimal-2023.*-kernel-6.1*", 4 | "ami_filter_owners": "amazon", 5 | "arch": "amd64", 6 | "build_name": "amazon-2023", 7 | "distribution": "Amazon Linux", 8 | "distribution_release": "Amazon Linux 2023", 9 | "distribution_version": "2023", 10 | "distro_version": "2023", 11 | "epel_rpm_gpg_key": "", 12 | "redhat_epel_rpm": "", 13 | "root_device_name": "/dev/xvda", 14 | "source_ami": "", 15 | "ssh_username": "ec2-user" 16 | } 17 | -------------------------------------------------------------------------------- /images/capi/packer/ami/centos-7.json: -------------------------------------------------------------------------------- 1 | { 2 | "ami_filter_arch": "x86_64", 3 | "ami_filter_name": "CentOS Linux 7 x86_64 HVM EBS ENA*", 4 | "ami_filter_owners": "461800378586", 5 | "arch": "amd64", 6 | "build_name": "centos-7", 7 | "distribution": "CentOS", 8 | "distribution_release": "Core", 9 | "distribution_version": "7", 10 | "root_device_name": "/dev/sda1", 11 | "source_ami": "", 12 | "ssh_username": "centos" 13 | } 14 | -------------------------------------------------------------------------------- /images/capi/packer/ami/flatcar-arm64.json: -------------------------------------------------------------------------------- 1 | { 2 | "ami_filter_arch": "arm64", 3 | "ami_filter_name": "Flatcar*{{env `FLATCAR_CHANNEL`}}*{{env `FLATCAR_VERSION`}}*", 4 | "ami_filter_owners": "075585003325", 5 | "ansible_extra_vars": "ansible_python_interpreter=/opt/bin/python", 6 | "arch": "arm64", 7 | "build_name": "flatcar-{{env `FLATCAR_CHANNEL`}}", 8 | "builder_instance_type": "t4g.small", 9 | "crictl_arch": "arm64", 10 | "crictl_source_type": "http", 11 | "distribution": "flatcar", 12 | "goss_arch": "arm64", 13 | "kubernetes_cni_http_checksum_arch": "arm64", 14 | "kubernetes_cni_source_type": "http", 15 | "kubernetes_goarch": "arm64", 16 | "kubernetes_source_type": "http", 17 | "python_path": "/opt/bin/builder-env/site-packages", 18 | "root_device_name": "/dev/xvda", 19 | "ssh_username": "core", 20 | "systemd_prefix": "/etc/systemd", 21 | "sysusr_prefix": "/opt", 22 | "sysusrlocal_prefix": "/opt", 23 | "user_data": "", 24 | "user_data_file": "packer/files/flatcar/ignition/bootstrap-cloud.json" 25 | } 26 | -------------------------------------------------------------------------------- /images/capi/packer/ami/flatcar.json: -------------------------------------------------------------------------------- 1 | { 2 | "ami_filter_arch": "x86_64", 3 | "ami_filter_name": "Flatcar*{{env `FLATCAR_CHANNEL`}}*{{env `FLATCAR_VERSION`}}*", 4 | "ami_filter_owners": "075585003325", 5 | "ansible_extra_vars": "ansible_python_interpreter=/opt/bin/python", 6 | "arch": "amd64", 7 | "build_name": "flatcar-{{env `FLATCAR_CHANNEL`}}", 8 | "crictl_source_type": "http", 9 | "distribution": "flatcar", 10 | "kubernetes_cni_source_type": "http", 11 | "kubernetes_source_type": "http", 12 | "python_path": "/opt/bin/builder-env/site-packages", 13 | "root_device_name": "/dev/xvda", 14 | "ssh_username": "core", 15 | "systemd_prefix": "/etc/systemd", 16 | "sysusr_prefix": "/opt", 17 | "sysusrlocal_prefix": "/opt", 18 | "user_data": "", 19 | "user_data_file": "packer/files/flatcar/ignition/bootstrap-cloud.json" 20 | } 21 | -------------------------------------------------------------------------------- /images/capi/packer/ami/rhel-8.json: -------------------------------------------------------------------------------- 1 | { 2 | "ami_filter_arch": "x86_64", 3 | "ami_filter_name": "RHEL-8.6.0_HVM-*", 4 | "ami_filter_owners": "309956199498", 5 | "arch": "amd64", 6 | "build_name": "rhel-8", 7 | "builder_instance_type": "m5.large", 8 | "distribution": "rhel", 9 | "distribution_release": "Enterprise", 10 | "distribution_version": "8", 11 | "epel_rpm_gpg_key": "https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-8", 12 | "redhat_epel_rpm": "https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm", 13 | "root_device_name": "/dev/sda1", 14 | "source_ami": "", 15 | "ssh_username": "ec2-user", 16 | "volume_size": "10" 17 | } 18 | -------------------------------------------------------------------------------- /images/capi/packer/ami/rockylinux-8.json: -------------------------------------------------------------------------------- 1 | { 2 | "ami_filter_arch": "x86_64", 3 | "ami_filter_name": "Rocky-8-ec2-8.5-*", 4 | "ami_filter_owners": "679593333241", 5 | "arch": "amd64", 6 | "build_name": "rockylinux-8", 7 | "distribution": "rockylinux", 8 | "distribution_release": "Core", 9 | "distribution_version": "8", 10 | "epel_rpm_gpg_key": "https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-8", 11 | "redhat_epel_rpm": "https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm", 12 | "root_device_name": "/dev/sda1", 13 | "source_ami": "", 14 | "ssh_username": "rocky", 15 | "volume_size": "10" 16 | } 17 | -------------------------------------------------------------------------------- /images/capi/packer/ami/ubuntu-2004.json: -------------------------------------------------------------------------------- 1 | { 2 | "ami_filter_arch": "x86_64", 3 | "ami_filter_name": "ubuntu/images/*ubuntu-focal-20.04-amd64-server-*", 4 | "ami_filter_owners": "099720109477", 5 | "arch": "amd64", 6 | "build_name": "ubuntu-20.04", 7 | "distribution": "Ubuntu", 8 | "distribution_release": "focal", 9 | "distribution_version": "20.04", 10 | "root_device_name": "/dev/sda1", 11 | "source_ami": "", 12 | "ssh_username": "ubuntu" 13 | } 14 | -------------------------------------------------------------------------------- /images/capi/packer/ami/ubuntu-2204.json: -------------------------------------------------------------------------------- 1 | { 2 | "ami_filter_arch": "x86_64", 3 | "ami_filter_name": "ubuntu/images/*ubuntu-jammy-22.04-amd64-server-*", 4 | "ami_filter_owners": "099720109477", 5 | "ansible_extra_vars": "", 6 | "arch": "amd64", 7 | "build_name": "ubuntu-22.04", 8 | "distribution": "Ubuntu", 9 | "distribution_release": "jammy", 10 | "distribution_version": "22.04", 11 | "root_device_name": "/dev/sda1", 12 | "source_ami": "", 13 | "ssh_username": "ubuntu" 14 | } 15 | -------------------------------------------------------------------------------- /images/capi/packer/ami/ubuntu-2404.json: -------------------------------------------------------------------------------- 1 | { 2 | "ami_filter_arch": "x86_64", 3 | "ami_filter_name": "ubuntu/images/*ubuntu-noble-24.04-amd64-server-*", 4 | "ami_filter_owners": "099720109477", 5 | "ansible_extra_vars": "", 6 | "arch": "amd64", 7 | "build_name": "ubuntu-24.04", 8 | "distribution": "Ubuntu", 9 | "distribution_release": "noble", 10 | "distribution_version": "24.04", 11 | "root_device_name": "/dev/sda1", 12 | "source_ami": "", 13 | "ssh_username": "ubuntu" 14 | } 15 | -------------------------------------------------------------------------------- /images/capi/packer/ami/windows-2019.json: -------------------------------------------------------------------------------- 1 | { 2 | "ami_filter_name": "Windows_Server-2019-English-Full-HyperV-*", 3 | "ami_filter_owners": "amazon", 4 | "build_name": "windows-2019", 5 | "distribution": "windows", 6 | "distribution_version": "2019", 7 | "root_device_name": "/dev/sda1", 8 | "source_ami": "", 9 | "windows_updates_kbs": "KB4588962 KB2267602" 10 | } 11 | -------------------------------------------------------------------------------- /images/capi/packer/azure/.pipelines/k8s-config.yaml: -------------------------------------------------------------------------------- 1 | steps: 2 | - script: | 3 | KUBERNETES_RELEASE=$(echo ${KUBERNETES_VERSION} | cut -d "." -f -2) 4 | sed -i "s/^ \"kubernetes_series\".*/ \"kubernetes_series\": \"v${KUBERNETES_RELEASE}\",/g" kubernetes.json 5 | sed -i "s/^ \"kubernetes_semver\".*/ \"kubernetes_semver\": \"v${KUBERNETES_VERSION}\",/g" kubernetes.json 6 | sed -i "s/^ \"kubernetes_rpm_version\".*/ \"kubernetes_rpm_version\": \"${KUBERNETES_VERSION}\",/g" kubernetes.json 7 | sed -i "s/^ \"kubernetes_deb_version\".*/ \"kubernetes_deb_version\": \"${KUBERNETES_VERSION}-1.1\",/g" kubernetes.json 8 | cat kubernetes.json 9 | displayName: Write configuration files 10 | workingDirectory: '$(system.defaultWorkingDirectory)/images/capi/packer/config' 11 | -------------------------------------------------------------------------------- /images/capi/packer/azure/OWNERS: -------------------------------------------------------------------------------- 1 | # See the OWNERS docs at https://go.k8s.io/owners 2 | 3 | approvers: 4 | - cluster-api-azure-maintainers 5 | 6 | reviewers: 7 | - cluster-api-azure-maintainers 8 | - image-builder-azure-reviewers 9 | -------------------------------------------------------------------------------- /images/capi/packer/azure/azure-config.json: -------------------------------------------------------------------------------- 1 | { 2 | "azure_location": "{{env `AZURE_LOCATION`}}", 3 | "client_id": "{{env `AZURE_CLIENT_ID`}}", 4 | "client_secret": "{{env `AZURE_CLIENT_SECRET`}}", 5 | "containerd_wasm_shims_runtimes": "lunatic,slight,spin,wws", 6 | "subscription_id": "{{env `AZURE_SUBSCRIPTION_ID`}}", 7 | "use_azure_cli_auth": "{{env `USE_AZURE_CLI_AUTH`}}", 8 | "vm_size": "Standard_B2ms" 9 | } 10 | -------------------------------------------------------------------------------- /images/capi/packer/azure/azure-sig-cvm.json: -------------------------------------------------------------------------------- 1 | { 2 | "image_name": "capi-{{user `distribution`}}-{{user `distribution_version`}}-cvm", 3 | "replication_regions": "{{env `AZURE_LOCATION`}}", 4 | "resource_group_name": "{{env `RESOURCE_GROUP_NAME`}}", 5 | "shared_image_gallery_name": "{{env `GALLERY_NAME`}}", 6 | "sig_image_version": "0.3.{{user `build_timestamp`}}" 7 | } 8 | -------------------------------------------------------------------------------- /images/capi/packer/azure/azure-sig-gen2.json: -------------------------------------------------------------------------------- 1 | { 2 | "image_name": "capi-{{user `distribution`}}-{{user `distribution_version`}}-gen2", 3 | "replication_regions": "{{env `AZURE_LOCATION`}}", 4 | "resource_group_name": "{{env `RESOURCE_GROUP_NAME`}}", 5 | "shared_image_gallery_name": "{{env `GALLERY_NAME`}}", 6 | "sig_image_version": "0.3.{{user `build_timestamp`}}" 7 | } 8 | -------------------------------------------------------------------------------- /images/capi/packer/azure/azure-sig.json: -------------------------------------------------------------------------------- 1 | { 2 | "image_name": "capi-{{user `distribution`}}-{{user `distribution_version`}}", 3 | "replication_regions": "{{env `AZURE_LOCATION`}}", 4 | "resource_group_name": "{{env `RESOURCE_GROUP_NAME`}}", 5 | "shared_image_gallery_name": "{{env `GALLERY_NAME`}}", 6 | "sig_image_version": "0.3.{{user `build_timestamp`}}" 7 | } 8 | -------------------------------------------------------------------------------- /images/capi/packer/azure/azure-vhd.json: -------------------------------------------------------------------------------- 1 | { 2 | "capture_container_name": "cluster-api-vhds", 3 | "resource_group_name": "{{env `RESOURCE_GROUP_NAME`}}", 4 | "storage_account_name": "{{env `STORAGE_ACCOUNT_NAME`}}" 5 | } 6 | -------------------------------------------------------------------------------- /images/capi/packer/azure/azurelinux-3-gen2.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "azurelinux-3-gen2", 3 | "distribution": "azurelinux", 4 | "distribution_release": "azure-linux-gen2", 5 | "distribution_version": "3", 6 | "image_offer": "azure-linux-3", 7 | "image_publisher": "MicrosoftCBLMariner", 8 | "image_sku": "azure-linux-3-gen2" 9 | } 10 | -------------------------------------------------------------------------------- /images/capi/packer/azure/azurelinux-3.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "azurelinux-3", 3 | "distribution": "azurelinux", 4 | "distribution_release": "azure-linux-3", 5 | "distribution_version": "3", 6 | "image_offer": "azure-linux-3", 7 | "image_publisher": "MicrosoftCBLMariner", 8 | "image_sku": "azure-linux-3" 9 | } 10 | -------------------------------------------------------------------------------- /images/capi/packer/azure/centos-7-gen2.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "centos-7-gen2", 3 | "distribution": "centos", 4 | "distribution_release": "centos-7", 5 | "distribution_version": "7", 6 | "image_offer": "CentOS", 7 | "image_publisher": "OpenLogic", 8 | "image_sku": "7_7-gen2" 9 | } 10 | -------------------------------------------------------------------------------- /images/capi/packer/azure/centos-7.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "centos-7", 3 | "distribution": "centos", 4 | "distribution_release": "centos-7", 5 | "distribution_version": "7", 6 | "image_offer": "CentOS", 7 | "image_publisher": "OpenLogic", 8 | "image_sku": "7.7" 9 | } 10 | -------------------------------------------------------------------------------- /images/capi/packer/azure/config.pkr.hcl: -------------------------------------------------------------------------------- 1 | packer { 2 | required_plugins { 3 | azure = { 4 | version = ">= 2.1.8" 5 | source = "github.com/hashicorp/azure" 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /images/capi/packer/azure/mariner-2-gen2.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "mariner-2-gen2", 3 | "distribution": "mariner", 4 | "distribution_release": "cbl-mariner-2", 5 | "distribution_version": "2", 6 | "image_offer": "cbl-mariner", 7 | "image_publisher": "MicrosoftCBLMariner", 8 | "image_sku": "cbl-mariner-2-gen2" 9 | } 10 | -------------------------------------------------------------------------------- /images/capi/packer/azure/mariner-2.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "mariner-2", 3 | "distribution": "mariner", 4 | "distribution_release": "cbl-mariner-2", 5 | "distribution_version": "2", 6 | "image_offer": "cbl-mariner", 7 | "image_publisher": "MicrosoftCBLMariner", 8 | "image_sku": "cbl-mariner-2" 9 | } 10 | -------------------------------------------------------------------------------- /images/capi/packer/azure/rhel-8.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "rhel-8", 3 | "distribution": "rhel", 4 | "distribution_release": "rhel-8", 5 | "distribution_version": "8", 6 | "epel_rpm_gpg_key": "https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-8", 7 | "image_offer": "RHEL", 8 | "image_publisher": "RedHat", 9 | "image_sku": "8_7", 10 | "redhat_epel_rpm": "https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm" 11 | } 12 | -------------------------------------------------------------------------------- /images/capi/packer/azure/scripts/disable-windows-prepull.json: -------------------------------------------------------------------------------- 1 | { 2 | "prepull": "false" 3 | } 4 | -------------------------------------------------------------------------------- /images/capi/packer/azure/scripts/test-templates/linux/kustomization.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: kustomize.config.k8s.io/v1beta1 2 | kind: Kustomization 3 | resources: 4 | - https://github.com/kubernetes-sigs/cluster-api-provider-azure/releases/download/v1.13.0/cluster-template.yaml 5 | patches: 6 | - path: ../patches/azuremachinetemplate-controlplane.yaml 7 | - path: ../patches/azuremachinetemplate-workload.yaml 8 | -------------------------------------------------------------------------------- /images/capi/packer/azure/scripts/test-templates/patches/azuremachinetemplate-controlplane.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: infrastructure.cluster.x-k8s.io/v1beta1 2 | kind: AzureMachineTemplate 3 | metadata: 4 | name: ${CLUSTER_NAME}-control-plane 5 | namespace: default 6 | spec: 7 | template: 8 | spec: 9 | image: 10 | id: ${MANAGED_IMAGE_ID} 11 | --- -------------------------------------------------------------------------------- /images/capi/packer/azure/scripts/test-templates/patches/azuremachinetemplate-windows.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: infrastructure.cluster.x-k8s.io/v1beta1 2 | kind: AzureMachineTemplate 3 | metadata: 4 | name: ${CLUSTER_NAME}-md-win 5 | namespace: default 6 | spec: 7 | template: 8 | spec: 9 | image: 10 | id: ${MANAGED_IMAGE_ID} 11 | --- -------------------------------------------------------------------------------- /images/capi/packer/azure/scripts/test-templates/patches/azuremachinetemplate-workload.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: infrastructure.cluster.x-k8s.io/v1beta1 2 | kind: AzureMachineTemplate 3 | metadata: 4 | name: ${CLUSTER_NAME}-md-0 5 | namespace: default 6 | spec: 7 | template: 8 | spec: 9 | image: 10 | id: ${MANAGED_IMAGE_ID} 11 | --- -------------------------------------------------------------------------------- /images/capi/packer/azure/scripts/test-templates/patches/kubeadmcontrolplane-windows.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: controlplane.cluster.x-k8s.io/v1beta1 2 | kind: KubeadmControlPlane 3 | metadata: 4 | name: ${CLUSTER_NAME}-control-plane 5 | namespace: default 6 | spec: 7 | version: ${KUBERNETES_BOOTSTRAP_VERSION} 8 | --- -------------------------------------------------------------------------------- /images/capi/packer/azure/scripts/test-templates/patches/machinedeployment-windows.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: cluster.x-k8s.io/v1beta1 2 | kind: MachineDeployment 3 | metadata: 4 | name: ${CLUSTER_NAME}-md-0 5 | namespace: default 6 | spec: 7 | replicas: 0 8 | --- -------------------------------------------------------------------------------- /images/capi/packer/azure/scripts/test-templates/windows/kustomization.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: kustomize.config.k8s.io/v1beta1 2 | kind: Kustomization 3 | resources: 4 | - https://github.com/kubernetes-sigs/cluster-api-provider-azure/releases/download/v1.13.0/cluster-template-windows.yaml 5 | patches: 6 | - path: ../patches/azuremachinetemplate-windows.yaml 7 | - path: ../patches/kubeadmcontrolplane-windows.yaml 8 | - path: ../patches/machinedeployment-windows.yaml 9 | -------------------------------------------------------------------------------- /images/capi/packer/azure/ubuntu-2004-cvm.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "ubuntu-2004-cvm", 3 | "distribution": "ubuntu", 4 | "distribution_release": "focal", 5 | "distribution_version": "2004", 6 | "image_offer": "0001-com-ubuntu-confidential-vm-focal", 7 | "image_publisher": "Canonical", 8 | "image_sku": "20_04-lts-cvm" 9 | } 10 | -------------------------------------------------------------------------------- /images/capi/packer/azure/ubuntu-2004-gen2.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "ubuntu-2004-gen2", 3 | "distribution": "ubuntu", 4 | "distribution_release": "focal", 5 | "distribution_version": "2004", 6 | "image_offer": "0001-com-ubuntu-server-focal", 7 | "image_publisher": "Canonical", 8 | "image_sku": "20_04-lts-gen2" 9 | } 10 | -------------------------------------------------------------------------------- /images/capi/packer/azure/ubuntu-2004.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "ubuntu-2004", 3 | "distribution": "ubuntu", 4 | "distribution_release": "focal", 5 | "distribution_version": "2004", 6 | "image_offer": "0001-com-ubuntu-server-focal", 7 | "image_publisher": "Canonical", 8 | "image_sku": "20_04-lts" 9 | } 10 | -------------------------------------------------------------------------------- /images/capi/packer/azure/ubuntu-2204-cvm.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "ubuntu-2204-cvm", 3 | "distribution": "ubuntu", 4 | "distribution_release": "jammy", 5 | "distribution_version": "2204", 6 | "image_offer": "0001-com-ubuntu-confidential-vm-jammy", 7 | "image_publisher": "Canonical", 8 | "image_sku": "22_04-lts-cvm" 9 | } 10 | -------------------------------------------------------------------------------- /images/capi/packer/azure/ubuntu-2204-gen2.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "ubuntu-2204-gen2", 3 | "distribution": "ubuntu", 4 | "distribution_release": "jammy", 5 | "distribution_version": "2204", 6 | "image_offer": "0001-com-ubuntu-server-jammy", 7 | "image_publisher": "Canonical", 8 | "image_sku": "22_04-lts-gen2" 9 | } 10 | -------------------------------------------------------------------------------- /images/capi/packer/azure/ubuntu-2204.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "ubuntu-2204", 3 | "distribution": "ubuntu", 4 | "distribution_release": "jammy", 5 | "distribution_version": "2204", 6 | "image_offer": "0001-com-ubuntu-server-jammy", 7 | "image_publisher": "Canonical", 8 | "image_sku": "22_04-lts" 9 | } 10 | -------------------------------------------------------------------------------- /images/capi/packer/azure/ubuntu-2404-cvm.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "ubuntu-2404-cvm", 3 | "distribution": "ubuntu", 4 | "distribution_release": "noble", 5 | "distribution_version": "2404", 6 | "image_offer": "ubuntu-24_04-lts", 7 | "image_publisher": "Canonical", 8 | "image_sku": "cvm" 9 | } 10 | -------------------------------------------------------------------------------- /images/capi/packer/azure/ubuntu-2404-gen2.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "ubuntu-2404-gen2", 3 | "distribution": "ubuntu", 4 | "distribution_release": "noble", 5 | "distribution_version": "2404", 6 | "image_offer": "ubuntu-24_04-lts", 7 | "image_publisher": "Canonical", 8 | "image_sku": "server" 9 | } 10 | -------------------------------------------------------------------------------- /images/capi/packer/azure/ubuntu-2404.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "ubuntu-2404", 3 | "distribution": "ubuntu", 4 | "distribution_release": "noble", 5 | "distribution_version": "2404", 6 | "image_offer": "ubuntu-24_04-lts", 7 | "image_publisher": "Canonical", 8 | "image_sku": "server-gen1" 9 | } 10 | -------------------------------------------------------------------------------- /images/capi/packer/azure/windows-2019-containerd-cvm.json: -------------------------------------------------------------------------------- 1 | { 2 | "additional_registry_images": "false", 3 | "additional_registry_images_list": "", 4 | "build_name": "windows-2019-containerd-cvm", 5 | "distribution": "windows", 6 | "distribution_version": "2019", 7 | "image_offer": "windows-cvm", 8 | "image_publisher": "MicrosoftWindowsServer", 9 | "image_sku": "2019-datacenter-cvm", 10 | "image_version": "latest", 11 | "load_additional_components": "false", 12 | "runtime": "containerd", 13 | "vm_size": "Standard_D4s_v3", 14 | "windows_updates_kbs": "" 15 | } 16 | -------------------------------------------------------------------------------- /images/capi/packer/azure/windows-2019-containerd.json: -------------------------------------------------------------------------------- 1 | { 2 | "additional_registry_images": "false", 3 | "additional_registry_images_list": "", 4 | "build_name": "windows-2019-containerd", 5 | "distribution": "windows", 6 | "distribution_version": "2019", 7 | "image_offer": "WindowsServer", 8 | "image_publisher": "MicrosoftWindowsServer", 9 | "image_sku": "2019-datacenter-core-smalldisk", 10 | "image_version": "17763.6293.240905", 11 | "load_additional_components": "false", 12 | "runtime": "containerd", 13 | "vm_size": "Standard_D4s_v3", 14 | "windows_updates_kbs": "" 15 | } 16 | -------------------------------------------------------------------------------- /images/capi/packer/azure/windows-2022-containerd-cvm.json: -------------------------------------------------------------------------------- 1 | { 2 | "additional_registry_images": "false", 3 | "additional_registry_images_list": "", 4 | "build_name": "windows-2022-containerd-cvm", 5 | "distribution": "windows", 6 | "distribution_version": "2022", 7 | "image_offer": "windows-cvm", 8 | "image_publisher": "MicrosoftWindowsServer", 9 | "image_sku": "2022-datacenter-cvm", 10 | "image_version": "latest", 11 | "load_additional_components": "false", 12 | "runtime": "containerd", 13 | "vm_size": "Standard_D4s_v3", 14 | "windows_updates_kbs": "" 15 | } 16 | -------------------------------------------------------------------------------- /images/capi/packer/azure/windows-2022-containerd.json: -------------------------------------------------------------------------------- 1 | { 2 | "additional_registry_images": "false", 3 | "additional_registry_images_list": "", 4 | "build_name": "windows-2022-containerd", 5 | "distribution": "windows", 6 | "distribution_version": "2022", 7 | "image_offer": "WindowsServer", 8 | "image_publisher": "MicrosoftWindowsServer", 9 | "image_sku": "2022-Datacenter-Core-smalldisk", 10 | "image_version": "latest", 11 | "load_additional_components": "false", 12 | "runtime": "containerd", 13 | "vm_size": "Standard_D4s_v3", 14 | "windows_updates_kbs": "" 15 | } 16 | -------------------------------------------------------------------------------- /images/capi/packer/azure/windows-2025-containerd.json: -------------------------------------------------------------------------------- 1 | { 2 | "additional_registry_images": "false", 3 | "additional_registry_images_list": "", 4 | "build_name": "windows-2025-containerd", 5 | "distribution": "windows", 6 | "distribution_version": "2025", 7 | "image_offer": "WindowsServer", 8 | "image_publisher": "MicrosoftWindowsServer", 9 | "image_sku": "2025-Datacenter-Core-smalldisk", 10 | "image_version": "latest", 11 | "load_additional_components": "false", 12 | "runtime": "containerd", 13 | "vm_size": "Standard_D4s_v3", 14 | "windows_updates_kbs": "" 15 | } 16 | -------------------------------------------------------------------------------- /images/capi/packer/azure/windows-annual-containerd.json: -------------------------------------------------------------------------------- 1 | { 2 | "additional_registry_images": "false", 3 | "additional_registry_images_list": "", 4 | "build_name": "windows-annual-containerd", 5 | "distribution": "windows", 6 | "distribution_version": "annual", 7 | "load_additional_components": "false", 8 | "runtime": "containerd", 9 | "shared_image_gallery_name": "{{env `GALLERY_NAME`}}", 10 | "source_sig_image_name": "{{env `SOURCE_SIG_IMAGE_NAME`}}", 11 | "source_sig_image_version": "{{env `SOURCE_SIG_IMAGE_VERSION`}}", 12 | "source_sig_name": "{{env `SOURCE_SIG_NAME`}}", 13 | "source_sig_resource_group_name": "{{env `SOURCE_SIG_RESOURCE_GROUP`}}", 14 | "source_sig_subscription_id": "{{env `SOURCE_SIG_SUB_ID`}}", 15 | "storage_account_type": "Standard_LRS", 16 | "vm_size": "Standard_D4s_v3", 17 | "windows_updates_kbs": "", 18 | "wins_url": "" 19 | } 20 | -------------------------------------------------------------------------------- /images/capi/packer/config.pkr.hcl: -------------------------------------------------------------------------------- 1 | packer { 2 | required_plugins { 3 | ansible = { 4 | version = ">= 1.1.0" 5 | source = "github.com/hashicorp/ansible" 6 | } 7 | goss = { 8 | version = ">= 3.2.14" 9 | source = "github.com/YaleUniversity/goss" 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /images/capi/packer/config/additional_components.json: -------------------------------------------------------------------------------- 1 | { 2 | "additional_executables": "false", 3 | "additional_executables_destination_path": "", 4 | "additional_executables_list": "", 5 | "additional_registry_images": "false", 6 | "additional_registry_images_list": "", 7 | "additional_s3": "false", 8 | "additional_s3_access": "", 9 | "additional_s3_bucket": "", 10 | "additional_s3_ceph": "false", 11 | "additional_s3_destination_path": "", 12 | "additional_s3_endpoint": "", 13 | "additional_s3_object": "", 14 | "additional_s3_secret": "", 15 | "additional_url_images": "false", 16 | "additional_url_images_list": "", 17 | "load_additional_components": "false" 18 | } 19 | -------------------------------------------------------------------------------- /images/capi/packer/config/cni.json: -------------------------------------------------------------------------------- 1 | { 2 | "kubernetes_cni_deb_version": null, 3 | "kubernetes_cni_http_checksum": "sha256:https://storage.googleapis.com/k8s-artifacts-cni/release/{{ user `kubernetes_cni_semver` }}/cni-plugins-linux-{{ user `kubernetes_cni_http_checksum_arch` }}-{{ user `kubernetes_cni_semver` }}.tgz.sha256", 4 | "kubernetes_cni_http_checksum_arch": "amd64", 5 | "kubernetes_cni_http_source": "https://github.com/containernetworking/plugins/releases/download", 6 | "kubernetes_cni_rpm_version": null, 7 | "kubernetes_cni_semver": "v1.2.0", 8 | "kubernetes_cni_source_type": "pkg" 9 | } 10 | -------------------------------------------------------------------------------- /images/capi/packer/config/common.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_target": "virt", 3 | "debug_tools": "false", 4 | "disable_public_repos": "false", 5 | "extra_debs": "", 6 | "extra_repos": "", 7 | "extra_rpms": "", 8 | "firstboot_custom_roles_post": "", 9 | "firstboot_custom_roles_pre": "", 10 | "http_proxy": "", 11 | "https_proxy": "", 12 | "netplan_removal_excludes": "", 13 | "no_proxy": "", 14 | "node_custom_roles_post": "", 15 | "node_custom_roles_post_sysprep": "", 16 | "node_custom_roles_pre": "", 17 | "pause_image": "registry.k8s.io/pause:3.9", 18 | "pip_conf_file": "", 19 | "redhat_epel_rpm": "https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm", 20 | "reenable_public_repos": "true", 21 | "remove_extra_repos": "false", 22 | "ubuntu_repo": "http://us.archive.ubuntu.com/ubuntu", 23 | "ubuntu_security_repo": "http://security.ubuntu.com/ubuntu" 24 | } 25 | -------------------------------------------------------------------------------- /images/capi/packer/config/containerd.json: -------------------------------------------------------------------------------- 1 | { 2 | "containerd_additional_settings": null, 3 | "containerd_cri_socket": "/var/run/containerd/containerd.sock", 4 | "containerd_gvisor_runtime": "false", 5 | "containerd_gvisor_version": "latest", 6 | "containerd_sha256": "{{ if user `containerd_url` }}{{ user `containerd_url` }}.sha256sum{{ else }}041fa3cfd4e6689d37516e4c7752741df0974e7985d97258c1009b20f25f33c7{{ end }}", 7 | "containerd_sha256_windows": "{{ if user `containerd_url` }}{{ user `containerd_url` }}.sha256sum{{ else }}a51c9a7d625b393023e587fd76cec01d9025af23677c734bfca04506d06b0ac3{{ end }}", 8 | "containerd_version": "1.7.20" 9 | } 10 | -------------------------------------------------------------------------------- /images/capi/packer/config/ecr_credential_provider.json: -------------------------------------------------------------------------------- 1 | { 2 | "ecr_credential_provider": "false", 3 | "ecr_credential_provider_arch": "", 4 | "ecr_credential_provider_aws_profile": "", 5 | "ecr_credential_provider_base_url": "", 6 | "ecr_credential_provider_binary_filename": "", 7 | "ecr_credential_provider_install_dir": "", 8 | "ecr_credential_provider_match_images": "", 9 | "ecr_credential_provider_os": "", 10 | "ecr_credential_provider_version": "" 11 | } 12 | -------------------------------------------------------------------------------- /images/capi/packer/config/goss-args.json: -------------------------------------------------------------------------------- 1 | { 2 | "goss_arch": "amd64", 3 | "goss_download_path": "", 4 | "goss_entry_file": "goss/goss.yaml", 5 | "goss_format": "json", 6 | "goss_format_options": "pretty", 7 | "goss_inspect_mode": "false", 8 | "goss_remote_folder": "", 9 | "goss_remote_path": "", 10 | "goss_retry_timeout": "180s", 11 | "goss_skip_install": "false", 12 | "goss_sleep": "2s", 13 | "goss_tests_dir": "packer/goss", 14 | "goss_url": "", 15 | "goss_vars_file": "packer/goss/goss-vars.yaml", 16 | "goss_version": "0.3.23" 17 | } 18 | -------------------------------------------------------------------------------- /images/capi/packer/config/ppc64le/cni.json: -------------------------------------------------------------------------------- 1 | { 2 | "kubernetes_cni_http_checksum_arch": "ppc64le" 3 | } 4 | -------------------------------------------------------------------------------- /images/capi/packer/config/ppc64le/common.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_target": "raw" 3 | } 4 | -------------------------------------------------------------------------------- /images/capi/packer/config/ppc64le/containerd.json: -------------------------------------------------------------------------------- 1 | { 2 | "containerd_sha256": "b2d4e44946e55a10835a327cbd98c0c2063011bbdebb95ef8c5e5677312f1d29", 3 | "containerd_url": "https://github.com/containerd/containerd/releases/download/v{{user `containerd_version`}}/cri-containerd-cni-{{user `containerd_version`}}-linux-ppc64le.tar.gz", 4 | "containerd_version": "1.7.20" 5 | } 6 | -------------------------------------------------------------------------------- /images/capi/packer/config/ppc64le/kubernetes.json: -------------------------------------------------------------------------------- 1 | { 2 | "crictl_arch": "ppc64le", 3 | "kubernetes_rpm_repo_arch": "ppc64le" 4 | } 5 | -------------------------------------------------------------------------------- /images/capi/packer/config/wasm-shims.json: -------------------------------------------------------------------------------- 1 | { 2 | "containerd_wasm_shims_runtime_versions": "{\"lunatic\":\"v1\",\"slight\":\"v1\",\"spin\":\"v2\",\"wws\":\"v1\"}", 3 | "containerd_wasm_shims_runtimes": "", 4 | "containerd_wasm_shims_sha256": "{\"lunatic\":\"7054bc882db755ce5f3ded46d114bfd4e0a318e437fa18a2601295d20b616b32\",\"slight\":\"a6ea87d965037933a7d9edb5e20cfc175265c8e1ca92a16535f1f3c3f376f5b0\",\"spin\":\"dcffedb8e4d2f585a851b3de489fa1e8a0054ec0ad72cf111c623623919245d0\",\"wws\":\"e917f90692d798d80873aa0f37990c7d652f2846129d64fecbfd41ffa77799b8\"}", 5 | "containerd_wasm_shims_url": "https://github.com/deislabs/containerd-wasm-shims/releases/download/{{ user `containerd_wasm_shims_version` }}/containerd-wasm-shims---linux-x86_64.tar.gz", 6 | "containerd_wasm_shims_version": "v0.11.1" 7 | } 8 | -------------------------------------------------------------------------------- /images/capi/packer/config/windows/OWNERS: -------------------------------------------------------------------------------- 1 | # See the OWNERS docs at https://go.k8s.io/owners 2 | 3 | approvers: 4 | - image-builder-windows-maintainers 5 | -------------------------------------------------------------------------------- /images/capi/packer/config/windows/cloudbase-init.json: -------------------------------------------------------------------------------- 1 | { 2 | "cloudbase_init_version": "1.1.4", 3 | "cloudbase_real_time_clock_utc": "false" 4 | } 5 | -------------------------------------------------------------------------------- /images/capi/packer/config/windows/common.json: -------------------------------------------------------------------------------- 1 | { 2 | "additional_debug_files": "", 3 | "debug_tools": "true", 4 | "disable_hypervisor": "false", 5 | "http_proxy": "", 6 | "https_proxy": "", 7 | "netbios_host_name_compatibility": "true", 8 | "no_proxy": "", 9 | "nssm_url": "https://upstreamartifacts.azureedge.net/nssm/nssm.exe", 10 | "prepull": "true", 11 | "runtime": "containerd", 12 | "ssh_source_url": "", 13 | "windows_service_manager": "nssm", 14 | "windows_updates_categories": "", 15 | "windows_updates_kbs": "" 16 | } 17 | -------------------------------------------------------------------------------- /images/capi/packer/config/windows/containerd.json: -------------------------------------------------------------------------------- 1 | { 2 | "containerd_additional_settings": null, 3 | "containerd_url": "https://github.com/containerd/containerd/releases/download/v{{user `containerd_version`}}/containerd-{{user `containerd_version`}}-windows-amd64.tar.gz" 4 | } 5 | -------------------------------------------------------------------------------- /images/capi/packer/config/windows/kubernetes.json: -------------------------------------------------------------------------------- 1 | { 2 | "kubernetes_goarch": "amd64", 3 | "kubernetes_install_path": "c:\\k" 4 | } 5 | -------------------------------------------------------------------------------- /images/capi/packer/digitalocean/OWNERS: -------------------------------------------------------------------------------- 1 | # See the OWNERS docs at https://go.k8s.io/owners 2 | 3 | approvers: 4 | - cluster-api-digitalocean-maintainers 5 | reviewers: 6 | - cluster-api-digitalocean-maintainers 7 | -------------------------------------------------------------------------------- /images/capi/packer/digitalocean/centos-7.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "centos-7", 3 | "snapshot_name_suffix": "on CentOS 7", 4 | "source_image": "centos-7-x64" 5 | } 6 | -------------------------------------------------------------------------------- /images/capi/packer/digitalocean/config.pkr.hcl: -------------------------------------------------------------------------------- 1 | packer { 2 | required_plugins { 3 | digitalocean = { 4 | source = "github.com/digitalocean/digitalocean" 5 | version = ">=1.1.1" 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /images/capi/packer/digitalocean/ubuntu-2004.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "ubuntu-2004", 3 | "snapshot_name_suffix": "on Ubuntu 20.04", 4 | "source_image": "ubuntu-20-04-x64" 5 | } 6 | -------------------------------------------------------------------------------- /images/capi/packer/digitalocean/ubuntu-2204.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "ubuntu-2204", 3 | "snapshot_name_suffix": "on Ubuntu 22.04", 4 | "source_image": "ubuntu-22-04-x64" 5 | } 6 | -------------------------------------------------------------------------------- /images/capi/packer/digitalocean/ubuntu-2404.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "ubuntu-2404", 3 | "snapshot_name_suffix": "on Ubuntu 24.04", 4 | "source_image": "ubuntu-24-04-x64" 5 | } 6 | -------------------------------------------------------------------------------- /images/capi/packer/files/flatcar/clc/bootstrap-cloud.yaml: -------------------------------------------------------------------------------- 1 | # This file is used for initial provisioning of a Flatcar machine on platforms which automatically 2 | # authorize SSH keys (typically cloud providers such as AWS or Azure). On such platforms, no SSH 3 | # configuration needs to be done via Ignition. The actions in this file are performed before Packer 4 | # provisioners (e.g. Ansible) are executed. 5 | systemd: 6 | units: 7 | - name: docker.service 8 | enable: true 9 | # Mask update-engine and locksmithd to disable automatic updates during image creation. 10 | - name: update-engine.service 11 | mask: true 12 | - name: locksmithd.service 13 | mask: true 14 | -------------------------------------------------------------------------------- /images/capi/packer/files/flatcar/clc/bootstrap-pass-auth.yaml: -------------------------------------------------------------------------------- 1 | # This file is used for initial provisioning of a Flatcar machine on platforms which use SSH 2 | # password authentication during the build process. The actions in this file are performed before 3 | # Packer provisioners (e.g. Ansible) are executed. 4 | passwd: 5 | users: 6 | - name: builder 7 | # "BUILDERPASSWORDHASH" gets overwritten by Packer on platforms where SSH password auth is used. 8 | password_hash: BUILDERPASSWORDHASH 9 | groups: 10 | - wheel 11 | - sudo 12 | - docker 13 | systemd: 14 | units: 15 | - name: docker.service 16 | enable: true 17 | # Mask update-engine and locksmithd to disable automatic updates during image creation. 18 | - name: update-engine.service 19 | mask: true 20 | - name: locksmithd.service 21 | mask: true 22 | -------------------------------------------------------------------------------- /images/capi/packer/files/flatcar/ignition/bootstrap-cloud.json: -------------------------------------------------------------------------------- 1 | { 2 | "ignition": { 3 | "config": {}, 4 | "security": { 5 | "tls": {} 6 | }, 7 | "timeouts": {}, 8 | "version": "2.3.0" 9 | }, 10 | "networkd": {}, 11 | "passwd": {}, 12 | "storage": {}, 13 | "systemd": { 14 | "units": [ 15 | { 16 | "enable": true, 17 | "name": "docker.service" 18 | }, 19 | { 20 | "mask": true, 21 | "name": "update-engine.service" 22 | }, 23 | { 24 | "mask": true, 25 | "name": "locksmithd.service" 26 | } 27 | ] 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /images/capi/packer/files/flatcar/ignition/bootstrap-pass-auth.json: -------------------------------------------------------------------------------- 1 | { 2 | "ignition": { 3 | "config": {}, 4 | "security": { 5 | "tls": {} 6 | }, 7 | "timeouts": {}, 8 | "version": "2.3.0" 9 | }, 10 | "networkd": {}, 11 | "passwd": { 12 | "users": [ 13 | { 14 | "groups": [ 15 | "wheel", 16 | "sudo", 17 | "docker" 18 | ], 19 | "name": "builder", 20 | "passwordHash": "BUILDERPASSWORDHASH" 21 | } 22 | ] 23 | }, 24 | "storage": {}, 25 | "systemd": { 26 | "units": [ 27 | { 28 | "enable": true, 29 | "name": "docker.service" 30 | }, 31 | { 32 | "mask": true, 33 | "name": "update-engine.service" 34 | }, 35 | { 36 | "mask": true, 37 | "name": "locksmithd.service" 38 | } 39 | ] 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /images/capi/packer/gce/OWNERS: -------------------------------------------------------------------------------- 1 | # See the OWNERS docs at https://go.k8s.io/owners 2 | 3 | approvers: 4 | - cluster-api-gcp-maintainers 5 | -------------------------------------------------------------------------------- /images/capi/packer/gce/ci/nightly/README.md: -------------------------------------------------------------------------------- 1 | ## Configs for nightly builds 2 | 3 | The configurations in the directory is being used for the nightly job to build the images for GCE. 4 | 5 | The script that runs is [ci-gce-nightly.sh](../../../../scripts/ci-gce-nightly.sh) 6 | -------------------------------------------------------------------------------- /images/capi/packer/gce/ci/nightly/overwrite-1-30.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_timestamp": "nightly", 3 | "kubernetes_deb_version": "1.30.13-1.1", 4 | "kubernetes_rpm_version": "1.30.13", 5 | "kubernetes_semver": "v1.30.13", 6 | "kubernetes_series": "v1.30", 7 | "service_account_email": "gcb-builder-cluster-api-gcp@k8s-staging-cluster-api-gcp.iam.gserviceaccount.com" 8 | } 9 | -------------------------------------------------------------------------------- /images/capi/packer/gce/ci/nightly/overwrite-1-31.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_timestamp": "nightly", 3 | "kubernetes_deb_version": "1.31.9-1.1", 4 | "kubernetes_rpm_version": "1.31.9", 5 | "kubernetes_semver": "v1.31.9", 6 | "kubernetes_series": "v1.31", 7 | "service_account_email": "gcb-builder-cluster-api-gcp@k8s-staging-cluster-api-gcp.iam.gserviceaccount.com" 8 | } 9 | -------------------------------------------------------------------------------- /images/capi/packer/gce/ci/nightly/overwrite-1-32.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_timestamp": "nightly", 3 | "kubernetes_deb_version": "1.32.5-1.1", 4 | "kubernetes_rpm_version": "1.32.5", 5 | "kubernetes_semver": "v1.32.5", 6 | "kubernetes_series": "v1.32", 7 | "service_account_email": "gcb-builder-cluster-api-gcp@k8s-staging-cluster-api-gcp.iam.gserviceaccount.com" 8 | } 9 | -------------------------------------------------------------------------------- /images/capi/packer/gce/ci/nightly/overwrite-1-33.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_timestamp": "nightly", 3 | "kubernetes_deb_version": "1.33.1-1.1", 4 | "kubernetes_rpm_version": "1.33.1", 5 | "kubernetes_semver": "v1.33.1", 6 | "kubernetes_series": "v1.33", 7 | "service_account_email": "gcb-builder-cluster-api-gcp@k8s-staging-cluster-api-gcp.iam.gserviceaccount.com" 8 | } 9 | -------------------------------------------------------------------------------- /images/capi/packer/gce/config.pkr.hcl: -------------------------------------------------------------------------------- 1 | packer { 2 | required_plugins { 3 | googlecompute = { 4 | source = "github.com/hashicorp/googlecompute" 5 | version = "~> 1.1.6" 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /images/capi/packer/gce/rhel-8.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "rhel-8", 3 | "distribution": "rhel", 4 | "distribution_release": "rhel-8", 5 | "distribution_version": "8", 6 | "epel_rpm_gpg_key": "https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-8", 7 | "redhat_epel_rpm": "https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm", 8 | "source_image_family": "rhel-8", 9 | "ssh_username": "packer", 10 | "zone": "us-central1-a" 11 | } 12 | -------------------------------------------------------------------------------- /images/capi/packer/gce/ubuntu-2004.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "ubuntu-2004", 3 | "distribution": "ubuntu", 4 | "distribution_release": "focal", 5 | "distribution_version": "2004", 6 | "source_image_family": "ubuntu-2004-lts", 7 | "ssh_username": "ubuntu", 8 | "zone": "us-central1-a" 9 | } 10 | -------------------------------------------------------------------------------- /images/capi/packer/gce/ubuntu-2204.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "ubuntu-2204", 3 | "distribution": "ubuntu", 4 | "distribution_release": "jammy", 5 | "distribution_version": "2204", 6 | "source_image_family": "ubuntu-2204-lts", 7 | "ssh_username": "ubuntu", 8 | "zone": "us-central1-a" 9 | } 10 | -------------------------------------------------------------------------------- /images/capi/packer/gce/ubuntu-2404.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "ubuntu-2404", 3 | "distribution": "ubuntu", 4 | "distribution_release": "noble", 5 | "distribution_version": "2404", 6 | "source_image_family": "ubuntu-2404-lts-amd64", 7 | "ssh_username": "ubuntu", 8 | "zone": "us-central1-a" 9 | } 10 | -------------------------------------------------------------------------------- /images/capi/packer/goss/goss-files.yaml: -------------------------------------------------------------------------------- 1 | file: 2 | {{range $name, $vers := index .Vars .Vars.OS "common-files"}} 3 | {{ $name }}: 4 | exists: {{ $vers.exists }} 5 | filetype: {{ $vers.filetype }} 6 | {{end}} 7 | {{range $name, $vers := index .Vars .Vars.OS .Vars.PROVIDER "files"}} 8 | {{ $name }}: 9 | exists: {{ $vers.exists }} 10 | filetype: {{ $vers.filetype }} 11 | contains: {{ range $vers.contains }} 12 | - {{.}} 13 | {{end}} 14 | {{end}} 15 | {{if or (eq .Vars.OS "ubuntu") (eq .Vars.OS "photon")}} 16 | {{if .Vars.node_custom_roles_pre | regexMatch ".*gpu.*"}} 17 | "/etc/modprobe.d/blocklist-nouveau.conf": 18 | exists: true 19 | filetype: file 20 | contains: 21 | - "blacklist nouveau" 22 | - "options nouveau modeset=0" 23 | {{if eq .Vars.block_nouveau_loading "true"}} 24 | - "install nouveau /bin/false" 25 | {{end}} 26 | {{end}} 27 | {{end}} 28 | -------------------------------------------------------------------------------- /images/capi/packer/goss/goss-kernel-params.yaml: -------------------------------------------------------------------------------- 1 | {{ if ne .Vars.OS "windows" }} 2 | kernel-param: 3 | net.bridge.bridge-nf-call-iptables: 4 | value: "1" 5 | net.ipv6.conf.all.forwarding: 6 | value: "1" 7 | net.ipv6.conf.all.disable_ipv6: 8 | value: "0" 9 | net.ipv4.ip_forward: 10 | value: "1" 11 | net.bridge.bridge-nf-call-ip6tables: 12 | value: "1" 13 | vm.overcommit_memory: 14 | value: "1" 15 | kernel.panic: 16 | value: "10" 17 | kernel.panic_on_oops: 18 | value: "1" 19 | {{range $name, $vers := index .Vars .Vars.OS "common-kernel-param"}} 20 | {{ $name }}: 21 | {{range $key, $val := $vers}} 22 | {{$key}}: "{{$val}}" 23 | {{end}} 24 | {{end}} 25 | {{range $name, $vers := index .Vars .Vars.OS .Vars.PROVIDER "kernel-param"}} 26 | {{ $name }}: 27 | {{range $key, $val := $vers}} 28 | {{$key}}: "{{$val}}" 29 | {{end}} 30 | {{end}} 31 | {{end}} -------------------------------------------------------------------------------- /images/capi/packer/goss/goss.yaml: -------------------------------------------------------------------------------- 1 | gossfile: 2 | goss-command.yaml: {} 3 | goss-kernel-params.yaml: {} 4 | goss-service.yaml: {} 5 | goss-package.yaml: {} 6 | goss-files.yaml: {} 7 | -------------------------------------------------------------------------------- /images/capi/packer/hcloud/OWNERS: -------------------------------------------------------------------------------- 1 | # See the OWNERS docs at https://go.k8s.io/owners 2 | 3 | approvers: 4 | - cluster-api-azure-maintainers 5 | 6 | reviewers: 7 | - cluster-api-azure-maintainers 8 | - image-builder-azure-reviewers 9 | -------------------------------------------------------------------------------- /images/capi/packer/hcloud/centos-7.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "centos-7", 3 | "distribution": "centos", 4 | "distribution_release": "centos-7", 5 | "distribution_version": "7", 6 | "image": "centos-7", 7 | "ssh_username": "root" 8 | } 9 | -------------------------------------------------------------------------------- /images/capi/packer/hcloud/config.pkr.hcl: -------------------------------------------------------------------------------- 1 | packer { 2 | required_plugins { 3 | hcloud = { 4 | version = ">= 1.4.0" 5 | source = "github.com/hetznercloud/hcloud" 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /images/capi/packer/hcloud/flatcar-arm64.json: -------------------------------------------------------------------------------- 1 | { 2 | "ansible_extra_vars": "ansible_python_interpreter=/opt/bin/python", 3 | "arch": "arm64", 4 | "build_name": "flatcar", 5 | "crictl_arch": "arm64", 6 | "crictl_source_type": "http", 7 | "distribution": "flatcar", 8 | "distribution_release": "{{env `FLATCAR_CHANNEL`}}", 9 | "distribution_version": "{{env `FLATCAR_CHANNEL`}}-{{env `FLATCAR_VERSION`}}", 10 | "goss_arch": "arm64", 11 | "kubernetes_cni_http_checksum_arch": "arm64", 12 | "kubernetes_cni_source_type": "http", 13 | "kubernetes_goarch": "arm64", 14 | "kubernetes_source_type": "http", 15 | "python_path": "/opt/pypy/site-packages", 16 | "root_device_name": "/dev/sda", 17 | "server_type": "cax11", 18 | "ssh_username": "root", 19 | "systemd_prefix": "/etc/systemd", 20 | "sysusr_prefix": "/opt", 21 | "sysusrlocal_prefix": "/opt" 22 | } 23 | -------------------------------------------------------------------------------- /images/capi/packer/hcloud/flatcar.json: -------------------------------------------------------------------------------- 1 | { 2 | "ansible_extra_vars": "ansible_python_interpreter=/opt/bin/python", 3 | "arch": "amd64", 4 | "build_name": "flatcar", 5 | "crictl_source_type": "http", 6 | "distribution": "flatcar", 7 | "distribution_release": "{{env `FLATCAR_CHANNEL`}}", 8 | "distribution_version": "{{env `FLATCAR_CHANNEL`}}-{{env `FLATCAR_VERSION`}}", 9 | "kubernetes_cni_source_type": "http", 10 | "kubernetes_source_type": "http", 11 | "python_path": "/opt/pypy/site-packages", 12 | "root_device_name": "/dev/sda", 13 | "ssh_username": "root", 14 | "systemd_prefix": "/etc/systemd", 15 | "sysusr_prefix": "/opt", 16 | "sysusrlocal_prefix": "/opt" 17 | } 18 | -------------------------------------------------------------------------------- /images/capi/packer/hcloud/hcloud-config.json: -------------------------------------------------------------------------------- 1 | { 2 | "hcloud_location": "{{env `HCLOUD_LOCATION`}}", 3 | "image_name": "cluster-api-{{user `build_name`}}-{{user `kubernetes_semver`}}-{{user `build_timestamp`}}", 4 | "server_type": "cx22", 5 | "token": "{{env `HCLOUD_TOKEN`}}" 6 | } 7 | -------------------------------------------------------------------------------- /images/capi/packer/hcloud/rockylinux-8.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "rockylinux-8", 3 | "distribution": "rockylinux", 4 | "distribution_release": "Core", 5 | "distribution_version": "8", 6 | "epel_rpm_gpg_key": "https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-8", 7 | "image": "rocky-8", 8 | "redhat_epel_rpm": "https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm", 9 | "ssh_username": "root" 10 | } 11 | -------------------------------------------------------------------------------- /images/capi/packer/hcloud/rockylinux-9.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "rockylinux-9", 3 | "distribution": "rockylinux", 4 | "distribution_release": "Core", 5 | "distribution_version": "9", 6 | "epel_rpm_gpg_key": "https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-9", 7 | "image": "rocky-9", 8 | "redhat_epel_rpm": "https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm", 9 | "ssh_username": "root" 10 | } 11 | -------------------------------------------------------------------------------- /images/capi/packer/hcloud/scripts/install-flatcar.sh: -------------------------------------------------------------------------------- 1 | apt update 2 | apt -y install gawk bzip2 3 | curl -fsSLO --retry-delay 1 --retry 60 --retry-connrefused --retry-max-time 60 --connect-timeout 20 https://raw.githubusercontent.com/flatcar/init/flatcar-master/bin/flatcar-install 4 | chmod +x flatcar-install 5 | cat < ignition.json 6 | { 7 | "ignition": { "version": "3.0.0" }, 8 | "passwd": { 9 | "users": [ 10 | { 11 | "name": "root", 12 | "sshAuthorizedKeys": [ 13 | "$(cat /root/.ssh/authorized_keys)" 14 | ] 15 | } 16 | ] 17 | } 18 | } 19 | EOF 20 | ./flatcar-install -v -d /dev/sda -i ignition.json -o hetzner -V $FLATCAR_VERSION -C $FLATCAR_CHANNEL # optional: you may provide a Ignition Config as file, it should contain your SSH key 21 | reboot 22 | -------------------------------------------------------------------------------- /images/capi/packer/hcloud/ubuntu-2004.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "ubuntu-2004", 3 | "distribution": "ubuntu", 4 | "distribution_release": "focal", 5 | "distribution_version": "2004", 6 | "image": "ubuntu-22.04", 7 | "ssh_username": "root" 8 | } 9 | -------------------------------------------------------------------------------- /images/capi/packer/hcloud/ubuntu-2204.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "ubuntu-2204", 3 | "distribution": "ubuntu", 4 | "distribution_release": "jammy", 5 | "distribution_version": "2204", 6 | "image": "ubuntu-22.04", 7 | "ssh_username": "root" 8 | } 9 | -------------------------------------------------------------------------------- /images/capi/packer/hcloud/ubuntu-2404.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "ubuntu-2404", 3 | "distribution": "ubuntu", 4 | "distribution_release": "noble", 5 | "distribution_version": "2404", 6 | "image": "ubuntu-24.04", 7 | "ssh_username": "root" 8 | } 9 | -------------------------------------------------------------------------------- /images/capi/packer/huaweicloud/config.pkr.hcl: -------------------------------------------------------------------------------- 1 | packer { 2 | required_plugins { 3 | huaweicloud = { 4 | version = ">= 1.2.1" 5 | source = "github.com/huaweicloud/huaweicloud" 6 | } 7 | } 8 | } -------------------------------------------------------------------------------- /images/capi/packer/huaweicloud/ubuntu-2204.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "ubuntu-22.04", 3 | "distribution": "Ubuntu", 4 | "distribution_release": "jammy", 5 | "distribution_version": "22.04", 6 | "extra_debs": "cloud-init", 7 | "image_filter_name": "Ubuntu 22.04 server 64bit", 8 | "netplan_removal_excludes": "01-netcfg.yaml", 9 | "root_device_name": "/dev/vda1" 10 | } 11 | -------------------------------------------------------------------------------- /images/capi/packer/maas/.gitignore: -------------------------------------------------------------------------------- 1 | packer.json 2 | ks.cfg 3 | preseed.cfg 4 | preseed-efi.cfg 5 | user-data 6 | -------------------------------------------------------------------------------- /images/capi/packer/maas/OWNERS: -------------------------------------------------------------------------------- 1 | # See the OWNERS docs at https://go.k8s.io/owners 2 | 3 | approvers: 4 | - cluster-api-maas-maintainers 5 | 6 | reviewers: 7 | - cluster-api-maas-reviewers 8 | -------------------------------------------------------------------------------- /images/capi/packer/maas/README.md: -------------------------------------------------------------------------------- 1 | To build an image using a specific version of Kubernetes use the "PACKER_FLAGS" env var like in the example below: 2 | 3 | PACKER_FLAGS="--var 'kubernetes_rpm_version=1.30.5' --var 'kubernetes_semver=v1.30.5' --var 'kubernetes_series=v1.30' --var 'kubernetes_deb_version=1.30.5-1.1'" make build-maas-ubuntu-2204-efi 4 | 5 | P.S: In order to change disk size(defaults to 20GB as of 31.10.22) you can update PACKER_FLAGS with: 6 | --var 'disk_size=' 7 | 8 | 9 | Upload images to MaaS 10 | 11 | ``` 12 | maas boot-resources create name=custom/ architecture=amd64/generic title= subarches=generic base_image=ubuntu/ content@=./.tar.gz 13 | ``` 14 | 15 | Notes / Things you need to known: 16 | 17 | - If you are using ubuntu **22.04**, set the `base_image` field to: `ubuntu/jammy`. For 24.04, use: `ubuntu/noble` 18 | - Use **UEFI** to boot the machines, if you use BIOS, your MaaS deployment will **probably** fail. -------------------------------------------------------------------------------- /images/capi/packer/maas/cloud-init/meta-data: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/image-builder/398de17f3400fc3d619f3bc3dffbb90587c6b954/images/capi/packer/maas/cloud-init/meta-data -------------------------------------------------------------------------------- /images/capi/packer/maas/cloud-init/user-data.tmpl: -------------------------------------------------------------------------------- 1 | #cloud-config 2 | ssh_pwauth: true 3 | users: 4 | - name: builder 5 | passwd: $ENCRYPTED_SSH_PASSWORD 6 | groups: [adm, cdrom, dip, plugdev, lxd, sudo] 7 | lock-passwd: false 8 | sudo: ALL=(ALL) NOPASSWD:ALL 9 | shell: /bin/bash 10 | -------------------------------------------------------------------------------- /images/capi/packer/maas/config.pkr.hcl: -------------------------------------------------------------------------------- 1 | packer { 2 | required_plugins { 3 | qemu = { 4 | source = "github.com/hashicorp/qemu" 5 | version = "~> 1.1.0" 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /images/capi/packer/maas/linux/ubuntu/http/22.04.efi.qemu/meta-data: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/image-builder/398de17f3400fc3d619f3bc3dffbb90587c6b954/images/capi/packer/maas/linux/ubuntu/http/22.04.efi.qemu/meta-data -------------------------------------------------------------------------------- /images/capi/packer/maas/linux/ubuntu/http/22.04.efi/meta-data: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/image-builder/398de17f3400fc3d619f3bc3dffbb90587c6b954/images/capi/packer/maas/linux/ubuntu/http/22.04.efi/meta-data -------------------------------------------------------------------------------- /images/capi/packer/maas/linux/ubuntu/http/22.04/meta-data: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/image-builder/398de17f3400fc3d619f3bc3dffbb90587c6b954/images/capi/packer/maas/linux/ubuntu/http/22.04/meta-data -------------------------------------------------------------------------------- /images/capi/packer/maas/linux/ubuntu/http/23.04/meta-data: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/image-builder/398de17f3400fc3d619f3bc3dffbb90587c6b954/images/capi/packer/maas/linux/ubuntu/http/23.04/meta-data -------------------------------------------------------------------------------- /images/capi/packer/maas/linux/ubuntu/http/24.04.efi/meta-data: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/image-builder/398de17f3400fc3d619f3bc3dffbb90587c6b954/images/capi/packer/maas/linux/ubuntu/http/24.04.efi/meta-data -------------------------------------------------------------------------------- /images/capi/packer/maas/linux/ubuntu/http/24.04/meta-data: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/image-builder/398de17f3400fc3d619f3bc3dffbb90587c6b954/images/capi/packer/maas/linux/ubuntu/http/24.04/meta-data -------------------------------------------------------------------------------- /images/capi/packer/maas/maas-ubuntu-2204-efi.json: -------------------------------------------------------------------------------- 1 | { 2 | "boot_command_prefix": "clinux /casper/vmlinuz autoinstall ds='nocloud-net;s=http://{{ .HTTPIP }}:{{ .HTTPPort }}/' --- initrd /casper/initrdboot", 3 | "build_name": "ubuntu-2204-efi", 4 | "distro_name": "ubuntu", 5 | "firmware": "OVMF.fd", 6 | "guest_os_type": "ubuntu-64", 7 | "http_directory": "./packer/maas/linux/ubuntu/http/22.04.efi.qemu", 8 | "iso_checksum": "9bc6028870aef3f74f4e16b900008179e78b130e6b0b9a140635434a46aa98b0", 9 | "iso_checksum_type": "sha256", 10 | "iso_url": "https://releases.ubuntu.com/22.04.5/ubuntu-22.04.5-live-server-amd64.iso", 11 | "os_display_name": "Ubuntu 22.04", 12 | "shutdown_command": "shutdown -P now", 13 | "unmount_iso": "true" 14 | } 15 | -------------------------------------------------------------------------------- /images/capi/packer/maas/maas-ubuntu-2404-efi.json: -------------------------------------------------------------------------------- 1 | { 2 | "boot_command_prefix": "clinux /casper/vmlinuz --- autoinstall ds='nocloud-net;s=http://{{ .HTTPIP }}:{{ .HTTPPort }}/24.04.efi/'initrd /casper/initrdboot", 3 | "build_name": "ubuntu-2404-efi", 4 | "distribution_version": "2404", 5 | "distro_name": "ubuntu", 6 | "firmware": "OVMF.fd", 7 | "guest_os_type": "ubuntu-64", 8 | "iso_checksum": "e240e4b801f7bb68c20d1356b60968ad0c33a41d00d828e74ceb3364a0317be9", 9 | "iso_checksum_type": "sha256", 10 | "iso_url": "https://releases.ubuntu.com/releases/24.04/ubuntu-24.04.1-live-server-amd64.iso", 11 | "os_display_name": "Ubuntu 24.04", 12 | "shutdown_command": "shutdown -P now", 13 | "unmount_iso": "true" 14 | } 15 | -------------------------------------------------------------------------------- /images/capi/packer/nutanix/.gitignore: -------------------------------------------------------------------------------- 1 | packer.json 2 | user-data 3 | -------------------------------------------------------------------------------- /images/capi/packer/nutanix/OWNERS: -------------------------------------------------------------------------------- 1 | # See the OWNERS docs at https://go.k8s.io/owners 2 | 3 | approvers: 4 | - cluster-api-nutanix-maintainers 5 | 6 | reviewers: 7 | - cluster-api-nutanix-reviewers 8 | -------------------------------------------------------------------------------- /images/capi/packer/nutanix/config.pkr.hcl: -------------------------------------------------------------------------------- 1 | packer { 2 | required_plugins { 3 | nutanix = { 4 | version = ">= 0.8.1" 5 | source = "github.com/nutanix-cloud-native/nutanix" 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /images/capi/packer/nutanix/linux/cloud-init/rhel/8/user-data.tmpl: -------------------------------------------------------------------------------- 1 | #cloud-config 2 | users: 3 | - name: builder 4 | sudo: ['ALL=(ALL) NOPASSWD:ALL'] 5 | chpasswd: 6 | list: | 7 | builder:$SSH_PASSWORD 8 | expire: False 9 | ssh_pwauth: True -------------------------------------------------------------------------------- /images/capi/packer/nutanix/linux/cloud-init/rhel/9/user-data.tmpl: -------------------------------------------------------------------------------- 1 | #cloud-config 2 | users: 3 | - name: builder 4 | sudo: ['ALL=(ALL) NOPASSWD:ALL'] 5 | chpasswd: 6 | list: | 7 | builder:$SSH_PASSWORD 8 | expire: False 9 | ssh_pwauth: True -------------------------------------------------------------------------------- /images/capi/packer/nutanix/linux/cloud-init/rockylinux/8/user-data.tmpl: -------------------------------------------------------------------------------- 1 | #cloud-config 2 | users: 3 | - name: builder 4 | sudo: ['ALL=(ALL) NOPASSWD:ALL'] 5 | chpasswd: 6 | list: | 7 | builder:$SSH_PASSWORD 8 | expire: False 9 | ssh_pwauth: True -------------------------------------------------------------------------------- /images/capi/packer/nutanix/linux/cloud-init/rockylinux/9/user-data.tmpl: -------------------------------------------------------------------------------- 1 | #cloud-config 2 | users: 3 | - name: builder 4 | sudo: ['ALL=(ALL) NOPASSWD:ALL'] 5 | chpasswd: 6 | list: | 7 | builder:$SSH_PASSWORD 8 | expire: False 9 | ssh_pwauth: True -------------------------------------------------------------------------------- /images/capi/packer/nutanix/linux/cloud-init/ubuntu/20.04/user-data.tmpl: -------------------------------------------------------------------------------- 1 | #cloud-config 2 | users: 3 | - name: builder 4 | sudo: ['ALL=(ALL) NOPASSWD:ALL'] 5 | shell: /bin/bash 6 | chpasswd: 7 | list: | 8 | builder:$SSH_PASSWORD 9 | expire: False 10 | ssh_pwauth: True -------------------------------------------------------------------------------- /images/capi/packer/nutanix/linux/cloud-init/ubuntu/22.04/user-data.tmpl: -------------------------------------------------------------------------------- 1 | #cloud-config 2 | users: 3 | - name: builder 4 | sudo: ['ALL=(ALL) NOPASSWD:ALL'] 5 | shell: /bin/bash 6 | chpasswd: 7 | list: | 8 | builder:$SSH_PASSWORD 9 | expire: False 10 | ssh_pwauth: True -------------------------------------------------------------------------------- /images/capi/packer/nutanix/linux/cloud-init/ubuntu/24.04/user-data.tmpl: -------------------------------------------------------------------------------- 1 | #cloud-config 2 | users: 3 | - name: builder 4 | sudo: ['ALL=(ALL) NOPASSWD:ALL'] 5 | shell: /bin/bash 6 | chpasswd: 7 | list: | 8 | builder:$SSH_PASSWORD 9 | expire: False 10 | ssh_pwauth: True -------------------------------------------------------------------------------- /images/capi/packer/nutanix/nutanix.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /images/capi/packer/nutanix/rhel-8.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "rhel-8", 3 | "distribution_version": "8", 4 | "distro_name": "rhel", 5 | "epel_rpm_gpg_key": "https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-8", 6 | "extra_rpms": "", 7 | "guest_os_type": "Linux", 8 | "image_url": "https://REPLACE_YOUR_SERVER/redhat/8/rhel-8.8-x86_64-kvm.qcow2", 9 | "redhat_epel_rpm": "https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm", 10 | "shutdown_command": "shutdown -P now", 11 | "user_data": "I2Nsb3VkLWNvbmZpZwp1c2VyczoKICAtIG5hbWU6IGJ1aWxkZXIKICAgIHN1ZG86IFsnQUxMPShBTEwpIE5PUEFTU1dEOkFMTCddCmNocGFzc3dkOgogIGxpc3Q6IHwKICAgIGJ1aWxkZXI6YnVpbGRlcgogIGV4cGlyZTogRmFsc2UKc3NoX3B3YXV0aDogVHJ1ZQ==" 12 | } 13 | -------------------------------------------------------------------------------- /images/capi/packer/nutanix/rhel-9.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "rhel-9", 3 | "distribution_version": "9", 4 | "distro_name": "rhel", 5 | "epel_rpm_gpg_key": "https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-9", 6 | "extra_rpms": "", 7 | "guest_os_type": "Linux", 8 | "image_url": "https://REPLACE_YOUR_SERVER/redhat/9/rhel-9.2-x86_64-kvm.qcow2", 9 | "redhat_epel_rpm": "https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm", 10 | "shutdown_command": "shutdown -P now", 11 | "user_data": "I2Nsb3VkLWNvbmZpZwp1c2VyczoKICAtIG5hbWU6IGJ1aWxkZXIKICAgIHN1ZG86IFsnQUxMPShBTEwpIE5PUEFTU1dEOkFMTCddCmNocGFzc3dkOgogIGxpc3Q6IHwKICAgIGJ1aWxkZXI6YnVpbGRlcgogIGV4cGlyZTogRmFsc2UKc3NoX3B3YXV0aDogVHJ1ZQ==" 12 | } 13 | -------------------------------------------------------------------------------- /images/capi/packer/nutanix/rockylinux-8.json: -------------------------------------------------------------------------------- 1 | { 2 | "boot_type": "uefi", 3 | "build_name": "rockylinux-8", 4 | "distribution": "rockylinux", 5 | "distribution_release": "Core", 6 | "distribution_version": "8", 7 | "distro_name": "rockylinux", 8 | "epel_rpm_gpg_key": "https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-8", 9 | "extra_rpms": "python3", 10 | "guest_os_type": "Linux", 11 | "image_url": "https://dl.rockylinux.org/pub/rocky/8/images/x86_64/Rocky-8-GenericCloud-Base.latest.x86_64.qcow2", 12 | "redhat_epel_rpm": "https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm", 13 | "shutdown_command": "shutdown -P now", 14 | "user_data": "I2Nsb3VkLWNvbmZpZwp1c2VyczoKICAtIG5hbWU6IGJ1aWxkZXIKICAgIHN1ZG86IFsnQUxMPShBTEwpIE5PUEFTU1dEOkFMTCddCmNocGFzc3dkOgogIGxpc3Q6IHwKICAgIGJ1aWxkZXI6YnVpbGRlcgogIGV4cGlyZTogRmFsc2UKc3NoX3B3YXV0aDogVHJ1ZQ==" 15 | } 16 | -------------------------------------------------------------------------------- /images/capi/packer/nutanix/rockylinux-9.json: -------------------------------------------------------------------------------- 1 | { 2 | "boot_type": "uefi", 3 | "build_name": "rockylinux-9", 4 | "distribution": "rockylinux", 5 | "distribution_release": "Core", 6 | "distribution_version": "9", 7 | "distro_name": "rockylinux", 8 | "epel_rpm_gpg_key": "https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-9", 9 | "guest_os_type": "Linux", 10 | "image_url": "https://dl.rockylinux.org/pub/rocky/9/images/x86_64/Rocky-9-GenericCloud-Base.latest.x86_64.qcow2", 11 | "redhat_epel_rpm": "https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm", 12 | "shutdown_command": "shutdown -P now", 13 | "user_data": "I2Nsb3VkLWNvbmZpZwp1c2VyczoKICAtIG5hbWU6IGJ1aWxkZXIKICAgIHN1ZG86IFsnQUxMPShBTEwpIE5PUEFTU1dEOkFMTCddCmNocGFzc3dkOgogIGxpc3Q6IHwKICAgIGJ1aWxkZXI6YnVpbGRlcgogIGV4cGlyZTogRmFsc2UKc3NoX3B3YXV0aDogVHJ1ZQ==" 14 | } 15 | -------------------------------------------------------------------------------- /images/capi/packer/nutanix/ubuntu-2004.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "ubuntu-2004", 3 | "distro_name": "ubuntu", 4 | "guest_os_type": "Linux", 5 | "image_url": "https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.img", 6 | "shutdown_command": "shutdown -P now", 7 | "user_data": "I2Nsb3VkLWNvbmZpZwp1c2VyczoKICAtIG5hbWU6IGJ1aWxkZXIKICAgIHN1ZG86IFsnQUxMPShBTEwpIE5PUEFTU1dEOkFMTCddCiAgICBzaGVsbDogL2Jpbi9iYXNoCmNocGFzc3dkOgogIGxpc3Q6IHwKICAgIGJ1aWxkZXI6YnVpbGRlcgogIGV4cGlyZTogRmFsc2UKc3NoX3B3YXV0aDogVHJ1ZQo=" 8 | } 9 | -------------------------------------------------------------------------------- /images/capi/packer/nutanix/ubuntu-2204.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "ubuntu-2204", 3 | "distro_name": "ubuntu", 4 | "guest_os_type": "Linux", 5 | "image_url": "https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img", 6 | "shutdown_command": "shutdown -P now", 7 | "user_data": "I2Nsb3VkLWNvbmZpZwp1c2VyczoKICAtIG5hbWU6IGJ1aWxkZXIKICAgIHN1ZG86IFsnQUxMPShBTEwpIE5PUEFTU1dEOkFMTCddCiAgICBzaGVsbDogL2Jpbi9iYXNoCmNocGFzc3dkOgogIGxpc3Q6IHwKICAgIGJ1aWxkZXI6YnVpbGRlcgogIGV4cGlyZTogRmFsc2UKc3NoX3B3YXV0aDogVHJ1ZQo=" 8 | } 9 | -------------------------------------------------------------------------------- /images/capi/packer/nutanix/ubuntu-2404.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "ubuntu-2404", 3 | "distro_name": "ubuntu", 4 | "guest_os_type": "Linux", 5 | "image_url": "https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img", 6 | "shutdown_command": "shutdown -P now", 7 | "user_data": "I2Nsb3VkLWNvbmZpZwp1c2VyczoKICAtIG5hbWU6IGJ1aWxkZXIKICAgIHN1ZG86IFsnQUxMPShBTEwpIE5PUEFTU1dEOkFMTCddCiAgICBzaGVsbDogL2Jpbi9iYXNoCmNocGFzc3dkOgogIGxpc3Q6IHwKICAgIGJ1aWxkZXI6YnVpbGRlcgogIGV4cGlyZTogRmFsc2UKc3NoX3B3YXV0aDogVHJ1ZQo=" 8 | } 9 | -------------------------------------------------------------------------------- /images/capi/packer/nutanix/windows-2022.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "windows-2022", 3 | "distro_name": "windows", 4 | "distro_version": "2022", 5 | "guest_os_type": "Windows", 6 | "runtime": "containerd", 7 | "shutdown_command": "shutdown /s /t 10 /f /d p:4:1 /c \"Packer Shutdown\"", 8 | "source_image_name": "en-us_windows_server_2022_x64_dvd_620d7eac", 9 | "virtio_image_name": "Nutanix-VirtIO-1.2.1" 10 | } 11 | -------------------------------------------------------------------------------- /images/capi/packer/nutanix/windows/disable-network-discovery.cmd: -------------------------------------------------------------------------------- 1 | reg ADD HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff /f 2 | netsh advfirewall firewall set rule group="Network Discovery" new enable=No -------------------------------------------------------------------------------- /images/capi/packer/oci/config.pkr.hcl: -------------------------------------------------------------------------------- 1 | packer { 2 | required_plugins { 3 | oracle = { 4 | source = "github.com/hashicorp/oracle" 5 | version = "~> 1.1.0" 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /images/capi/packer/oci/oracle-linux-8.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "oracle-linux-8", 3 | "distribution": "Oracle Linux", 4 | "operating_system": "Oracle Linux", 5 | "operating_system_version": "8", 6 | "redhat_epel_rpm": "oracle-epel-release-el8", 7 | "ssh_username": "opc" 8 | } 9 | -------------------------------------------------------------------------------- /images/capi/packer/oci/oracle-linux-9.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "oracle-linux-9", 3 | "distribution": "Oracle Linux", 4 | "operating_system": "Oracle Linux", 5 | "operating_system_version": "9", 6 | "redhat_epel_rpm": "oracle-epel-release-el9", 7 | "ssh_username": "opc" 8 | } 9 | -------------------------------------------------------------------------------- /images/capi/packer/oci/ubuntu-2004.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "ubuntu-2004", 3 | "distribution": "ubuntu", 4 | "operating_system": "Canonical Ubuntu", 5 | "operating_system_version": "20.04", 6 | "ssh_username": "ubuntu" 7 | } 8 | -------------------------------------------------------------------------------- /images/capi/packer/oci/ubuntu-2204.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "ubuntu-2204", 3 | "distribution": "ubuntu", 4 | "operating_system": "Canonical Ubuntu", 5 | "operating_system_version": "22.04", 6 | "ssh_username": "ubuntu" 7 | } 8 | -------------------------------------------------------------------------------- /images/capi/packer/oci/windows-2019.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "windows-2019", 3 | "operating_system": "Windows", 4 | "operating_system_version": "Server 2019 Standard", 5 | "runtime": "containerd", 6 | "ssh_username": "opc" 7 | } 8 | -------------------------------------------------------------------------------- /images/capi/packer/oci/windows-2022.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "windows-2022", 3 | "operating_system": "Windows", 4 | "operating_system_version": "Server 2022 Standard", 5 | "runtime": "containerd", 6 | "ssh_username": "opc" 7 | } 8 | -------------------------------------------------------------------------------- /images/capi/packer/openstack/OWNERS: -------------------------------------------------------------------------------- 1 | # See the OWNERS docs at https://go.k8s.io/owners 2 | 3 | approvers: 4 | - cluster-api-openstack-maintainers 5 | 6 | reviewers: 7 | - cluster-api-openstack-maintainers 8 | - image-builder-openstack-reviewers 9 | - image-builder-openstack-maintainers 10 | -------------------------------------------------------------------------------- /images/capi/packer/openstack/config.pkr.hcl: -------------------------------------------------------------------------------- 1 | packer { 2 | required_plugins { 3 | openstack = { 4 | version = ">= 1.1.1" 5 | source = "github.com/hashicorp/openstack" 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /images/capi/packer/openstack/flatcar.json: -------------------------------------------------------------------------------- 1 | { 2 | "ansible_extra_vars": "ansible_python_interpreter=/opt/bin/python", 3 | "build_name": "flatcar", 4 | "crictl_source_type": "http", 5 | "distro_name": "flatcar", 6 | "kubernetes_cni_source_type": "http", 7 | "kubernetes_source_type": "http", 8 | "source_image": "flatcar", 9 | "systemd_prefix": "/etc/systemd", 10 | "sysusr_prefix": "/opt", 11 | "sysusrlocal_prefix": "/opt" 12 | } 13 | -------------------------------------------------------------------------------- /images/capi/packer/openstack/rockylinux-9.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "rockylinux-9", 3 | "distro_name": "rockylinux", 4 | "epel_rpm_gpg_key": "https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-9", 5 | "os_version": "9", 6 | "redhat_epel_rpm": "https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm", 7 | "ssh_username": "rocky" 8 | } 9 | -------------------------------------------------------------------------------- /images/capi/packer/openstack/ubuntu-2004.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "ubuntu-2004", 3 | "distro_name": "ubuntu", 4 | "ssh_username": "ubuntu" 5 | } 6 | -------------------------------------------------------------------------------- /images/capi/packer/openstack/ubuntu-2204.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "ubuntu-2204", 3 | "distro_name": "ubuntu", 4 | "ssh_username": "ubuntu" 5 | } 6 | -------------------------------------------------------------------------------- /images/capi/packer/openstack/ubuntu-2404.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "ubuntu-2404", 3 | "distro_name": "ubuntu", 4 | "ssh_username": "ubuntu" 5 | } 6 | -------------------------------------------------------------------------------- /images/capi/packer/outscale/ci/nightly/overwrite-1-21.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_timestamp": "nightly", 3 | "kubernetes_deb_version": "1.21.14-00", 4 | "kubernetes_rpm_version": "1.21.14-0", 5 | "kubernetes_semver": "v1.21.14", 6 | "kubernetes_series": "v1.21" 7 | } 8 | -------------------------------------------------------------------------------- /images/capi/packer/outscale/ci/nightly/overwrite-1-22.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_timestamp": "nightly", 3 | "kubernetes_deb_version": "1.22.11-00", 4 | "kubernetes_rpm_version": "1.22.11-0", 5 | "kubernetes_semver": "v1.22.11", 6 | "kubernetes_series": "v1.22" 7 | } 8 | -------------------------------------------------------------------------------- /images/capi/packer/outscale/ci/nightly/overwrite-1-23.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_timestamp": "nightly", 3 | "kubernetes_deb_version": "1.23.8-00", 4 | "kubernetes_rpm_version": "1.23.8-0", 5 | "kubernetes_semver": "v1.23.8", 6 | "kubernetes_series": "v1.23" 7 | } 8 | -------------------------------------------------------------------------------- /images/capi/packer/outscale/ci/nightly/overwrite-1-24.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_timestamp": "nightly", 3 | "kubernetes_deb_version": "1.24.2-00", 4 | "kubernetes_rpm_version": "1.24.2-0", 5 | "kubernetes_semver": "v1.24.2", 6 | "kubernetes_series": "v1.24" 7 | } 8 | -------------------------------------------------------------------------------- /images/capi/packer/outscale/ci/nightly/overwrite-1-25.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_timestamp": "nightly", 3 | "kubernetes_deb_version": "1.25.2-00", 4 | "kubernetes_rpm_version": "1.25.2-0", 5 | "kubernetes_semver": "v1.25.2", 6 | "kubernetes_series": "v1.25" 7 | } 8 | -------------------------------------------------------------------------------- /images/capi/packer/outscale/config.pkr.hcl: -------------------------------------------------------------------------------- 1 | packer { 2 | required_plugins { 3 | outscale = { 4 | source = "github.com/outscale/outscale" 5 | version = "~> 1.2.0" 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /images/capi/packer/outscale/ubuntu-2004.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "ubuntu-2004", 3 | "distribution": "ubuntu", 4 | "distribution_release": "ubuntu", 5 | "distribution_version": "2004", 6 | "image_name": "Ubuntu-20.04-2022.03.10-0" 7 | } 8 | -------------------------------------------------------------------------------- /images/capi/packer/outscale/ubuntu-2204.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "ubuntu-2204", 3 | "distribution": "ubuntu", 4 | "distribution_release": "ubuntu", 5 | "distribution_version": "2204", 6 | "image_name": "Ubuntu-22.04-2023.12.04-0" 7 | } 8 | -------------------------------------------------------------------------------- /images/capi/packer/ova/.gitignore: -------------------------------------------------------------------------------- 1 | packer-common.json 2 | ks.cfg 3 | ks.json 4 | preseed.cfg 5 | preseed-efi.cfg 6 | user-data 7 | -------------------------------------------------------------------------------- /images/capi/packer/ova/OWNERS: -------------------------------------------------------------------------------- 1 | # See the OWNERS docs at https://go.k8s.io/owners 2 | 3 | approvers: 4 | - cluster-api-vsphere-maintainers 5 | -------------------------------------------------------------------------------- /images/capi/packer/ova/centos-7.json: -------------------------------------------------------------------------------- 1 | { 2 | "boot_command_prefix": " text ks=hd:fd0:", 3 | "boot_command_suffix": "/7/ks.cfg", 4 | "boot_media_path": "/HTTP", 5 | "build_name": "centos-7", 6 | "distro_arch": "amd64", 7 | "distro_name": "centos", 8 | "distro_version": "7", 9 | "floppy_dirs": "./packer/ova/linux/{{user `distro_name`}}/http/", 10 | "guest_os_type": "centos7-64", 11 | "iso_checksum": "07b94e6b1a0b0260b94c83d6bb76b26bf7a310dc78d7a9c7432809fb9bc6194a", 12 | "iso_checksum_type": "sha256", 13 | "iso_url": "https://mirrors.edge.kernel.org/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-Minimal-2009.iso", 14 | "os_display_name": "CentOS 7", 15 | "shutdown_command": "sys-unconfig", 16 | "vsphere_guest_os_type": "centos7_64Guest" 17 | } 18 | -------------------------------------------------------------------------------- /images/capi/packer/ova/config.pkr.hcl: -------------------------------------------------------------------------------- 1 | packer { 2 | required_version = ">= 1.7.0" 3 | required_plugins { 4 | vsphere = { 5 | version = ">= 1.4.2" 6 | source = "github.com/hashicorp/vsphere" 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /images/capi/packer/ova/linux/ubuntu/http/20.04/preseed-efi.cfg: -------------------------------------------------------------------------------- 1 | # Copyright 2019 The Kubernetes Authors. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | d-i preseed/include string ../base/preseed-efi.cfg 16 | -------------------------------------------------------------------------------- /images/capi/packer/ova/linux/ubuntu/http/20.04/preseed.cfg: -------------------------------------------------------------------------------- 1 | # Copyright 2019 The Kubernetes Authors. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | d-i preseed/include string ../base/preseed.cfg 16 | -------------------------------------------------------------------------------- /images/capi/packer/ova/linux/ubuntu/http/22.04.efi/meta-data: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/image-builder/398de17f3400fc3d619f3bc3dffbb90587c6b954/images/capi/packer/ova/linux/ubuntu/http/22.04.efi/meta-data -------------------------------------------------------------------------------- /images/capi/packer/ova/linux/ubuntu/http/22.04/meta-data: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/image-builder/398de17f3400fc3d619f3bc3dffbb90587c6b954/images/capi/packer/ova/linux/ubuntu/http/22.04/meta-data -------------------------------------------------------------------------------- /images/capi/packer/ova/linux/ubuntu/http/24.04.efi/meta-data: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/image-builder/398de17f3400fc3d619f3bc3dffbb90587c6b954/images/capi/packer/ova/linux/ubuntu/http/24.04.efi/meta-data -------------------------------------------------------------------------------- /images/capi/packer/ova/linux/ubuntu/http/24.04/meta-data: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/image-builder/398de17f3400fc3d619f3bc3dffbb90587c6b954/images/capi/packer/ova/linux/ubuntu/http/24.04/meta-data -------------------------------------------------------------------------------- /images/capi/packer/ova/photon-3.json: -------------------------------------------------------------------------------- 1 | { 2 | "boot_command_prefix": " vmlinuz initrd=initrd.img root/dev/ram0 loglevel=3 photon.media=cdrom ks=", 3 | "boot_command_suffix": "/3/ks.json", 4 | "boot_media_path": "http://{{ .HTTPIP }}:{{ .HTTPPort }}", 5 | "build_name": "photon-3", 6 | "distro_arch": "amd64", 7 | "distro_name": "photon", 8 | "distro_version": "3", 9 | "guest_os_type": "vmware-photon-64", 10 | "iso_checksum": "76fbe13df3f7340c94cf5706a0ec33ffc377c47e", 11 | "iso_checksum_type": "sha1", 12 | "iso_url": "https://packages.vmware.com/photon/3.0/Rev3/iso/Update1/photon-minimal-3.0-913b49438.iso", 13 | "os_display_name": "VMware Photon OS 64-bit", 14 | "shutdown_command": "shutdown now", 15 | "vsphere_guest_os_type": "vmwarePhoton64Guest" 16 | } 17 | -------------------------------------------------------------------------------- /images/capi/packer/ova/photon-4.json: -------------------------------------------------------------------------------- 1 | { 2 | "boot_command_prefix": " vmlinuz initrd=initrd.img root/dev/ram0 loglevel=3 photon.media=cdrom ks=", 3 | "boot_command_suffix": "/4/ks.json insecure_installation=1", 4 | "boot_media_path": "http://{{ .HTTPIP }}:{{ .HTTPPort }}", 5 | "build_name": "photon-4", 6 | "distro_arch": "amd64", 7 | "distro_name": "photon", 8 | "distro_version": "4", 9 | "guest_os_type": "vmware-photon-64", 10 | "iso_checksum": "4d5b9c6c59bbb7b6f501b7fa5e8af669332155ed", 11 | "iso_checksum_type": "sha1", 12 | "iso_url": "https://packages.vmware.com/photon/4.0/Rev2/iso/photon-minimal-4.0-c001795b8.iso", 13 | "os_display_name": "VMware Photon OS 64-bit", 14 | "shutdown_command": "shutdown now", 15 | "vsphere_guest_os_type": "vmwarePhoton64Guest" 16 | } 17 | -------------------------------------------------------------------------------- /images/capi/packer/ova/photon-5.json: -------------------------------------------------------------------------------- 1 | { 2 | "boot_command_prefix": " vmlinuz initrd=initrd.img root/dev/ram0 loglevel=3 photon.media=cdrom ks=", 3 | "boot_command_suffix": " insecure_installation=1", 4 | "boot_media_path": "/dev/sr1:/5/ks.json", 5 | "build_name": "photon-5", 6 | "cd_content_location": "./packer/ova/linux/{{user `distro_name`}}/http/*", 7 | "cd_label": "cidata", 8 | "cdrom_type": "sata", 9 | "distro_arch": "amd64", 10 | "distro_name": "photon", 11 | "distro_version": "5", 12 | "guest_os_type": "vmware-photon-64", 13 | "iso_checksum": "85cddaa8da26c095cf55d3f22f0838ad5d9ae73aa476d0c5c8e54bfbfcb432deaf940733c2cb5af14d1e5b133da65c17f3f4e215bf381d5b8b411d548b66a463", 14 | "iso_checksum_type": "sha512", 15 | "iso_url": "https://packages.vmware.com/photon/5.0/GA/iso/photon-minimal-5.0-dde71ec57.x86_64.iso", 16 | "os_display_name": "VMware Photon OS 64-bit", 17 | "shutdown_command": "shutdown now", 18 | "vsphere_guest_os_type": "vmwarePhoton64Guest" 19 | } 20 | -------------------------------------------------------------------------------- /images/capi/packer/ova/rhel-7.json: -------------------------------------------------------------------------------- 1 | { 2 | "boot_command_prefix": "quiet text inst.ks=hd:fd0:", 3 | "boot_command_suffix": "/7/ks.cfg", 4 | "boot_media_path": "/HTTP", 5 | "build_name": "rhel-7", 6 | "distro_arch": "amd64", 7 | "distro_name": "rhel", 8 | "distro_version": "7", 9 | "floppy_dirs": "./packer/ova/linux/{{user `distro_name`}}/http/", 10 | "guest_os_type": "rhel7-64", 11 | "iso_checksum": "19d653ce2f04f202e79773a0cbeda82070e7527557e814ebbce658773fbe8191", 12 | "iso_checksum_type": "sha256", 13 | "iso_url": "file:///rhel-server-7.9-x86_64-dvd.iso", 14 | "os_display_name": "RHEL 7", 15 | "redhat_epel_rpm": "https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm", 16 | "shutdown_command": "sys-unconfig", 17 | "vsphere_guest_os_type": "rhel7_64Guest" 18 | } 19 | -------------------------------------------------------------------------------- /images/capi/packer/ova/rhel-8.json: -------------------------------------------------------------------------------- 1 | { 2 | "boot_command_prefix": " text inst.ks=", 3 | "boot_command_suffix": "/8/ks.cfg", 4 | "boot_media_path": "http://{{ .HTTPIP }}:{{ .HTTPPort }}", 5 | "build_name": "rhel-8", 6 | "distro_arch": "amd64", 7 | "distro_name": "rhel", 8 | "distro_version": "8", 9 | "epel_rpm_gpg_key": "https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-8", 10 | "guest_os_type": "rhel8-64", 11 | "http_directory": "./packer/ova/linux/{{user `distro_name`}}/http/", 12 | "iso_checksum": "48f955712454c32718dcde858dea5aca574376a1d7a4b0ed6908ac0b85597811", 13 | "iso_checksum_type": "sha256", 14 | "iso_url": "file:///rhel-8.4-x86_64-dvd.iso", 15 | "os_display_name": "RHEL 8", 16 | "redhat_epel_rpm": "https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm", 17 | "shutdown_command": "shutdown -P now", 18 | "vsphere_guest_os_type": "rhel8_64Guest" 19 | } 20 | -------------------------------------------------------------------------------- /images/capi/packer/ova/rhel-9.json: -------------------------------------------------------------------------------- 1 | { 2 | "boot_command_prefix": "e text inst.ks=", 3 | "boot_command_suffix": "/9/ks.cfgx", 4 | "boot_media_path": "http://{{ .HTTPIP }}:{{ .HTTPPort }}", 5 | "build_name": "rhel-9", 6 | "distro_arch": "amd64", 7 | "distro_name": "rhel", 8 | "distro_version": "9", 9 | "epel_rpm_gpg_key": "https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-9", 10 | "firmware": "efi", 11 | "guest_os_type": "rhel9-64", 12 | "http_directory": "./packer/ova/linux/{{user `distro_name`}}/http/", 13 | "iso_checksum": "398561d7b66f1a4bf23664f4aa8f2cfbb3641aa2f01a320068e86bd1fc0e9076", 14 | "iso_checksum_type": "sha256", 15 | "iso_url": "file:///rhel-9.4-x86_64-dvd.iso", 16 | "os_display_name": "RHEL 9", 17 | "redhat_epel_rpm": "https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm", 18 | "shutdown_command": "shutdown -P now", 19 | "vmx_version": "18", 20 | "vsphere_guest_os_type": "rhel9_64Guest" 21 | } 22 | -------------------------------------------------------------------------------- /images/capi/packer/ova/rockylinux-8.json: -------------------------------------------------------------------------------- 1 | { 2 | "boot_command_prefix": " text inst.ks=", 3 | "boot_command_suffix": "/8/ks.cfg", 4 | "boot_media_path": "http://{{ .HTTPIP }}:{{ .HTTPPort }}", 5 | "build_name": "rockylinux-8", 6 | "distro_arch": "amd64", 7 | "distro_name": "rockylinux", 8 | "distro_version": "8", 9 | "epel_rpm_gpg_key": "https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-8", 10 | "guest_os_type": "rockylinux-64", 11 | "iso_checksum": "06019fd7c4f956b2b0ed37393e81c577885e4ebd518add249769846711a09dc4", 12 | "iso_checksum_type": "sha256", 13 | "iso_url": "https://download.rockylinux.org/pub/rocky/8/isos/x86_64/Rocky-8.9-x86_64-minimal.iso", 14 | "os_display_name": "RockyLinux 8", 15 | "redhat_epel_rpm": "https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm", 16 | "shutdown_command": "/sbin/halt -h -p", 17 | "vsphere_guest_os_type": "rockylinux_64Guest" 18 | } 19 | -------------------------------------------------------------------------------- /images/capi/packer/ova/rockylinux-9.json: -------------------------------------------------------------------------------- 1 | { 2 | "boot_command_prefix": "etext inst.ks=", 3 | "boot_command_suffix": "/9/ks.cfgx", 4 | "boot_media_path": "http://{{ .HTTPIP }}:{{ .HTTPPort }}", 5 | "build_name": "rockylinux-9", 6 | "distro_arch": "amd64", 7 | "distro_name": "rockylinux", 8 | "distro_version": "9", 9 | "epel_rpm_gpg_key": "https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-9", 10 | "firmware": "efi", 11 | "guest_os_type": "rockylinux-64", 12 | "iso_checksum": "ee3ac97fdffab58652421941599902012179c37535aece76824673105169c4a2", 13 | "iso_checksum_type": "sha256", 14 | "iso_url": "https://dl.rockylinux.org/vault/rocky/9.4/isos/x86_64/Rocky-9.4-x86_64-minimal.iso", 15 | "os_display_name": "RockyLinux 9", 16 | "redhat_epel_rpm": "https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm", 17 | "shutdown_command": "/sbin/halt -h -p", 18 | "vsphere_guest_os_type": "rockylinux_64Guest" 19 | } 20 | -------------------------------------------------------------------------------- /images/capi/packer/ova/ubuntu-2204-efi.json: -------------------------------------------------------------------------------- 1 | { 2 | "boot_command_prefix": "clinux /casper/vmlinuz ipv6.disable={{ user `boot_disable_ipv6` }} --- autoinstall ds='nocloud;'initrd /casper/initrdboot", 3 | "boot_disable_ipv6": "0", 4 | "boot_media_path": "/media/HTTP", 5 | "build_name": "ubuntu-2204-efi", 6 | "cd_content_location": "./packer/ova/linux/{{user `distro_name`}}/http/22.04.efi/*", 7 | "cd_label": "cidata", 8 | "distro_arch": "amd64", 9 | "distro_name": "ubuntu", 10 | "distro_version": "22.04", 11 | "firmware": "efi", 12 | "floppy_dirs": "", 13 | "guest_os_type": "ubuntu-64", 14 | "iso_checksum": "9bc6028870aef3f74f4e16b900008179e78b130e6b0b9a140635434a46aa98b0", 15 | "iso_checksum_type": "sha256", 16 | "iso_url": "https://releases.ubuntu.com/22.04.5/ubuntu-22.04.5-live-server-amd64.iso", 17 | "os_display_name": "Ubuntu 22.04", 18 | "shutdown_command": "shutdown -P now", 19 | "vsphere_guest_os_type": "ubuntu64Guest" 20 | } 21 | -------------------------------------------------------------------------------- /images/capi/packer/ova/ubuntu-2204.json: -------------------------------------------------------------------------------- 1 | { 2 | "boot_command_prefix": "clinux /casper/vmlinuz ipv6.disable={{ user `boot_disable_ipv6` }} --- autoinstall ds='nocloud;'initrd /casper/initrdboot", 3 | "boot_disable_ipv6": "0", 4 | "build_name": "ubuntu-2204", 5 | "cd_content_location": "./packer/ova/linux/{{user `distro_name`}}/http/{{user `distro_version`}}/*", 6 | "cd_label": "cidata", 7 | "distro_arch": "amd64", 8 | "distro_name": "ubuntu", 9 | "distro_version": "22.04", 10 | "floppy_dirs": "", 11 | "guest_os_type": "ubuntu-64", 12 | "iso_checksum": "9bc6028870aef3f74f4e16b900008179e78b130e6b0b9a140635434a46aa98b0", 13 | "iso_checksum_type": "sha256", 14 | "iso_url": "https://releases.ubuntu.com/22.04.5/ubuntu-22.04.5-live-server-amd64.iso", 15 | "os_display_name": "Ubuntu 22.04", 16 | "shutdown_command": "shutdown -P now", 17 | "vsphere_guest_os_type": "ubuntu64Guest" 18 | } 19 | -------------------------------------------------------------------------------- /images/capi/packer/ova/ubuntu-2404-efi.json: -------------------------------------------------------------------------------- 1 | { 2 | "boot_command_prefix": "clinux /casper/vmlinuz ipv6.disable={{ user `boot_disable_ipv6` }} --- autoinstall ds='nocloud;'initrd /casper/initrdboot", 3 | "boot_disable_ipv6": "0", 4 | "build_name": "ubuntu-2404-efi", 5 | "cd_content_location": "./packer/ova/linux/{{user `distro_name`}}/http/24.04.efi/*", 6 | "cd_label": "cidata", 7 | "distro_arch": "amd64", 8 | "distro_name": "ubuntu", 9 | "distro_version": "24.04", 10 | "firmware": "efi", 11 | "floppy_dirs": "", 12 | "guest_os_type": "ubuntu-64", 13 | "iso_checksum": "d6dab0c3a657988501b4bd76f1297c053df710e06e0c3aece60dead24f270b4d", 14 | "iso_checksum_type": "sha256", 15 | "iso_url": "https://releases.ubuntu.com/noble/ubuntu-24.04.2-live-server-amd64.iso", 16 | "os_display_name": "Ubuntu 24.04", 17 | "shutdown_command": "shutdown -P now", 18 | "vsphere_guest_os_type": "ubuntu64Guest" 19 | } 20 | -------------------------------------------------------------------------------- /images/capi/packer/ova/ubuntu-2404.json: -------------------------------------------------------------------------------- 1 | { 2 | "boot_command_prefix": "clinux /casper/vmlinuz ipv6.disable={{ user `boot_disable_ipv6` }} --- autoinstall ds='nocloud;'initrd /casper/initrdboot", 3 | "boot_disable_ipv6": "0", 4 | "build_name": "ubuntu-2404", 5 | "cd_content_location": "./packer/ova/linux/{{user `distro_name`}}/http/{{user `distro_version`}}/*", 6 | "cd_label": "cidata", 7 | "distro_arch": "amd64", 8 | "distro_name": "ubuntu", 9 | "distro_version": "24.04", 10 | "floppy_dirs": "", 11 | "guest_os_type": "ubuntu-64", 12 | "iso_checksum": "d6dab0c3a657988501b4bd76f1297c053df710e06e0c3aece60dead24f270b4d", 13 | "iso_checksum_type": "sha256", 14 | "iso_url": "https://releases.ubuntu.com/noble/ubuntu-24.04.2-live-server-amd64.iso", 15 | "os_display_name": "Ubuntu 24.04", 16 | "shutdown_command": "shutdown -P now", 17 | "vsphere_guest_os_type": "ubuntu64Guest" 18 | } 19 | -------------------------------------------------------------------------------- /images/capi/packer/ova/vmx.json: -------------------------------------------------------------------------------- 1 | { 2 | "source_path": "" 3 | } 4 | -------------------------------------------------------------------------------- /images/capi/packer/ova/vsphere.json: -------------------------------------------------------------------------------- 1 | { 2 | "cluster": "", 3 | "convert_to_template": "false", 4 | "create_snapshot": "true", 5 | "datacenter": "", 6 | "datastore": "", 7 | "folder": "", 8 | "insecure_connection": "false", 9 | "linked_clone": "true", 10 | "network": "", 11 | "password": "", 12 | "resource_pool": "", 13 | "template": "", 14 | "username": "", 15 | "vcenter_server": "" 16 | } 17 | -------------------------------------------------------------------------------- /images/capi/packer/ova/windows-2019-efi.json: -------------------------------------------------------------------------------- 1 | { 2 | "boot_command": "", 3 | "boot_wait": "2s", 4 | "build_name": "windows-2019-efi", 5 | "disk_controller_type": "pvscsi", 6 | "distro_arch": "amd64", 7 | "distro_name": "windows", 8 | "distro_version": "2019", 9 | "firmware": "efi", 10 | "guest_os_type": "Windows2019Server-64", 11 | "iso_checksum": "none", 12 | "local_guest_os_type": "windows2019srv-64", 13 | "os_display_name": "Windows Server 2019", 14 | "os_iso_path": "[datastore] ISO/en_windows_server_2019_x64_dvd_4cb967d8.iso", 15 | "os_iso_url": "file:/path/en_windows_server_2019_x64_dvd_4cb967d8.iso", 16 | "vmtools_iso_path": "[datastore] ISO/vmtools/windows-12.5.1.iso", 17 | "vmtools_iso_url": "file:/path/VMware-tools-windows-12.5.1-24649672.iso", 18 | "vmx_version": "18", 19 | "vsphere_guest_os_type": "windows2019srv_64Guest" 20 | } 21 | -------------------------------------------------------------------------------- /images/capi/packer/ova/windows-2019.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "windows-2019", 3 | "disk_controller_type": "pvscsi", 4 | "distro_arch": "amd64", 5 | "distro_name": "windows", 6 | "distro_version": "2019", 7 | "guest_os_type": "Windows2019Server-64", 8 | "iso_checksum": "none", 9 | "local_guest_os_type": "windows2019srv-64", 10 | "os_display_name": "Windows Server 2019", 11 | "os_iso_path": "[datastore] ISO/en_windows_server_2019_x64_dvd_4cb967d8.iso", 12 | "os_iso_url": "file:/path/en_windows_server_2019_x64_dvd_4cb967d8.iso", 13 | "vmtools_iso_path": "[datastore] ISO/vmtools/windows-12.5.1.iso", 14 | "vmtools_iso_url": "file:/path/VMware-tools-windows-12.5.1-24649672.iso", 15 | "vmx_version": "18", 16 | "vsphere_guest_os_type": "windows2019srv_64Guest" 17 | } 18 | -------------------------------------------------------------------------------- /images/capi/packer/ova/windows-2022-efi.json: -------------------------------------------------------------------------------- 1 | { 2 | "boot_command": "", 3 | "boot_wait": "2s", 4 | "build_name": "windows-2022-efi", 5 | "disk_controller_type": "pvscsi", 6 | "distro_arch": "amd64", 7 | "distro_name": "windows", 8 | "distro_version": "2022", 9 | "firmware": "efi", 10 | "guest_os_type": "Windows2022Server-64", 11 | "iso_checksum": "none", 12 | "local_guest_os_type": "windows2019srvNext-64", 13 | "os_display_name": "Windows Server 2022", 14 | "os_iso_path": "[datastore] ISO/en-us_windows_server_2022_x64_dvd_620d7eac.iso", 15 | "os_iso_url": "file:/path/en-us_windows_server_2022_x64_dvd_620d7eac.iso", 16 | "vmtools_iso_path": "[datastore] ISO/vmtools/windows-12.5.1.iso", 17 | "vmtools_iso_url": "file:/path/VMware-tools-windows-12.5.1-24649672.iso", 18 | "vmx_version": "18", 19 | "vsphere_guest_os_type": "windows2019srvNext_64Guest" 20 | } 21 | -------------------------------------------------------------------------------- /images/capi/packer/ova/windows-2022.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "windows-2022", 3 | "disk_controller_type": "pvscsi", 4 | "distro_arch": "amd64", 5 | "distro_name": "windows", 6 | "distro_version": "2022", 7 | "guest_os_type": "Windows2022Server-64", 8 | "iso_checksum": "none", 9 | "local_guest_os_type": "windows2019srvNext-64", 10 | "os_display_name": "Windows Server 2022", 11 | "os_iso_path": "[datastore] ISO/en-us_windows_server_2022_x64_dvd_620d7eac.iso", 12 | "os_iso_url": "file:/path/en-us_windows_server_2022_x64_dvd_620d7eac.iso", 13 | "vmtools_iso_path": "[datastore] ISO/vmtools/windows-12.5.1.iso", 14 | "vmtools_iso_url": "file:/path/VMware-tools-windows-12.5.1-24649672.iso", 15 | "vmx_version": "18", 16 | "vsphere_guest_os_type": "windows2019srvNext_64Guest" 17 | } 18 | -------------------------------------------------------------------------------- /images/capi/packer/ova/windows/disable-network-discovery.cmd: -------------------------------------------------------------------------------- 1 | reg ADD HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff /f 2 | netsh advfirewall firewall set rule group="Network Discovery" new enable=No -------------------------------------------------------------------------------- /images/capi/packer/ova/windows/disable-winrm.ps1: -------------------------------------------------------------------------------- 1 | netsh advfirewall firewall set rule name="Windows Remote Management (HTTP-In)" new enable=yes action=block 2 | netsh advfirewall firewall set rule group="Windows Remote Management" new enable=yes 3 | $winrmService = Get-Service -Name WinRM 4 | if ($winrmService.Status -eq "Running"){ 5 | Disable-PSRemoting -Force 6 | } 7 | Stop-Service winrm 8 | Set-Service -Name winrm -StartupType Disabled 9 | -------------------------------------------------------------------------------- /images/capi/packer/ova/windows/enable-winrm.ps1: -------------------------------------------------------------------------------- 1 | 2 | $NetworkListManager = [Activator]::CreateInstance([Type]::GetTypeFromCLSID([Guid]"{DCB00C01-570F-4A9B-8D69-199FDBA5723B}")) 3 | $Connections = $NetworkListManager.GetNetworkConnections() 4 | $Connections | ForEach-Object { $_.GetNetwork().SetCategory(1) } 5 | 6 | Enable-PSRemoting -Force 7 | winrm quickconfig -q 8 | winrm quickconfig -transport:http 9 | winrm set winrm/config '@{MaxTimeoutms="1800000"}' 10 | winrm set winrm/config/winrs '@{MaxMemoryPerShellMB="800"}' 11 | winrm set winrm/config/service '@{AllowUnencrypted="true"}' 12 | winrm set winrm/config/service/auth '@{Basic="true"}' 13 | winrm set winrm/config/client/auth '@{Basic="true"}' 14 | winrm set winrm/config/listener?Address=*+Transport=HTTP '@{Port="5985"}' 15 | netsh advfirewall firewall set rule group="Windows Remote Administration" new enable=yes 16 | netsh advfirewall firewall set rule name="Windows Remote Management (HTTP-In)" new enable=yes action=allow 17 | Set-Service winrm -startuptype "auto" 18 | Restart-Service winrm 19 | -------------------------------------------------------------------------------- /images/capi/packer/ova/windows/pvscsi/amd64/pvscsi.cat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/image-builder/398de17f3400fc3d619f3bc3dffbb90587c6b954/images/capi/packer/ova/windows/pvscsi/amd64/pvscsi.cat -------------------------------------------------------------------------------- /images/capi/packer/ova/windows/pvscsi/amd64/pvscsi.sys: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/image-builder/398de17f3400fc3d619f3bc3dffbb90587c6b954/images/capi/packer/ova/windows/pvscsi/amd64/pvscsi.sys -------------------------------------------------------------------------------- /images/capi/packer/ova/windows/pvscsi/amd64/txtsetup.oem: -------------------------------------------------------------------------------- 1 | 2 | ; txtsetup.oem file. 3 | ; Required to install the pvscsi driver at install time. 4 | 5 | [Disks] 6 | ;"directory" should specify the full-path as per the documentation, but only 7 | ; relative paths worked during testing. 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | [Defaults] 20 | SCSI = pvscsi 21 | 22 | [SCSI] 23 | pvscsi = "VMware PVSCSI Controller" 24 | 25 | [Files.SCSI.pvscsi] 26 | driver = disk,pvscsi.sys,pvscsi 27 | inf = disk,pvscsi.inf 28 | catalog = disk,pvscsi.cat 29 | 30 | [Config.pvscsi] 31 | value = Parameters\PnpInterface, 5 ,REG_DWORD, 1 32 | value = Parameters, BusType, REG_DWORD, A 33 | 34 | [HardwareIds.scsi.pvscsi] 35 | id = "PCI\VEN_15AD&DEV_07C0", "pvscsi" 36 | -------------------------------------------------------------------------------- /images/capi/packer/ova/windows/pvscsi/i386/pvscsi.cat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/image-builder/398de17f3400fc3d619f3bc3dffbb90587c6b954/images/capi/packer/ova/windows/pvscsi/i386/pvscsi.cat -------------------------------------------------------------------------------- /images/capi/packer/ova/windows/pvscsi/i386/pvscsi.sys: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/image-builder/398de17f3400fc3d619f3bc3dffbb90587c6b954/images/capi/packer/ova/windows/pvscsi/i386/pvscsi.sys -------------------------------------------------------------------------------- /images/capi/packer/ova/windows/pvscsi/i386/txtsetup.oem: -------------------------------------------------------------------------------- 1 | 2 | ; txtsetup.oem file. 3 | ; Required to install the pvscsi driver at install time. 4 | 5 | [Disks] 6 | ;"directory" should specify the full-path as per the documentation, but only 7 | ; relative paths worked during testing. 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | [Defaults] 20 | SCSI = pvscsi 21 | 22 | [SCSI] 23 | pvscsi = "VMware PVSCSI Controller" 24 | 25 | [Files.SCSI.pvscsi] 26 | driver = disk,pvscsi.sys,pvscsi 27 | inf = disk,pvscsi.inf 28 | catalog = disk,pvscsi.cat 29 | 30 | [Config.pvscsi] 31 | value = Parameters\PnpInterface, 5 ,REG_DWORD, 1 32 | value = Parameters, BusType, REG_DWORD, A 33 | 34 | [HardwareIds.scsi.pvscsi] 35 | id = "PCI\VEN_15AD&DEV_07C0", "pvscsi" 36 | -------------------------------------------------------------------------------- /images/capi/packer/ova/windows/sysprep.ps1: -------------------------------------------------------------------------------- 1 | Write-Output '>>> Sysprepping VM ...' 2 | if( Test-Path $Env:SystemRoot\system32\Sysprep\unattend.xml ) { 3 | Remove-Item $Env:SystemRoot\system32\Sysprep\unattend.xml -Force 4 | } 5 | $unattendedXml = "$ENV:ProgramFiles\Cloudbase Solutions\Cloudbase-Init\conf\Unattend.xml" 6 | $FileExists = Test-Path $unattendedXml 7 | If ($FileExists -eq $True) { 8 | # Use the Cloudbase-init provided unattend file during install 9 | Write-Output "Using cloudbase-init unattend file for sysprep: $unattendedXml" 10 | & $Env:SystemRoot\System32\Sysprep\Sysprep.exe /oobe /generalize /mode:vm /shutdown /quiet /unattend:$unattendedXml 11 | }else { 12 | & $Env:SystemRoot\System32\Sysprep\Sysprep.exe /oobe /generalize /mode:vm /shutdown /quiet 13 | } 14 | -------------------------------------------------------------------------------- /images/capi/packer/powervs/centos-8.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "centos-streams8", 3 | "epel_rpm_gpg_key": "https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-8", 4 | "redhat_epel_rpm": "https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm", 5 | "source_cos_bucket": "power-oss-bucket", 6 | "source_cos_object": "centos-streams-8.ova.gz", 7 | "source_cos_region": "us-south", 8 | "ssh_username": "root" 9 | } 10 | -------------------------------------------------------------------------------- /images/capi/packer/powervs/centos-9.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "centos-streams9", 3 | "epel_rpm_gpg_key": "https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-9", 4 | "redhat_epel_rpm": "https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm", 5 | "source_cos_bucket": "power-oss-bucket", 6 | "source_cos_object": "centos-streams-9.ova.gz", 7 | "source_cos_region": "us-south", 8 | "ssh_username": "root" 9 | } 10 | -------------------------------------------------------------------------------- /images/capi/packer/proxmox/.gitignore: -------------------------------------------------------------------------------- 1 | packer.json 2 | ks.cfg 3 | user-data 4 | -------------------------------------------------------------------------------- /images/capi/packer/proxmox/config.pkr.hcl: -------------------------------------------------------------------------------- 1 | packer { 2 | required_plugins { 3 | proxmox = { 4 | version = ">= 1.1.2" 5 | source = "github.com/hashicorp/proxmox" 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /images/capi/packer/proxmox/linux/ubuntu/http/22.04/meta-data: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/image-builder/398de17f3400fc3d619f3bc3dffbb90587c6b954/images/capi/packer/proxmox/linux/ubuntu/http/22.04/meta-data -------------------------------------------------------------------------------- /images/capi/packer/proxmox/linux/ubuntu/http/24.04.efi/meta-data: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/image-builder/398de17f3400fc3d619f3bc3dffbb90587c6b954/images/capi/packer/proxmox/linux/ubuntu/http/24.04.efi/meta-data -------------------------------------------------------------------------------- /images/capi/packer/proxmox/linux/ubuntu/http/24.04/meta-data: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/image-builder/398de17f3400fc3d619f3bc3dffbb90587c6b954/images/capi/packer/proxmox/linux/ubuntu/http/24.04/meta-data -------------------------------------------------------------------------------- /images/capi/packer/proxmox/rockylinux-9.json: -------------------------------------------------------------------------------- 1 | { 2 | "boot_command_prefix": " text inst.ks=", 3 | "boot_command_suffix": "/9/ks.cfg", 4 | "boot_media_path": "http://{{ .HTTPIP }}:{{ .HTTPPort }}", 5 | "build_name": "rockylinux-9", 6 | "distro_arch": "amd64", 7 | "distro_name": "rockylinux", 8 | "distro_version": "9", 9 | "epel_rpm_gpg_key": "https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-9", 10 | "firmware": "efi", 11 | "guest_os_type": "rockylinux-64", 12 | "iso_checksum": "ee3ac97fdffab58652421941599902012179c37535aece76824673105169c4a2", 13 | "iso_checksum_type": "sha256", 14 | "iso_url": "https://dl.rockylinux.org/vault/rocky/9.4/isos/x86_64/Rocky-9.4-x86_64-minimal.iso", 15 | "os_display_name": "RockyLinux 9", 16 | "redhat_epel_rpm": "https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm", 17 | "shutdown_command": "/sbin/halt -h -p", 18 | "vsphere_guest_os_type": "rockylinux_64Guest" 19 | } 20 | -------------------------------------------------------------------------------- /images/capi/packer/proxmox/ubuntu-2204.json: -------------------------------------------------------------------------------- 1 | { 2 | "boot_command_prefix": "clinux /casper/vmlinuz --- autoinstall ds='nocloud-net;s=http://{{ .HTTPIP }}:{{ .HTTPPort }}/22.04/'initrd /casper/initrd boot ", 3 | "build_name": "ubuntu-2204", 4 | "distribution_version": "2204", 5 | "distro_name": "ubuntu", 6 | "iso_checksum": "9bc6028870aef3f74f4e16b900008179e78b130e6b0b9a140635434a46aa98b0", 7 | "iso_checksum_type": "sha256", 8 | "iso_file": "{{env `ISO_FILE`}}", 9 | "iso_url": "https://releases.ubuntu.com/22.04.5/ubuntu-22.04.5-live-server-amd64.iso", 10 | "os_display_name": "Ubuntu 22.04", 11 | "source_image": "ubuntu-20-04-x64", 12 | "unmount_iso": "true", 13 | "version": "22.04" 14 | } 15 | -------------------------------------------------------------------------------- /images/capi/packer/proxmox/ubuntu-2404-efi.json: -------------------------------------------------------------------------------- 1 | { 2 | "bios": "ovmf", 3 | "boot_command_prefix": "clinux /casper/vmlinuz --- autoinstall ds='nocloud-net;s=http://{{ .HTTPIP }}:{{ .HTTPPort }}/24.04/'initrd /casper/initrdboot", 4 | "build_name": "ubuntu-2404-efi", 5 | "distribution_version": "2404", 6 | "distro_name": "ubuntu", 7 | "iso_checksum": "d6dab0c3a657988501b4bd76f1297c053df710e06e0c3aece60dead24f270b4d", 8 | "iso_checksum_type": "sha256", 9 | "iso_file": "{{env `ISO_FILE`}}", 10 | "iso_url": "https://releases.ubuntu.com/noble/ubuntu-24.04.2-live-server-amd64.iso", 11 | "os_display_name": "Ubuntu 24.04", 12 | "unmount_iso": "true", 13 | "version": "24.04" 14 | } 15 | -------------------------------------------------------------------------------- /images/capi/packer/proxmox/ubuntu-2404.json: -------------------------------------------------------------------------------- 1 | { 2 | "boot_command_prefix": "clinux /casper/vmlinuz --- autoinstall ds='nocloud-net;s=http://{{ .HTTPIP }}:{{ .HTTPPort }}/24.04/'initrd /casper/initrdboot", 3 | "build_name": "ubuntu-2404", 4 | "distribution_version": "2404", 5 | "distro_name": "ubuntu", 6 | "iso_checksum": "d6dab0c3a657988501b4bd76f1297c053df710e06e0c3aece60dead24f270b4d", 7 | "iso_checksum_type": "sha256", 8 | "iso_file": "{{env `ISO_FILE`}}", 9 | "iso_url": "https://releases.ubuntu.com/noble/ubuntu-24.04.2-live-server-amd64.iso", 10 | "os_display_name": "Ubuntu 24.04", 11 | "source_image": "ubuntu-20-04-x64", 12 | "unmount_iso": "true", 13 | "version": "24.04" 14 | } 15 | -------------------------------------------------------------------------------- /images/capi/packer/qemu/.gitignore: -------------------------------------------------------------------------------- 1 | packer.json 2 | ks.cfg 3 | preseed.cfg 4 | preseed-efi.cfg 5 | user-data 6 | -------------------------------------------------------------------------------- /images/capi/packer/qemu/OWNERS: -------------------------------------------------------------------------------- 1 | # See the OWNERS docs at https://go.k8s.io/owners 2 | 3 | approvers: 4 | - cluster-api-openstack-maintainers 5 | - cluster-api-cloudstack-maintainers 6 | 7 | reviewers: 8 | - cluster-api-openstack-maintainers 9 | - image-builder-openstack-reviewers 10 | - cluster-api-cloudstack-maintainers 11 | - image-builder-cloudstack-reviewers 12 | -------------------------------------------------------------------------------- /images/capi/packer/qemu/README.md: -------------------------------------------------------------------------------- 1 | To build an image using a specific version of Kubernetes use the "PACKER_FLAGS" env var like in the example below: 2 | 3 | PACKER_FLAGS="--var 'kubernetes_rpm_version=1.28.3' --var 'kubernetes_semver=v1.28.3' --var 'kubernetes_series=v1.28' --var 'kubernetes_deb_version=1.28.3-1.1'" make build-kubevirt-qemu-ubuntu-2004 4 | 5 | P.S: In order to change disk size(defaults to 20GB as of 31.10.22) you can update PACKER_FLAGS with: 6 | --var 'disk_size=' -------------------------------------------------------------------------------- /images/capi/packer/qemu/cloud-init/meta-data: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/image-builder/398de17f3400fc3d619f3bc3dffbb90587c6b954/images/capi/packer/qemu/cloud-init/meta-data -------------------------------------------------------------------------------- /images/capi/packer/qemu/cloud-init/user-data.tmpl: -------------------------------------------------------------------------------- 1 | #cloud-config 2 | ssh_pwauth: true 3 | users: 4 | - name: builder 5 | passwd: $ENCRYPTED_SSH_PASSWORD 6 | groups: [adm, cdrom, dip, plugdev, lxd, sudo] 7 | lock-passwd: false 8 | sudo: ALL=(ALL) NOPASSWD:ALL 9 | shell: /bin/bash 10 | -------------------------------------------------------------------------------- /images/capi/packer/qemu/config.pkr.hcl: -------------------------------------------------------------------------------- 1 | packer { 2 | required_plugins { 3 | qemu = { 4 | source = "github.com/hashicorp/qemu" 5 | version = "~> 1.1.0" 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /images/capi/packer/qemu/linux/ubuntu/http/20.04/preseed-efi.cfg: -------------------------------------------------------------------------------- 1 | # Copyright 2019 The Kubernetes Authors. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | d-i preseed/include string ../base/preseed-efi.cfg 16 | -------------------------------------------------------------------------------- /images/capi/packer/qemu/linux/ubuntu/http/20.04/preseed.cfg: -------------------------------------------------------------------------------- 1 | # Copyright 2019 The Kubernetes Authors. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | d-i preseed/include string ../base/preseed.cfg 16 | -------------------------------------------------------------------------------- /images/capi/packer/qemu/linux/ubuntu/http/22.04.efi.qemu/meta-data: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/image-builder/398de17f3400fc3d619f3bc3dffbb90587c6b954/images/capi/packer/qemu/linux/ubuntu/http/22.04.efi.qemu/meta-data -------------------------------------------------------------------------------- /images/capi/packer/qemu/linux/ubuntu/http/22.04.efi/meta-data: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/image-builder/398de17f3400fc3d619f3bc3dffbb90587c6b954/images/capi/packer/qemu/linux/ubuntu/http/22.04.efi/meta-data -------------------------------------------------------------------------------- /images/capi/packer/qemu/linux/ubuntu/http/22.04/meta-data: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/image-builder/398de17f3400fc3d619f3bc3dffbb90587c6b954/images/capi/packer/qemu/linux/ubuntu/http/22.04/meta-data -------------------------------------------------------------------------------- /images/capi/packer/qemu/linux/ubuntu/http/23.04/meta-data: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/image-builder/398de17f3400fc3d619f3bc3dffbb90587c6b954/images/capi/packer/qemu/linux/ubuntu/http/23.04/meta-data -------------------------------------------------------------------------------- /images/capi/packer/qemu/linux/ubuntu/http/24.04.efi/meta-data: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/image-builder/398de17f3400fc3d619f3bc3dffbb90587c6b954/images/capi/packer/qemu/linux/ubuntu/http/24.04.efi/meta-data -------------------------------------------------------------------------------- /images/capi/packer/qemu/linux/ubuntu/http/24.04/meta-data: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/image-builder/398de17f3400fc3d619f3bc3dffbb90587c6b954/images/capi/packer/qemu/linux/ubuntu/http/24.04/meta-data -------------------------------------------------------------------------------- /images/capi/packer/qemu/qemu-centos-7.json: -------------------------------------------------------------------------------- 1 | { 2 | "ansible_extra_vars": "ansible_python_interpreter=/usr/bin/python extra_arguments =vvvv", 3 | "boot_command_prefix": " text ks=", 4 | "boot_command_suffix": "/7/ks.cfg", 5 | "build_name": "centos-7", 6 | "distribution_version": "7", 7 | "distro_arch": "amd64", 8 | "distro_name": "centos", 9 | "distro_version": "7", 10 | "guest_os_type": "centos7-64", 11 | "iso_checksum": "07b94e6b1a0b0260b94c83d6bb76b26bf7a310dc78d7a9c7432809fb9bc6194a", 12 | "iso_checksum_type": "sha256", 13 | "iso_url": "https://mirrors.edge.kernel.org/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-Minimal-2009.iso", 14 | "os_display_name": "CentOS 7", 15 | "shutdown_command": "sys-unconfig" 16 | } 17 | -------------------------------------------------------------------------------- /images/capi/packer/qemu/qemu-centos-9.json: -------------------------------------------------------------------------------- 1 | { 2 | "ansible_extra_vars": "ansible_python_interpreter=/usr/bin/python extra_arguments =vvvv", 3 | "boot_command_prefix": " text inst.ks=", 4 | "boot_command_suffix": "/9/ks.cfg", 5 | "boot_media_path": "http://{{ .HTTPIP }}:{{ .HTTPPort }}", 6 | "build_name": "centos-9", 7 | "distribution_version": "9", 8 | "distro_arch": "amd64", 9 | "distro_name": "centos", 10 | "distro_version": "9", 11 | "epel_rpm_gpg_key": "https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-9", 12 | "guest_os_type": "centos9-64", 13 | "iso_checksum": "01126d2baac31f520e5b6f20ef0a2d8f2de26c8ffdebbe3ddd0eea99f2c7a765", 14 | "iso_checksum_type": "sha256", 15 | "iso_url": "https://mirror.stream.centos.org/9-stream/BaseOS/x86_64/iso/CentOS-Stream-9-20240304.0-x86_64-dvd1.iso", 16 | "os_display_name": "CentOS 9 Stream", 17 | "redhat_epel_rpm": "https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm", 18 | "shutdown_command": "/sbin/halt -h -p" 19 | } 20 | -------------------------------------------------------------------------------- /images/capi/packer/qemu/qemu-rhel-8.json: -------------------------------------------------------------------------------- 1 | { 2 | "boot_command_prefix": " text inst.ks=", 3 | "boot_command_suffix": "/8/ks.cfg", 4 | "build_name": "rhel-8", 5 | "distribution_version": "8", 6 | "distro_name": "rhel", 7 | "distro_version": "8", 8 | "epel_rpm_gpg_key": "https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-8", 9 | "guest_os_type": "RedHat_64", 10 | "iso_checksum": "48f955712454c32718dcde858dea5aca574376a1d7a4b0ed6908ac0b85597811", 11 | "iso_checksum_type": "sha256", 12 | "iso_url": "rhel-8.4-x86_64-dvd.iso", 13 | "os_display_name": "RHEL 8", 14 | "redhat_epel_rpm": "https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm", 15 | "shutdown_command": "shutdown -P now" 16 | } 17 | -------------------------------------------------------------------------------- /images/capi/packer/qemu/qemu-rhel-9.json: -------------------------------------------------------------------------------- 1 | { 2 | "boot_command_prefix": " text inst.ks=", 3 | "boot_command_suffix": "/9/ks.cfg", 4 | "build_name": "rhel-9", 5 | "distribution_version": "9", 6 | "distro_name": "rhel", 7 | "distro_version": "9", 8 | "epel_rpm_gpg_key": "https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-9", 9 | "guest_os_type": "RedHat_64", 10 | "iso_checksum": "5c802147aa58429b21e223ee60e347e850d6b0d8680930c4ffb27340ffb687a8", 11 | "iso_checksum_type": "sha256", 12 | "iso_url": "rhel-9.3-x86_64-dvd.iso", 13 | "os_display_name": "RHEL 9", 14 | "redhat_epel_rpm": "https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm", 15 | "shutdown_command": "shutdown -P now" 16 | } 17 | -------------------------------------------------------------------------------- /images/capi/packer/qemu/qemu-rockylinux-8-cloudimg.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "rockylinux-8", 3 | "cd_files": "./packer/qemu/cloud-init/*", 4 | "disk_image": "true", 5 | "distribution_version": "8", 6 | "distro_arch": "amd64", 7 | "distro_name": "rockylinux", 8 | "distro_version": "8", 9 | "epel_rpm_gpg_key": "https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-8", 10 | "guest_os_type": "centos8-64", 11 | "iso_checksum": "https://dl.rockylinux.org/pub/rocky/8/images/x86_64/CHECKSUM", 12 | "iso_checksum_type": "file", 13 | "iso_url": "https://dl.rockylinux.org/pub/rocky/8/images/x86_64/Rocky-8-GenericCloud-Base.latest.x86_64.qcow2", 14 | "os_display_name": "RockyLinux 8", 15 | "redhat_epel_rpm": "https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm", 16 | "shutdown_command": "/sbin/halt -h -p" 17 | } 18 | -------------------------------------------------------------------------------- /images/capi/packer/qemu/qemu-rockylinux-8.json: -------------------------------------------------------------------------------- 1 | { 2 | "boot_command_prefix": " text inst.ks=", 3 | "boot_command_suffix": "/8/ks.cfg", 4 | "build_name": "rockylinux-8", 5 | "distribution_version": "8", 6 | "distro_arch": "amd64", 7 | "distro_name": "rockylinux", 8 | "distro_version": "8", 9 | "epel_rpm_gpg_key": "https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-8", 10 | "guest_os_type": "centos8-64", 11 | "iso_checksum": "06019fd7c4f956b2b0ed37393e81c577885e4ebd518add249769846711a09dc4", 12 | "iso_checksum_type": "sha256", 13 | "iso_url": "https://download.rockylinux.org/pub/rocky/8/isos/x86_64/Rocky-8.9-x86_64-minimal.iso", 14 | "os_display_name": "RockyLinux 8", 15 | "redhat_epel_rpm": "https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm", 16 | "shutdown_command": "/sbin/halt -h -p" 17 | } 18 | -------------------------------------------------------------------------------- /images/capi/packer/qemu/qemu-rockylinux-9-cloudimg.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "rockylinux-9", 3 | "cd_files": "./packer/qemu/cloud-init/*", 4 | "disk_image": "true", 5 | "distribution_version": "9", 6 | "distro_arch": "amd64", 7 | "distro_name": "rockylinux", 8 | "distro_version": "9", 9 | "epel_rpm_gpg_key": "https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-9", 10 | "guest_os_type": "centos9-64", 11 | "iso_checksum": "https://dl.rockylinux.org/pub/rocky/9/images/x86_64/CHECKSUM", 12 | "iso_checksum_type": "file", 13 | "iso_url": "https://dl.rockylinux.org/pub/rocky/9/images/x86_64/Rocky-9-GenericCloud-Base.latest.x86_64.qcow2", 14 | "os_display_name": "RockyLinux 9", 15 | "redhat_epel_rpm": "https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm", 16 | "shutdown_command": "/sbin/halt -h -p" 17 | } 18 | -------------------------------------------------------------------------------- /images/capi/packer/qemu/qemu-rockylinux-9.json: -------------------------------------------------------------------------------- 1 | { 2 | "boot_command_prefix": " text inst.ks=", 3 | "boot_command_suffix": "/9/ks.cfg", 4 | "build_name": "rockylinux-9", 5 | "distribution_version": "9", 6 | "distro_arch": "amd64", 7 | "distro_name": "rockylinux", 8 | "distro_version": "9", 9 | "epel_rpm_gpg_key": "https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-9", 10 | "guest_os_type": "centos9-64", 11 | "iso_checksum": "ee3ac97fdffab58652421941599902012179c37535aece76824673105169c4a2", 12 | "iso_checksum_type": "sha256", 13 | "iso_url": "https://dl.rockylinux.org/vault/rocky/9.4/isos/x86_64/Rocky-9.4-x86_64-minimal.iso", 14 | "os_display_name": "RockyLinux 9", 15 | "redhat_epel_rpm": "https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm", 16 | "shutdown_command": "/sbin/halt -h -p" 17 | } 18 | -------------------------------------------------------------------------------- /images/capi/packer/qemu/qemu-ubuntu-2204-cloudimg.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "ubuntu-2204", 3 | "cd_files": "./packer/qemu/cloud-init/*", 4 | "disk_image": "true", 5 | "distribution_version": "2204", 6 | "distro_name": "ubuntu", 7 | "guest_os_type": "ubuntu-64", 8 | "iso_checksum": "https://cloud-images.ubuntu.com/jammy/current/SHA256SUMS", 9 | "iso_checksum_type": "file", 10 | "iso_url": "https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img", 11 | "os_display_name": "Ubuntu 22.04", 12 | "shutdown_command": "shutdown -P now" 13 | } 14 | -------------------------------------------------------------------------------- /images/capi/packer/qemu/qemu-ubuntu-2204-efi.json: -------------------------------------------------------------------------------- 1 | { 2 | "boot_command_prefix": "clinux /casper/vmlinuz autoinstall ds='nocloud-net;s=http://{{ .HTTPIP }}:{{ .HTTPPort }}/' --- initrd /casper/initrdboot", 3 | "build_name": "ubuntu-2204-efi", 4 | "distro_name": "ubuntu", 5 | "firmware": "OVMF.fd", 6 | "guest_os_type": "ubuntu-64", 7 | "http_directory": "./packer/qemu/linux/ubuntu/http/22.04.efi.qemu", 8 | "iso_checksum": "9bc6028870aef3f74f4e16b900008179e78b130e6b0b9a140635434a46aa98b0", 9 | "iso_checksum_type": "sha256", 10 | "iso_url": "https://releases.ubuntu.com/22.04.5/ubuntu-22.04.5-live-server-amd64.iso", 11 | "os_display_name": "Ubuntu 22.04", 12 | "shutdown_command": "shutdown -P now", 13 | "unmount_iso": "true" 14 | } 15 | -------------------------------------------------------------------------------- /images/capi/packer/qemu/qemu-ubuntu-2204.json: -------------------------------------------------------------------------------- 1 | { 2 | "boot_command_prefix": "clinux /casper/vmlinuz --- autoinstall ds='nocloud-net;s=http://{{ .HTTPIP }}:{{ .HTTPPort }}/22.04/'initrd /casper/initrdboot", 3 | "build_name": "ubuntu-2204", 4 | "distribution_version": "2204", 5 | "distro_name": "ubuntu", 6 | "guest_os_type": "ubuntu-64", 7 | "iso_checksum": "9bc6028870aef3f74f4e16b900008179e78b130e6b0b9a140635434a46aa98b0", 8 | "iso_checksum_type": "sha256", 9 | "iso_url": "https://releases.ubuntu.com/22.04.5/ubuntu-22.04.5-live-server-amd64.iso", 10 | "os_display_name": "Ubuntu 22.04", 11 | "shutdown_command": "shutdown -P now", 12 | "unmount_iso": "true" 13 | } 14 | -------------------------------------------------------------------------------- /images/capi/packer/qemu/qemu-ubuntu-2304.json: -------------------------------------------------------------------------------- 1 | { 2 | "boot_command_prefix": "clinux /casper/vmlinuz --- autoinstall ds='nocloud-net;s=http://{{ .HTTPIP }}:{{ .HTTPPort }}/23.04/'initrd /casper/initrdboot", 3 | "build_name": "ubuntu-2304", 4 | "distribution_version": "2304", 5 | "distro_name": "ubuntu", 6 | "guest_os_type": "ubuntu-64", 7 | "iso_checksum": "c7cda48494a6d7d9665964388a3fc9c824b3bef0c9ea3818a1be982bc80d346b", 8 | "iso_checksum_type": "sha256", 9 | "iso_url": "https://old-releases.ubuntu.com/releases/23.04/ubuntu-23.04-live-server-amd64.iso", 10 | "os_display_name": "Ubuntu 23.04", 11 | "shutdown_command": "shutdown -P now", 12 | "unmount_iso": "true" 13 | } 14 | -------------------------------------------------------------------------------- /images/capi/packer/qemu/qemu-ubuntu-2404-efi.json: -------------------------------------------------------------------------------- 1 | { 2 | "boot_command_prefix": "clinux /casper/vmlinuz --- autoinstall ds='nocloud-net;s=http://{{ .HTTPIP }}:{{ .HTTPPort }}/24.04.efi/'initrd /casper/initrdboot", 3 | "build_name": "ubuntu-2404-efi", 4 | "distribution_version": "2404", 5 | "distro_name": "ubuntu", 6 | "firmware": "OVMF.fd", 7 | "guest_os_type": "ubuntu-64", 8 | "iso_checksum": "d6dab0c3a657988501b4bd76f1297c053df710e06e0c3aece60dead24f270b4d", 9 | "iso_checksum_type": "sha256", 10 | "iso_url": "https://releases.ubuntu.com/releases/24.04/ubuntu-24.04.2-live-server-amd64.iso", 11 | "os_display_name": "Ubuntu 24.04", 12 | "shutdown_command": "shutdown -P now", 13 | "unmount_iso": "true" 14 | } 15 | -------------------------------------------------------------------------------- /images/capi/packer/qemu/qemu-ubuntu-2404.json: -------------------------------------------------------------------------------- 1 | { 2 | "boot_command_prefix": "clinux /casper/vmlinuz --- autoinstall ds='nocloud-net;s=http://{{ .HTTPIP }}:{{ .HTTPPort }}/24.04/'initrd /casper/initrdboot", 3 | "build_name": "ubuntu-2404", 4 | "distribution_version": "2404", 5 | "distro_name": "ubuntu", 6 | "guest_os_type": "ubuntu-64", 7 | "iso_checksum": "d6dab0c3a657988501b4bd76f1297c053df710e06e0c3aece60dead24f270b4d", 8 | "iso_checksum_type": "sha256", 9 | "iso_url": "https://releases.ubuntu.com/releases/24.04/ubuntu-24.04.2-live-server-amd64.iso", 10 | "os_display_name": "Ubuntu 24.04", 11 | "shutdown_command": "shutdown -P now", 12 | "unmount_iso": "true" 13 | } 14 | -------------------------------------------------------------------------------- /images/capi/packer/qemu/scripts/build_kubevirt_image.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo "OUTPUT_DIR:$OUTPUT_DIR" 4 | echo "ARTIFACT_NAME:$ARTIFACT_NAME" 5 | echo "########" 6 | env 7 | cd $OUTPUT_DIR 8 | 9 | echo "FROM registry.access.redhat.com/ubi8/ubi:latest AS builder 10 | ADD --chown=107:107 $ARTIFACT_NAME /disk/image.qcow2 11 | 12 | FROM scratch 13 | COPY --from=builder /disk/* /disk/" > ./kubevirt-Dockerfile 14 | 15 | docker build -f ./kubevirt-Dockerfile . -t $1 -------------------------------------------------------------------------------- /images/capi/packer/raw/.gitignore: -------------------------------------------------------------------------------- 1 | packer.json 2 | ks.cfg 3 | ks-efi.cfg 4 | preseed.cfg 5 | preseed-efi.cfg 6 | user-data 7 | -------------------------------------------------------------------------------- /images/capi/packer/raw/OWNERS: -------------------------------------------------------------------------------- 1 | # See the OWNERS docs at https://go.k8s.io/owners 2 | 3 | approvers: 4 | - image-builder-raw-maintainers 5 | 6 | reviewers: 7 | - image-builder-raw-maintainers 8 | - image-builder-raw-reviewers 9 | -------------------------------------------------------------------------------- /images/capi/packer/raw/linux/ubuntu/http/20.04/preseed-efi.cfg: -------------------------------------------------------------------------------- 1 | # Copyright 2021 The Kubernetes Authors. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | d-i preseed/include string ../base/preseed-efi.cfg 16 | -------------------------------------------------------------------------------- /images/capi/packer/raw/linux/ubuntu/http/20.04/preseed.cfg: -------------------------------------------------------------------------------- 1 | # Copyright 2019 The Kubernetes Authors. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | d-i preseed/include string ../base/preseed.cfg 16 | -------------------------------------------------------------------------------- /images/capi/packer/raw/linux/ubuntu/http/22.04.efi/meta-data: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/image-builder/398de17f3400fc3d619f3bc3dffbb90587c6b954/images/capi/packer/raw/linux/ubuntu/http/22.04.efi/meta-data -------------------------------------------------------------------------------- /images/capi/packer/raw/linux/ubuntu/http/22.04/meta-data: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/image-builder/398de17f3400fc3d619f3bc3dffbb90587c6b954/images/capi/packer/raw/linux/ubuntu/http/22.04/meta-data -------------------------------------------------------------------------------- /images/capi/packer/raw/linux/ubuntu/http/24.04.efi/meta-data: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/image-builder/398de17f3400fc3d619f3bc3dffbb90587c6b954/images/capi/packer/raw/linux/ubuntu/http/24.04.efi/meta-data -------------------------------------------------------------------------------- /images/capi/packer/raw/linux/ubuntu/http/24.04/meta-data: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/image-builder/398de17f3400fc3d619f3bc3dffbb90587c6b954/images/capi/packer/raw/linux/ubuntu/http/24.04/meta-data -------------------------------------------------------------------------------- /images/capi/packer/raw/raw-rhel-8.json: -------------------------------------------------------------------------------- 1 | { 2 | "boot_command_prefix": " text inst.ks=", 3 | "boot_command_suffix": "/8/ks.cfg", 4 | "build_name": "rhel-8", 5 | "build_target": "raw", 6 | "distro_name": "rhel", 7 | "distro_version": "8", 8 | "epel_rpm_gpg_key": "https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-8", 9 | "guest_os_type": "RedHat_64", 10 | "iso_checksum": "a6a7418a75d721cc696d3cbdd648b5248808e7fef0f8742f518e43b46fa08139", 11 | "iso_checksum_type": "sha256", 12 | "iso_url": "file:///rhel-8.7-x86_64-dvd.iso", 13 | "os_display_name": "RHEL 8", 14 | "redhat_epel_rpm": "https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm", 15 | "shutdown_command": "shutdown -P now" 16 | } 17 | -------------------------------------------------------------------------------- /images/capi/packer/raw/raw-rhel-9-efi.json: -------------------------------------------------------------------------------- 1 | { 2 | "boot_command_prefix": "e text inst.ks=", 3 | "boot_command_suffix": "/9/ks-efi.cfgx", 4 | "build_name": "rhel-9", 5 | "build_target": "raw", 6 | "cpu_model": "host", 7 | "distribution_version": "9", 8 | "distro_name": "rhel", 9 | "distro_version": "9", 10 | "epel_rpm_gpg_key": "https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-9", 11 | "firmware": "OVMF.fd", 12 | "guest_os_type": "RedHat_64", 13 | "iso_checksum": "5c802147aa58429b21e223ee60e347e850d6b0d8680930c4ffb27340ffb687a8", 14 | "iso_checksum_type": "sha256", 15 | "iso_url": "rhel-9.3-x86_64-dvd.iso", 16 | "os_display_name": "RHEL 9", 17 | "redhat_epel_rpm": "https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm", 18 | "shutdown_command": "shutdown -P now" 19 | } 20 | -------------------------------------------------------------------------------- /images/capi/packer/raw/raw-rhel-9.json: -------------------------------------------------------------------------------- 1 | { 2 | "boot_command_prefix": " text inst.ks=", 3 | "boot_command_suffix": "/9/ks.cfg", 4 | "build_name": "rhel-9", 5 | "build_target": "raw", 6 | "cpu_model": "host", 7 | "distribution_version": "9", 8 | "distro_name": "rhel", 9 | "distro_version": "9", 10 | "epel_rpm_gpg_key": "https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-9", 11 | "guest_os_type": "RedHat_64", 12 | "iso_checksum": "5c802147aa58429b21e223ee60e347e850d6b0d8680930c4ffb27340ffb687a8", 13 | "iso_checksum_type": "sha256", 14 | "iso_url": "rhel-9.3-x86_64-dvd.iso", 15 | "os_display_name": "RHEL 9", 16 | "redhat_epel_rpm": "https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm", 17 | "shutdown_command": "shutdown -P now" 18 | } 19 | -------------------------------------------------------------------------------- /images/capi/packer/raw/raw-ubuntu-2204-efi.json: -------------------------------------------------------------------------------- 1 | { 2 | "boot_command_prefix": "clinux /casper/vmlinuz --- autoinstall ds='nocloud-net;s=http://{{ .HTTPIP }}:{{ .HTTPPort }}/22.04.efi/'initrd /casper/initrdboot", 3 | "build_name": "ubuntu-2204-efi", 4 | "build_target": "raw", 5 | "distro_arch": "amd64", 6 | "distro_name": "ubuntu", 7 | "distro_version": "22.04", 8 | "distro_version_slug": "2204", 9 | "firmware": "OVMF.fd", 10 | "guest_os_type": "ubuntu-64", 11 | "iso_checksum": "9bc6028870aef3f74f4e16b900008179e78b130e6b0b9a140635434a46aa98b0", 12 | "iso_checksum_type": "sha256", 13 | "iso_url": "https://releases.ubuntu.com/22.04.5/ubuntu-22.04.5-live-server-amd64.iso", 14 | "os_display_name": "Ubuntu 22.04", 15 | "shutdown_command": "shutdown -P now", 16 | "unmount_iso": "true" 17 | } 18 | -------------------------------------------------------------------------------- /images/capi/packer/raw/raw-ubuntu-2204.json: -------------------------------------------------------------------------------- 1 | { 2 | "boot_command_prefix": "clinux /casper/vmlinuz --- autoinstall ds='nocloud-net;s=http://{{ .HTTPIP }}:{{ .HTTPPort }}/22.04/'initrd /casper/initrdboot", 3 | "build_name": "ubuntu-2204", 4 | "build_target": "raw", 5 | "distro_arch": "amd64", 6 | "distro_name": "ubuntu", 7 | "distro_version": "22.04", 8 | "distro_version_slug": "2204", 9 | "guest_os_type": "ubuntu-64", 10 | "iso_checksum": "9bc6028870aef3f74f4e16b900008179e78b130e6b0b9a140635434a46aa98b0", 11 | "iso_checksum_type": "sha256", 12 | "iso_url": "https://releases.ubuntu.com/22.04.5/ubuntu-22.04.5-live-server-amd64.iso", 13 | "os_display_name": "Ubuntu 22.04", 14 | "shutdown_command": "shutdown -P now", 15 | "unmount_iso": "true" 16 | } 17 | -------------------------------------------------------------------------------- /images/capi/packer/raw/raw-ubuntu-2404-efi.json: -------------------------------------------------------------------------------- 1 | { 2 | "boot_command_prefix": "clinux /casper/vmlinuz --- autoinstall ds='nocloud-net;s=http://{{ .HTTPIP }}:{{ .HTTPPort }}/24.04.efi/'initrd /casper/initrdboot", 3 | "build_name": "ubuntu-2404-efi", 4 | "build_target": "raw", 5 | "distro_arch": "amd64", 6 | "distro_name": "ubuntu", 7 | "distro_version": "24.04", 8 | "distro_version_slug": "2404", 9 | "firmware": "OVMF.fd", 10 | "guest_os_type": "ubuntu-64", 11 | "iso_checksum": "d6dab0c3a657988501b4bd76f1297c053df710e06e0c3aece60dead24f270b4d", 12 | "iso_checksum_type": "sha256", 13 | "iso_url": "https://releases.ubuntu.com/releases/24.04/ubuntu-24.04.2-live-server-amd64.iso", 14 | "os_display_name": "Ubuntu 24.04", 15 | "shutdown_command": "shutdown -P now", 16 | "unmount_iso": "true" 17 | } 18 | -------------------------------------------------------------------------------- /images/capi/packer/raw/raw-ubuntu-2404.json: -------------------------------------------------------------------------------- 1 | { 2 | "boot_command_prefix": "clinux /casper/vmlinuz --- autoinstall ds='nocloud-net;s=http://{{ .HTTPIP }}:{{ .HTTPPort }}/24.04/'initrd /casper/initrdboot", 3 | "build_name": "ubuntu-2404", 4 | "build_target": "raw", 5 | "distro_arch": "amd64", 6 | "distro_name": "ubuntu", 7 | "distro_version": "24.04", 8 | "distro_version_slug": "2404", 9 | "guest_os_type": "ubuntu-64", 10 | "iso_checksum": "d6dab0c3a657988501b4bd76f1297c053df710e06e0c3aece60dead24f270b4d", 11 | "iso_checksum_type": "sha256", 12 | "iso_url": "https://releases.ubuntu.com/releases/24.04/ubuntu-24.04.2-live-server-amd64.iso", 13 | "os_display_name": "Ubuntu 24.04", 14 | "shutdown_command": "shutdown -P now", 15 | "unmount_iso": "true" 16 | } 17 | -------------------------------------------------------------------------------- /images/capi/packer/vultr/config.pkr.hcl: -------------------------------------------------------------------------------- 1 | packer { 2 | required_plugins { 3 | vultr = { 4 | source = "github.com/vultr/vultr" 5 | version = ">= 2.5.0" 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /images/capi/packer/vultr/ubuntu-2204.json: -------------------------------------------------------------------------------- 1 | { 2 | "build_name": "ubuntu-2204", 3 | "snapshot_name_suffix": "on Ubuntu 22.04", 4 | "source_image": "ubuntu-22-04-x64" 5 | } 6 | -------------------------------------------------------------------------------- /images/capi/scripts/ci-container-image.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Copyright 2021 The Kubernetes Authors. 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); 6 | # you may not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | 17 | ############################################################################### 18 | 19 | set -o errexit 20 | set -o nounset 21 | set -o pipefail 22 | 23 | [[ -n ${DEBUG:-} ]] && set -o xtrace 24 | 25 | CAPI_ROOT=$(dirname "${BASH_SOURCE[0]}")/.. 26 | cd "${CAPI_ROOT}" || exit 1 27 | 28 | make docker-build 29 | -------------------------------------------------------------------------------- /images/capi/scripts/ci-disable-goss-inspect.json: -------------------------------------------------------------------------------- 1 | { 2 | "goss_inspect_mode": "false" 3 | } 4 | -------------------------------------------------------------------------------- /images/capi/scripts/ci-outscale-nightly.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -o errexit 4 | set -o nounset 5 | set -o pipefail 6 | 7 | PACKER_VAR_FILES=packer/outscale/ci/nightly/overwrite-1-21.json make build-osc-all 8 | PACKER_VAR_FILES=packer/outscale/ci/nightly/overwrite-1-22.json make build-osc-all 9 | PACKER_VAR_FILES=packer/outscale/ci/nightly/overwrite-1-23.json make build-osc-all 10 | PACKER_VAR_FILES=packer/outscale/ci/nightly/overwrite-1-24.json make build-osc-all 11 | PACKER_VAR_FILES=packer/outscale/ci/nightly/overwrite-1-25.json make build-osc-all 12 | -------------------------------------------------------------------------------- /netlify.toml: -------------------------------------------------------------------------------- 1 | # Netlify build instructions 2 | [build] 3 | command = "./docs/book/build.sh" 4 | publish = "docs/book/book" 5 | 6 | # Standard Netlify redirects 7 | [[redirects]] 8 | from = "https://kubernetes-sigs-image-builder.netlify.com//*" 9 | to = "https://image-builder.sigs.k8s.io/:splat" 10 | status = 301 11 | force = true 12 | 13 | # HTTP-to-HTTPS rules 14 | [[redirects]] 15 | from = "http://image-builder.sigs.k8s.io/*" 16 | to = "https://image-builder.sigs.k8s.io/:splat" 17 | status = 301 18 | force = true 19 | 20 | [[redirects]] 21 | from = "http://kubernetes-sigs-image-builder.netlify.com/*" 22 | to = "http://image-builder.sigs.k8s.io/:splat" 23 | status = 301 24 | force = true 25 | --------------------------------------------------------------------------------