From 719e0d351e2a3d6d148cf19042f33b9250baf1ff Mon Sep 17 00:00:00 2001 From: Ondrej Vasko Date: Tue, 13 May 2025 11:34:23 +0200 Subject: [PATCH 1/2] Implement ansible-galaxy for collections of roles Signed-off-by: Ondrej Vasko --- .github/workflows/ansible-galaxy.yml | 23 +++++++++++++++++++ .gitignore | 1 + README.md | 1 + docs/book/src/capi/windows/windows.md | 4 ++-- images/capi/.ansible-lint-ignore | 20 ++++++++-------- images/capi/.gitignore | 1 + images/capi/Makefile | 13 +++++++++++ images/capi/ansible/.gitignore | 3 ++- images/capi/ansible/LICENSE | 1 + images/capi/ansible/README.md | 3 +++ images/capi/ansible/galaxy.yml | 17 ++++++++++++++ images/capi/ansible/meta/runtime.yml | 2 ++ .../ansible/{ => playbooks}/firstboot.yml | 0 images/capi/ansible/{ => playbooks}/node.yml | 0 .../capi/ansible/{ => playbooks}/python.yml | 0 .../capi/ansible/roles/containerd/README.md | 1 + .../roles/ecr_credential_provider/README.md | 1 + images/capi/ansible/roles/firstboot/README.md | 2 ++ .../capi/ansible/roles/kubernetes/README.md | 1 + .../load_additional_components/README.md | 1 + images/capi/ansible/roles/node/README.md | 1 + images/capi/ansible/roles/providers/README.md | 1 + images/capi/ansible/roles/python/README.md | 1 + images/capi/ansible/roles/setup/README.md | 1 + images/capi/ansible/roles/sysprep/README.md | 1 + images/capi/ansible/windows/LICENSE | 1 + images/capi/ansible/windows/README.md | 3 +++ images/capi/ansible/windows/galaxy.yml | 19 +++++++++++++++ images/capi/ansible/windows/meta/runtime.yml | 2 ++ .../windows/{ => playbooks}/node_windows.yml | 2 +- .../windows/roles/cloudbase_init/README.md | 1 + .../tasks/main.yml | 0 .../templates/cloudbase-init-unattend.conf | 0 .../templates/cloudbase-init.conf | 0 .../ansible/windows/roles/debug/README.md | 1 + .../capi/ansible/windows/roles/gmsa/README.md | 1 + .../windows/roles/kubernetes/README.md | 1 + .../load_additional_components/README.md | 1 + .../ansible/windows/roles/providers/README.md | 1 + .../ansible/windows/roles/runtimes/README.md | 1 + .../windows/roles/systemprep/README.md | 1 + images/capi/packer/ami/packer-windows.json | 2 +- images/capi/packer/ami/packer.json | 2 +- images/capi/packer/azure/packer-windows.json | 2 +- images/capi/packer/azure/packer.json | 4 ++-- images/capi/packer/digitalocean/packer.json | 2 +- images/capi/packer/gce/packer.json | 2 +- images/capi/packer/hcloud/packer-flatcar.json | 4 ++-- images/capi/packer/hcloud/packer.json | 4 ++-- images/capi/packer/huaweicloud/packer.json | 2 +- .../capi/packer/nutanix/packer-windows.json | 2 +- images/capi/packer/nutanix/packer.json.tmpl | 2 +- images/capi/packer/oci/packer-windows.json | 2 +- images/capi/packer/oci/packer.json | 2 +- images/capi/packer/openstack/packer.json | 2 +- images/capi/packer/outscale/packer.json | 2 +- images/capi/packer/ova/packer-node.json | 4 ++-- images/capi/packer/ova/packer-windows.json | 2 +- images/capi/packer/powervs/packer.json | 2 +- images/capi/packer/proxmox/packer.json.tmpl | 4 ++-- images/capi/packer/qemu/packer.json.tmpl | 4 ++-- images/capi/packer/raw/packer.json.tmpl | 4 ++-- images/capi/packer/vultr/packer.json | 2 +- 63 files changed, 150 insertions(+), 43 deletions(-) create mode 100644 .github/workflows/ansible-galaxy.yml create mode 120000 images/capi/ansible/LICENSE create mode 100644 images/capi/ansible/README.md create mode 100644 images/capi/ansible/galaxy.yml create mode 100644 images/capi/ansible/meta/runtime.yml rename images/capi/ansible/{ => playbooks}/firstboot.yml (100%) rename images/capi/ansible/{ => playbooks}/node.yml (100%) rename images/capi/ansible/{ => playbooks}/python.yml (100%) create mode 100644 images/capi/ansible/roles/containerd/README.md create mode 100644 images/capi/ansible/roles/ecr_credential_provider/README.md create mode 100644 images/capi/ansible/roles/kubernetes/README.md create mode 100644 images/capi/ansible/roles/load_additional_components/README.md create mode 100644 images/capi/ansible/roles/node/README.md create mode 100644 images/capi/ansible/roles/providers/README.md create mode 100644 images/capi/ansible/roles/python/README.md create mode 100644 images/capi/ansible/roles/setup/README.md create mode 100644 images/capi/ansible/roles/sysprep/README.md create mode 120000 images/capi/ansible/windows/LICENSE create mode 100644 images/capi/ansible/windows/README.md create mode 100644 images/capi/ansible/windows/galaxy.yml create mode 100644 images/capi/ansible/windows/meta/runtime.yml rename images/capi/ansible/windows/{ => playbooks}/node_windows.yml (99%) create mode 100644 images/capi/ansible/windows/roles/cloudbase_init/README.md rename images/capi/ansible/windows/roles/{cloudbase-init => cloudbase_init}/tasks/main.yml (100%) rename images/capi/ansible/windows/roles/{cloudbase-init => cloudbase_init}/templates/cloudbase-init-unattend.conf (100%) rename images/capi/ansible/windows/roles/{cloudbase-init => cloudbase_init}/templates/cloudbase-init.conf (100%) create mode 100644 images/capi/ansible/windows/roles/debug/README.md create mode 100644 images/capi/ansible/windows/roles/gmsa/README.md create mode 100644 images/capi/ansible/windows/roles/kubernetes/README.md create mode 100644 images/capi/ansible/windows/roles/load_additional_components/README.md create mode 100644 images/capi/ansible/windows/roles/providers/README.md create mode 100644 images/capi/ansible/windows/roles/runtimes/README.md create mode 100644 images/capi/ansible/windows/roles/systemprep/README.md diff --git a/.github/workflows/ansible-galaxy.yml b/.github/workflows/ansible-galaxy.yml new file mode 100644 index 0000000000..42116c9380 --- /dev/null +++ b/.github/workflows/ansible-galaxy.yml @@ -0,0 +1,23 @@ +--- +name: Release +run-name: Release Ansible Galaxy Collection +on: + push: + tags: + - 'v[0-9]+.[0-9]+.[0-9]+*' +jobs: + release: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Ansible Publish Linux/UNIX + uses: artis3n/ansible_galaxy_collection@v2 + with: + api_key: ${{ secrets.ANSIBLE_GALAXY_API_KEY }} + collection_dir: "images/capi/ansible/" + - name: Ansible Publish Windows + uses: artis3n/ansible_galaxy_collection@v2 + with: + api_key: ${{ secrets.ANSIBLE_GALAXY_API_KEY }} + collection_dir: "images/capi/ansible/windows/" \ No newline at end of file diff --git a/.gitignore b/.gitignore index 4149fa20a1..fdad12fc31 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .vscode/ .idea/ .venv/ +*.tar.gz diff --git a/README.md b/README.md index ddbd013864..ef135a9f27 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,7 @@ Image Builder is a tool for building Kubernetes virtual machine images across mu ### Useful links - [Quick Start for Cluster API Image Builder](https://image-builder.sigs.k8s.io/capi/quickstart.html) +- [Ansible Galaxy Collection](https://galaxy.ansible.com/ui/repo/published/kubernetes_sigs/image_builder/) ## Community, discussion, contribution, and support diff --git a/docs/book/src/capi/windows/windows.md b/docs/book/src/capi/windows/windows.md index 46b24c0224..e2866837a9 100644 --- a/docs/book/src/capi/windows/windows.md +++ b/docs/book/src/capi/windows/windows.md @@ -63,7 +63,7 @@ ansible_connection=winrm ansible_winrm_server_cert_validation=ignore ``` -Then run: `ansible-playbook -vvv node_windows.yml --extra-vars "@example.vars.yml` +Then run: `ansible-playbook -vvv playbooks/node_windows.yml --extra-vars "@example.vars.yml` ## macOS with ansible The WinRM connection plugin for Ansible on macOS causes connection issues which can result in `ERROR! A worker was found in a dead state`. See https://docs.ansible.com/ansible/latest/user_guide/windows_winrm.html#what-is-winrm for more details. @@ -75,7 +75,7 @@ To fix the issue on macOS is to set the no_proxy environment variable. Example: ``` ## Annual Channel -The [Windows Server Annual](https://techcommunity.microsoft.com/t5/windows-server-news-and-best/windows-server-annual-channel-for-containers/ba-p/3866248) channel licensing requires users to host their own image. +The [Windows Server Annual](https://techcommunity.microsoft.com/t5/windows-server-news-and-best/windows-server-annual-channel-for-containers/ba-p/3866248) channel licensing requires users to host their own image. In Azure this can be uploaded to an [Azure SIG](https://learn.microsoft.com/en-us/azure/virtual-machines/azure-compute-gallery), and the following environment variables should be set to use the source [shared image gallery](https://developer.hashicorp.com/packer/integrations/hashicorp/azure/v1.4.5/components/builder/arm#shared-image-gallery). diff --git a/images/capi/.ansible-lint-ignore b/images/capi/.ansible-lint-ignore index 44bb7b5b65..040f9b406a 100644 --- a/images/capi/.ansible-lint-ignore +++ b/images/capi/.ansible-lint-ignore @@ -1,10 +1,10 @@ # This file contains ignores rule violations for ansible-lint -ansible/firstboot.yml name[missing] -ansible/firstboot.yml name[play] -ansible/node.yml name[missing] -ansible/node.yml name[play] -ansible/python.yml name[missing] -ansible/python.yml name[play] +ansible/playbooks/firstboot.yml name[missing] +ansible/playbooks/firstboot.yml name[play] +ansible/playbooks/node.yml name[missing] +ansible/playbooks/node.yml name[play] +ansible/playbooks/python.yml name[missing] +ansible/playbooks/python.yml name[play] ansible/roles/containerd/tasks/main.yml name[missing] ansible/roles/containerd/tasks/main.yml risky-file-permissions ansible/roles/containerd/tasks/photon.yml no-changed-when @@ -117,10 +117,10 @@ ansible/roles/sysprep/tasks/redhat.yml name[missing] ansible/roles/sysprep/tasks/redhat.yml no-changed-when ansible/roles/sysprep/tasks/rpm_repos.yml no-changed-when ansible/windows/example.vars.yml yaml[line-length] -ansible/windows/node_windows.yml name[missing] -ansible/windows/node_windows.yml name[play] -ansible/windows/node_windows.yml schema[playbook] -ansible/windows/roles/cloudbase-init/tasks/main.yml schema[tasks] +ansible/windows/playbooks/node_windows.yml name[missing] +ansible/windows/playbooks/node_windows.yml name[play] +ansible/windows/playbooks/node_windows.yml schema[playbook] +ansible/windows/roles/cloudbase_init/tasks/main.yml schema[tasks] ansible/windows/roles/debug/defaults/main.yml var-naming[no-role-prefix] ansible/windows/roles/gmsa/tasks/main.yml name[missing] ansible/windows/roles/kubernetes/tasks/kubelet.yml name[missing] diff --git a/images/capi/.gitignore b/images/capi/.gitignore index d3d946cd88..0c3bf9130c 100644 --- a/images/capi/.gitignore +++ b/images/capi/.gitignore @@ -7,6 +7,7 @@ /.local/bin/ manifest.json **.DS_Store +*.tar.gz # Goss test droppings debug-goss-spec.yaml diff --git a/images/capi/Makefile b/images/capi/Makefile index 2c43af07e0..ef6110a3b0 100644 --- a/images/capi/Makefile +++ b/images/capi/Makefile @@ -1243,3 +1243,16 @@ update-centos-9-iso-checksums: ## Updates checksums for Centos 9 ISOs update-photon-iso-checksums: ## Updates checksums for Photon ISOs hack/update-iso-checksums.sh photon true $(MAKE) json-sort + +.PHONY: ansible-galaxy-build-linux +ansible-galaxy-build-linux: + ansible-galaxy collection build ansible/ + +.PHONY: ansible-galaxy-build-windows +ansible-galaxy-build-windows: + ansible-galaxy collection build ansible/windows + +.PHONY: ansible-galaxy-publish +ansible-galaxy-publish: ansible-galaxy-build-linux ansible-galaxy-build-windows + ansible-galaxy collection publish --api-key "${ANSIBLE_GALAXY_API_KEY}" ansible/ + ansible-galaxy collection publish --api-key "${ANSIBLE_GALAXY_API_KEY}" ansible/windows/ diff --git a/images/capi/ansible/.gitignore b/images/capi/ansible/.gitignore index 7e99e367f8..c281422d17 100644 --- a/images/capi/ansible/.gitignore +++ b/images/capi/ansible/.gitignore @@ -1 +1,2 @@ -*.pyc \ No newline at end of file +*.pyc +*.tar.gz diff --git a/images/capi/ansible/LICENSE b/images/capi/ansible/LICENSE new file mode 120000 index 0000000000..5853aaea53 --- /dev/null +++ b/images/capi/ansible/LICENSE @@ -0,0 +1 @@ +../../../LICENSE \ No newline at end of file diff --git a/images/capi/ansible/README.md b/images/capi/ansible/README.md new file mode 100644 index 0000000000..bb0b01c74c --- /dev/null +++ b/images/capi/ansible/README.md @@ -0,0 +1,3 @@ +# Ansible Galaxy Collection: kubernetes_sigs.image_builder + +Collection of ansible roles that install and configure Kubernetes orchestrator and related software compatible with UNIX and Linux operating systems. diff --git a/images/capi/ansible/galaxy.yml b/images/capi/ansible/galaxy.yml new file mode 100644 index 0000000000..c63ac57646 --- /dev/null +++ b/images/capi/ansible/galaxy.yml @@ -0,0 +1,17 @@ +namespace: kubernetes_sigs +name: image_builder +version: 0.2.0 +readme: "README.md" +authors: +- image-builder-maintainers (see OWNERS_ALIASES) +description: Collection of ansible roles that install and configure Kubernetes orchestrator and related software compatible with UNIX and Linux operating systems. +license_file: 'LICENSE' +tags: ["kubernetes", "k8s", "image_building"] +dependencies: {} +repository: https://github.com/kubernetes-sigs/image-builder +documentation: https://image-builder.sigs.k8s.io/ +homepage: https://image-builder.sigs.k8s.io/ +issues: https://github.com/kubernetes-sigs/image-builder/issues +build_ignore: +- windows +- "*.tar.gz" diff --git a/images/capi/ansible/meta/runtime.yml b/images/capi/ansible/meta/runtime.yml new file mode 100644 index 0000000000..25d420df6c --- /dev/null +++ b/images/capi/ansible/meta/runtime.yml @@ -0,0 +1,2 @@ +--- +requires_ansible: '>=2.15,<2.16' diff --git a/images/capi/ansible/firstboot.yml b/images/capi/ansible/playbooks/firstboot.yml similarity index 100% rename from images/capi/ansible/firstboot.yml rename to images/capi/ansible/playbooks/firstboot.yml diff --git a/images/capi/ansible/node.yml b/images/capi/ansible/playbooks/node.yml similarity index 100% rename from images/capi/ansible/node.yml rename to images/capi/ansible/playbooks/node.yml diff --git a/images/capi/ansible/python.yml b/images/capi/ansible/playbooks/python.yml similarity index 100% rename from images/capi/ansible/python.yml rename to images/capi/ansible/playbooks/python.yml diff --git a/images/capi/ansible/roles/containerd/README.md b/images/capi/ansible/roles/containerd/README.md new file mode 100644 index 0000000000..94a21e54f5 --- /dev/null +++ b/images/capi/ansible/roles/containerd/README.md @@ -0,0 +1 @@ +# Containerd Ansible Role \ No newline at end of file diff --git a/images/capi/ansible/roles/ecr_credential_provider/README.md b/images/capi/ansible/roles/ecr_credential_provider/README.md new file mode 100644 index 0000000000..b9d69a1632 --- /dev/null +++ b/images/capi/ansible/roles/ecr_credential_provider/README.md @@ -0,0 +1 @@ +# ECR Credential Ansible Role \ No newline at end of file diff --git a/images/capi/ansible/roles/firstboot/README.md b/images/capi/ansible/roles/firstboot/README.md index 6c06e79854..a5d3fff17b 100644 --- a/images/capi/ansible/roles/firstboot/README.md +++ b/images/capi/ansible/roles/firstboot/README.md @@ -1,2 +1,4 @@ +# Firstboot Ansible Role + This role is to be used for operating systems that require some operations that require a reboot. diff --git a/images/capi/ansible/roles/kubernetes/README.md b/images/capi/ansible/roles/kubernetes/README.md new file mode 100644 index 0000000000..aa672f1c13 --- /dev/null +++ b/images/capi/ansible/roles/kubernetes/README.md @@ -0,0 +1 @@ +# Kubernetes Ansible Role \ No newline at end of file diff --git a/images/capi/ansible/roles/load_additional_components/README.md b/images/capi/ansible/roles/load_additional_components/README.md new file mode 100644 index 0000000000..6546001a93 --- /dev/null +++ b/images/capi/ansible/roles/load_additional_components/README.md @@ -0,0 +1 @@ +# Load Additional Component Ansible Role \ No newline at end of file diff --git a/images/capi/ansible/roles/node/README.md b/images/capi/ansible/roles/node/README.md new file mode 100644 index 0000000000..9cb15d898b --- /dev/null +++ b/images/capi/ansible/roles/node/README.md @@ -0,0 +1 @@ +# Node Ansible Role \ No newline at end of file diff --git a/images/capi/ansible/roles/providers/README.md b/images/capi/ansible/roles/providers/README.md new file mode 100644 index 0000000000..38da1819aa --- /dev/null +++ b/images/capi/ansible/roles/providers/README.md @@ -0,0 +1 @@ +# Providers Ansible Role \ No newline at end of file diff --git a/images/capi/ansible/roles/python/README.md b/images/capi/ansible/roles/python/README.md new file mode 100644 index 0000000000..428d4ff1ad --- /dev/null +++ b/images/capi/ansible/roles/python/README.md @@ -0,0 +1 @@ +# Python Ansible Role \ No newline at end of file diff --git a/images/capi/ansible/roles/setup/README.md b/images/capi/ansible/roles/setup/README.md new file mode 100644 index 0000000000..6bd4d5fc93 --- /dev/null +++ b/images/capi/ansible/roles/setup/README.md @@ -0,0 +1 @@ +# Setup Ansible Role \ No newline at end of file diff --git a/images/capi/ansible/roles/sysprep/README.md b/images/capi/ansible/roles/sysprep/README.md new file mode 100644 index 0000000000..e6ba4ac698 --- /dev/null +++ b/images/capi/ansible/roles/sysprep/README.md @@ -0,0 +1 @@ +# Sysprep Ansible Role \ No newline at end of file diff --git a/images/capi/ansible/windows/LICENSE b/images/capi/ansible/windows/LICENSE new file mode 120000 index 0000000000..1477615432 --- /dev/null +++ b/images/capi/ansible/windows/LICENSE @@ -0,0 +1 @@ +../../../../LICENSE \ No newline at end of file diff --git a/images/capi/ansible/windows/README.md b/images/capi/ansible/windows/README.md new file mode 100644 index 0000000000..9a0d494ef9 --- /dev/null +++ b/images/capi/ansible/windows/README.md @@ -0,0 +1,3 @@ +# Ansible Galaxy Collection: kubernetes_sigs.image_builder + +Collection of ansible roles that install and configure Kubernetes orchestrator and related software compatible with Windows operating system. diff --git a/images/capi/ansible/windows/galaxy.yml b/images/capi/ansible/windows/galaxy.yml new file mode 100644 index 0000000000..7dcc4461b6 --- /dev/null +++ b/images/capi/ansible/windows/galaxy.yml @@ -0,0 +1,19 @@ +namespace: kubernetes_sigs +name: image_builder_windows +version: 0.2.0 +readme: "README.md" +authors: +- image-builder-maintainers (see OWNERS_ALIASES) +description: Collection of ansible roles that install and configure Kubernetes orchestrator and related software compatible with Windows operating system. +license_file: 'LICENSE' +tags: ["kubernetes", "k8s", "image_building"] +dependencies: {} +repository: https://github.com/kubernetes-sigs/image-builder +documentation: https://image-builder.sigs.k8s.io/ +homepage: https://image-builder.sigs.k8s.io/ +issues: https://github.com/kubernetes-sigs/image-builder/issues +build_ignore: +- ansible_winrm.ps1 +- example.vars.yml +- OWNERS +- "*.tar.gz" diff --git a/images/capi/ansible/windows/meta/runtime.yml b/images/capi/ansible/windows/meta/runtime.yml new file mode 100644 index 0000000000..25d420df6c --- /dev/null +++ b/images/capi/ansible/windows/meta/runtime.yml @@ -0,0 +1,2 @@ +--- +requires_ansible: '>=2.15,<2.16' diff --git a/images/capi/ansible/windows/node_windows.yml b/images/capi/ansible/windows/playbooks/node_windows.yml similarity index 99% rename from images/capi/ansible/windows/node_windows.yml rename to images/capi/ansible/windows/playbooks/node_windows.yml index 3855dfb758..8a38c4e499 100644 --- a/images/capi/ansible/windows/node_windows.yml +++ b/images/capi/ansible/windows/playbooks/node_windows.yml @@ -74,7 +74,7 @@ - ansible.builtin.include_role: name: systemprep - ansible.builtin.include_role: - name: cloudbase-init + name: cloudbase_init when: install_cloudbase_init - ansible.builtin.include_role: name: providers diff --git a/images/capi/ansible/windows/roles/cloudbase_init/README.md b/images/capi/ansible/windows/roles/cloudbase_init/README.md new file mode 100644 index 0000000000..9ae013192d --- /dev/null +++ b/images/capi/ansible/windows/roles/cloudbase_init/README.md @@ -0,0 +1 @@ +# Cloudbase Init Ansible Role (Windows) \ No newline at end of file diff --git a/images/capi/ansible/windows/roles/cloudbase-init/tasks/main.yml b/images/capi/ansible/windows/roles/cloudbase_init/tasks/main.yml similarity index 100% rename from images/capi/ansible/windows/roles/cloudbase-init/tasks/main.yml rename to images/capi/ansible/windows/roles/cloudbase_init/tasks/main.yml diff --git a/images/capi/ansible/windows/roles/cloudbase-init/templates/cloudbase-init-unattend.conf b/images/capi/ansible/windows/roles/cloudbase_init/templates/cloudbase-init-unattend.conf similarity index 100% rename from images/capi/ansible/windows/roles/cloudbase-init/templates/cloudbase-init-unattend.conf rename to images/capi/ansible/windows/roles/cloudbase_init/templates/cloudbase-init-unattend.conf diff --git a/images/capi/ansible/windows/roles/cloudbase-init/templates/cloudbase-init.conf b/images/capi/ansible/windows/roles/cloudbase_init/templates/cloudbase-init.conf similarity index 100% rename from images/capi/ansible/windows/roles/cloudbase-init/templates/cloudbase-init.conf rename to images/capi/ansible/windows/roles/cloudbase_init/templates/cloudbase-init.conf diff --git a/images/capi/ansible/windows/roles/debug/README.md b/images/capi/ansible/windows/roles/debug/README.md new file mode 100644 index 0000000000..792410ca95 --- /dev/null +++ b/images/capi/ansible/windows/roles/debug/README.md @@ -0,0 +1 @@ +# Debug Ansible Role (Windows) \ No newline at end of file diff --git a/images/capi/ansible/windows/roles/gmsa/README.md b/images/capi/ansible/windows/roles/gmsa/README.md new file mode 100644 index 0000000000..11d27a76a6 --- /dev/null +++ b/images/capi/ansible/windows/roles/gmsa/README.md @@ -0,0 +1 @@ +# GMSA Ansible Role (Windows) \ No newline at end of file diff --git a/images/capi/ansible/windows/roles/kubernetes/README.md b/images/capi/ansible/windows/roles/kubernetes/README.md new file mode 100644 index 0000000000..e8989e04d6 --- /dev/null +++ b/images/capi/ansible/windows/roles/kubernetes/README.md @@ -0,0 +1 @@ +# Kubernetes Ansible Role (Windows) \ No newline at end of file diff --git a/images/capi/ansible/windows/roles/load_additional_components/README.md b/images/capi/ansible/windows/roles/load_additional_components/README.md new file mode 100644 index 0000000000..eda728719d --- /dev/null +++ b/images/capi/ansible/windows/roles/load_additional_components/README.md @@ -0,0 +1 @@ +# Load Additional Components Ansible Role (Windows) \ No newline at end of file diff --git a/images/capi/ansible/windows/roles/providers/README.md b/images/capi/ansible/windows/roles/providers/README.md new file mode 100644 index 0000000000..e3e4a4f617 --- /dev/null +++ b/images/capi/ansible/windows/roles/providers/README.md @@ -0,0 +1 @@ +# Providers Ansible Role (Windows) \ No newline at end of file diff --git a/images/capi/ansible/windows/roles/runtimes/README.md b/images/capi/ansible/windows/roles/runtimes/README.md new file mode 100644 index 0000000000..cabf407723 --- /dev/null +++ b/images/capi/ansible/windows/roles/runtimes/README.md @@ -0,0 +1 @@ +# Runtimes Ansible Role (Windows) \ No newline at end of file diff --git a/images/capi/ansible/windows/roles/systemprep/README.md b/images/capi/ansible/windows/roles/systemprep/README.md new file mode 100644 index 0000000000..8c8b432fd4 --- /dev/null +++ b/images/capi/ansible/windows/roles/systemprep/README.md @@ -0,0 +1 @@ +# Systemprep Ansible Role (Windows) \ No newline at end of file diff --git a/images/capi/packer/ami/packer-windows.json b/images/capi/packer/ami/packer-windows.json index 86f07dcffb..06f7a61737 100644 --- a/images/capi/packer/ami/packer-windows.json +++ b/images/capi/packer/ami/packer-windows.json @@ -92,7 +92,7 @@ "--extra-vars", "{{user `ansible_user_vars`}}" ], - "playbook_file": "ansible/windows/node_windows.yml", + "playbook_file": "ansible/windows/playbooks/node_windows.yml", "type": "ansible", "use_proxy": false, "user": "Administrator" diff --git a/images/capi/packer/ami/packer.json b/images/capi/packer/ami/packer.json index 537c4adec3..4d418f4f26 100644 --- a/images/capi/packer/ami/packer.json +++ b/images/capi/packer/ami/packer.json @@ -102,7 +102,7 @@ "--scp-extra-args", "{{user `ansible_scp_extra_args`}}" ], - "playbook_file": "./ansible/node.yml", + "playbook_file": "./ansible/playbooks/node.yml", "type": "ansible" }, { diff --git a/images/capi/packer/azure/packer-windows.json b/images/capi/packer/azure/packer-windows.json index c6f4f310a4..64a91b8464 100644 --- a/images/capi/packer/azure/packer-windows.json +++ b/images/capi/packer/azure/packer-windows.json @@ -141,7 +141,7 @@ ], "max_retries": 5, "pause_before": "15s", - "playbook_file": "ansible/windows/node_windows.yml", + "playbook_file": "ansible/windows/playbooks/node_windows.yml", "type": "ansible", "use_proxy": false, "user": "packer" diff --git a/images/capi/packer/azure/packer.json b/images/capi/packer/azure/packer.json index 47a2255857..94753ba003 100644 --- a/images/capi/packer/azure/packer.json +++ b/images/capi/packer/azure/packer.json @@ -134,7 +134,7 @@ "--scp-extra-args", "{{user `ansible_scp_extra_args`}}" ], - "playbook_file": "./ansible/python.yml", + "playbook_file": "./ansible/playbooks/python.yml", "type": "ansible", "user": "packer" }, @@ -152,7 +152,7 @@ "--scp-extra-args", "{{user `ansible_scp_extra_args`}}" ], - "playbook_file": "./ansible/node.yml", + "playbook_file": "./ansible/playbooks/node.yml", "type": "ansible", "user": "packer" }, diff --git a/images/capi/packer/digitalocean/packer.json b/images/capi/packer/digitalocean/packer.json index a03d50f058..14de5c713a 100644 --- a/images/capi/packer/digitalocean/packer.json +++ b/images/capi/packer/digitalocean/packer.json @@ -43,7 +43,7 @@ "--scp-extra-args", "{{user `ansible_scp_extra_args`}}" ], - "playbook_file": "./ansible/node.yml", + "playbook_file": "./ansible/playbooks/node.yml", "type": "ansible", "user": "packer" } diff --git a/images/capi/packer/gce/packer.json b/images/capi/packer/gce/packer.json index c245b46e8d..1681d2ba8d 100644 --- a/images/capi/packer/gce/packer.json +++ b/images/capi/packer/gce/packer.json @@ -39,7 +39,7 @@ "--scp-extra-args", "{{user `ansible_scp_extra_args`}}" ], - "playbook_file": "./ansible/node.yml", + "playbook_file": "./ansible/playbooks/node.yml", "type": "ansible" }, { diff --git a/images/capi/packer/hcloud/packer-flatcar.json b/images/capi/packer/hcloud/packer-flatcar.json index 7db4c368a6..eaa1b5f672 100644 --- a/images/capi/packer/hcloud/packer-flatcar.json +++ b/images/capi/packer/hcloud/packer-flatcar.json @@ -72,7 +72,7 @@ "--scp-extra-args", "{{user `ansible_scp_extra_args`}}" ], - "playbook_file": "./ansible/python.yml", + "playbook_file": "./ansible/playbooks/python.yml", "type": "ansible", "user": "packer" }, @@ -90,7 +90,7 @@ "--scp-extra-args", "{{user `ansible_scp_extra_args`}}" ], - "playbook_file": "./ansible/node.yml", + "playbook_file": "./ansible/playbooks/node.yml", "type": "ansible", "user": "packer" }, diff --git a/images/capi/packer/hcloud/packer.json b/images/capi/packer/hcloud/packer.json index c542ccef8e..b91f1d8e84 100644 --- a/images/capi/packer/hcloud/packer.json +++ b/images/capi/packer/hcloud/packer.json @@ -58,7 +58,7 @@ "--scp-extra-args", "{{user `ansible_scp_extra_args`}}" ], - "playbook_file": "./ansible/python.yml", + "playbook_file": "./ansible/playbooks/python.yml", "type": "ansible", "user": "packer" }, @@ -76,7 +76,7 @@ "--scp-extra-args", "{{user `ansible_scp_extra_args`}}" ], - "playbook_file": "./ansible/node.yml", + "playbook_file": "./ansible/playbooks/node.yml", "type": "ansible", "user": "packer" }, diff --git a/images/capi/packer/huaweicloud/packer.json b/images/capi/packer/huaweicloud/packer.json index 58a8f969c9..57112d8a4f 100644 --- a/images/capi/packer/huaweicloud/packer.json +++ b/images/capi/packer/huaweicloud/packer.json @@ -74,7 +74,7 @@ "--scp-extra-args", "{{user `ansible_scp_extra_args`}}" ], - "playbook_file": "./ansible/node.yml", + "playbook_file": "./ansible/playbooks/node.yml", "type": "ansible" }, { diff --git a/images/capi/packer/nutanix/packer-windows.json b/images/capi/packer/nutanix/packer-windows.json index fff1c4be02..85b1bcd50c 100644 --- a/images/capi/packer/nutanix/packer-windows.json +++ b/images/capi/packer/nutanix/packer-windows.json @@ -64,7 +64,7 @@ "--extra-vars", "{{user `ansible_user_vars`}}" ], - "playbook_file": "ansible/windows/node_windows.yml", + "playbook_file": "ansible/windows/playbooks/node_windows.yml", "type": "ansible", "use_proxy": false, "user": "Administrator" diff --git a/images/capi/packer/nutanix/packer.json.tmpl b/images/capi/packer/nutanix/packer.json.tmpl index f6399859fc..19465d0f8c 100644 --- a/images/capi/packer/nutanix/packer.json.tmpl +++ b/images/capi/packer/nutanix/packer.json.tmpl @@ -73,7 +73,7 @@ "{{user `ansible_user_vars`}}", "--scp-extra-args={{user `scp_extra_vars`}}" ], - "playbook_file": "./ansible/node.yml", + "playbook_file": "./ansible/playbooks/node.yml", "type": "ansible", "user": "builder" }, diff --git a/images/capi/packer/oci/packer-windows.json b/images/capi/packer/oci/packer-windows.json index 4eadb67cde..c2ee99f9e9 100644 --- a/images/capi/packer/oci/packer-windows.json +++ b/images/capi/packer/oci/packer-windows.json @@ -70,7 +70,7 @@ ], "max_retries": 5, "pause_before": "15s", - "playbook_file": "ansible/windows/node_windows.yml", + "playbook_file": "ansible/windows/playbooks/node_windows.yml", "type": "ansible", "use_proxy": false, "user": "opc" diff --git a/images/capi/packer/oci/packer.json b/images/capi/packer/oci/packer.json index a48a1b79cf..8c6bab72d5 100644 --- a/images/capi/packer/oci/packer.json +++ b/images/capi/packer/oci/packer.json @@ -60,7 +60,7 @@ "--extra-vars", "{{user `ansible_user_vars`}}" ], - "playbook_file": "./ansible/node.yml", + "playbook_file": "./ansible/playbooks/node.yml", "type": "ansible" }, { diff --git a/images/capi/packer/openstack/packer.json b/images/capi/packer/openstack/packer.json index 4bf9d0379f..0f13801663 100644 --- a/images/capi/packer/openstack/packer.json +++ b/images/capi/packer/openstack/packer.json @@ -67,7 +67,7 @@ "--extra-vars", "{{user `ansible_user_vars`}}" ], - "playbook_file": "./ansible/node.yml", + "playbook_file": "./ansible/playbooks/node.yml", "type": "ansible", "user": "core" }, diff --git a/images/capi/packer/outscale/packer.json b/images/capi/packer/outscale/packer.json index 741298e5ad..7049f43b87 100644 --- a/images/capi/packer/outscale/packer.json +++ b/images/capi/packer/outscale/packer.json @@ -43,7 +43,7 @@ "--extra-vars", "{{user `ansible_extra_vars`}}" ], - "playbook_file": "./ansible/node.yml", + "playbook_file": "./ansible/playbooks/node.yml", "type": "ansible" }, { diff --git a/images/capi/packer/ova/packer-node.json b/images/capi/packer/ova/packer-node.json index a405aa16bf..6b7aa6ab05 100644 --- a/images/capi/packer/ova/packer-node.json +++ b/images/capi/packer/ova/packer-node.json @@ -387,7 +387,7 @@ "--scp-extra-args", "{{user `ansible_scp_extra_args`}}" ], - "playbook_file": "./ansible/firstboot.yml", + "playbook_file": "./ansible/playbooks/firstboot.yml", "type": "ansible", "user": "{{user `ssh_username`}}" }, @@ -420,7 +420,7 @@ "--scp-extra-args", "{{user `ansible_scp_extra_args`}}" ], - "playbook_file": "./ansible/node.yml", + "playbook_file": "./ansible/playbooks/node.yml", "type": "ansible", "user": "{{user `ssh_username`}}" }, diff --git a/images/capi/packer/ova/packer-windows.json b/images/capi/packer/ova/packer-windows.json index 52eec19894..99cc917f4c 100644 --- a/images/capi/packer/ova/packer-windows.json +++ b/images/capi/packer/ova/packer-windows.json @@ -176,7 +176,7 @@ "--extra-vars", "{{user `ansible_user_vars`}}" ], - "playbook_file": "ansible/windows/node_windows.yml", + "playbook_file": "ansible/windows/playbooks/node_windows.yml", "type": "ansible", "use_proxy": false, "user": "Administrator" diff --git a/images/capi/packer/powervs/packer.json b/images/capi/packer/powervs/packer.json index 638de97ad4..e0e51d8550 100644 --- a/images/capi/packer/powervs/packer.json +++ b/images/capi/packer/powervs/packer.json @@ -56,7 +56,7 @@ "--ssh-extra-args", "{{user `existing_ansible_ssh_args`}} {{user `ansible_common_ssh_args`}}" ], - "playbook_file": "./ansible/node.yml", + "playbook_file": "./ansible/playbooks/node.yml", "type": "ansible" } ], diff --git a/images/capi/packer/proxmox/packer.json.tmpl b/images/capi/packer/proxmox/packer.json.tmpl index b79461c863..d73b0a7a62 100644 --- a/images/capi/packer/proxmox/packer.json.tmpl +++ b/images/capi/packer/proxmox/packer.json.tmpl @@ -103,7 +103,7 @@ "--scp-extra-args", "{{user `ansible_scp_extra_args`}}" ], - "playbook_file": "./ansible/firstboot.yml", + "playbook_file": "./ansible/playbooks/firstboot.yml", "type": "ansible", "user": "builder" }, @@ -131,7 +131,7 @@ "{{user `ansible_scp_extra_args`}}" ], "pause_before": "10s", - "playbook_file": "./ansible/node.yml", + "playbook_file": "./ansible/playbooks/node.yml", "type": "ansible", "user": "builder" }, diff --git a/images/capi/packer/qemu/packer.json.tmpl b/images/capi/packer/qemu/packer.json.tmpl index 05f679d4cf..a45d323b85 100644 --- a/images/capi/packer/qemu/packer.json.tmpl +++ b/images/capi/packer/qemu/packer.json.tmpl @@ -91,7 +91,7 @@ "--scp-extra-args", "{{user `ansible_scp_extra_args`}}" ], - "playbook_file": "./ansible/firstboot.yml", + "playbook_file": "./ansible/playbooks/firstboot.yml", "type": "ansible", "user": "builder" }, @@ -118,7 +118,7 @@ "--scp-extra-args", "{{user `ansible_scp_extra_args`}}" ], - "playbook_file": "./ansible/node.yml", + "playbook_file": "./ansible/playbooks/node.yml", "type": "ansible", "user": "builder" }, diff --git a/images/capi/packer/raw/packer.json.tmpl b/images/capi/packer/raw/packer.json.tmpl index 0821697539..7312434512 100644 --- a/images/capi/packer/raw/packer.json.tmpl +++ b/images/capi/packer/raw/packer.json.tmpl @@ -80,7 +80,7 @@ "{{user `ansible_scp_extra_args`}}" ], "max_retries": 5, - "playbook_file": "./ansible/firstboot.yml", + "playbook_file": "./ansible/playbooks/firstboot.yml", "timeout": "30m", "type": "ansible", "user": "builder" @@ -108,7 +108,7 @@ "{{user `ansible_scp_extra_args`}}" ], "max_retries": 5, - "playbook_file": "./ansible/node.yml", + "playbook_file": "./ansible/playbooks/node.yml", "timeout": "30m", "type": "ansible", "user": "builder" diff --git a/images/capi/packer/vultr/packer.json b/images/capi/packer/vultr/packer.json index 379615c0b3..7430fd4aed 100644 --- a/images/capi/packer/vultr/packer.json +++ b/images/capi/packer/vultr/packer.json @@ -37,7 +37,7 @@ "--scp-extra-args", "{{user `ansible_scp_extra_args`}}" ], - "playbook_file": "./ansible/node.yml", + "playbook_file": "./ansible/playbooks/node.yml", "type": "ansible", "user": "packer" } From 00fd96dfc50e47aa767093f68637e6effecfd88a Mon Sep 17 00:00:00 2001 From: Ondrej Vasko Date: Mon, 19 May 2025 22:55:30 +0200 Subject: [PATCH 2/2] Use full role paths in playbooks Signed-off-by: Ondrej Vasko --- images/capi/ansible/playbooks/firstboot.yml | 2 +- images/capi/ansible/playbooks/node.yml | 14 +++++++------- images/capi/ansible/playbooks/python.yml | 2 +- images/capi/ansible/windows/README.md | 2 +- .../ansible/windows/playbooks/node_windows.yml | 16 ++++++++-------- 5 files changed, 18 insertions(+), 18 deletions(-) diff --git a/images/capi/ansible/playbooks/firstboot.yml b/images/capi/ansible/playbooks/firstboot.yml index 779383808c..31be4953e5 100644 --- a/images/capi/ansible/playbooks/firstboot.yml +++ b/images/capi/ansible/playbooks/firstboot.yml @@ -42,7 +42,7 @@ loop_var: role when: firstboot_custom_roles_pre != "" - ansible.builtin.include_role: - name: firstboot + name: kubernetes_sigs.image_builder.firstboot - ansible.builtin.include_role: name: "{{ role }}" loop: "{{ firstboot_custom_roles_post.split() }}" diff --git a/images/capi/ansible/playbooks/node.yml b/images/capi/ansible/playbooks/node.yml index 3a9cec149a..b06c6081ba 100644 --- a/images/capi/ansible/playbooks/node.yml +++ b/images/capi/ansible/playbooks/node.yml @@ -27,18 +27,18 @@ loop_var: role when: node_custom_roles_pre != "" - ansible.builtin.include_role: - name: node + name: kubernetes_sigs.image_builder.node - ansible.builtin.include_role: - name: providers + name: kubernetes_sigs.image_builder.providers - ansible.builtin.include_role: - name: containerd + name: kubernetes_sigs.image_builder.containerd - ansible.builtin.include_role: - name: kubernetes + name: kubernetes_sigs.image_builder.kubernetes - ansible.builtin.include_role: - name: load_additional_components + name: kubernetes_sigs.image_builder.load_additional_components when: load_additional_components | bool - ansible.builtin.include_role: - name: ecr_credential_provider + name: kubernetes_sigs.image_builder.ecr_credential_provider when: ecr_credential_provider | bool - ansible.builtin.include_role: name: "{{ role }}" @@ -47,7 +47,7 @@ loop_var: role when: custom_role_names != "" or node_custom_roles_post != "" - ansible.builtin.include_role: - name: sysprep + name: kubernetes_sigs.image_builder.sysprep environment: http_proxy: "{{ http_proxy | default('') }}" diff --git a/images/capi/ansible/playbooks/python.yml b/images/capi/ansible/playbooks/python.yml index 53b556ec1f..cae059879b 100644 --- a/images/capi/ansible/playbooks/python.yml +++ b/images/capi/ansible/playbooks/python.yml @@ -20,7 +20,7 @@ tasks: - ansible.builtin.include_role: - name: python + name: kubernetes_sigs.image_builder.python environment: http_proxy: "{{ http_proxy | default('') }}" diff --git a/images/capi/ansible/windows/README.md b/images/capi/ansible/windows/README.md index 9a0d494ef9..521d9e5eb9 100644 --- a/images/capi/ansible/windows/README.md +++ b/images/capi/ansible/windows/README.md @@ -1,3 +1,3 @@ -# Ansible Galaxy Collection: kubernetes_sigs.image_builder +# Ansible Galaxy Collection: kubernetes_sigs.image_builder_windows Collection of ansible roles that install and configure Kubernetes orchestrator and related software compatible with Windows operating system. diff --git a/images/capi/ansible/windows/playbooks/node_windows.yml b/images/capi/ansible/windows/playbooks/node_windows.yml index 8a38c4e499..ed2ab37a6c 100644 --- a/images/capi/ansible/windows/playbooks/node_windows.yml +++ b/images/capi/ansible/windows/playbooks/node_windows.yml @@ -72,23 +72,23 @@ loop_var: role when: node_custom_roles_pre != "" - ansible.builtin.include_role: - name: systemprep + name: kubernetes_sigs.image_builder_windows.systemprep - ansible.builtin.include_role: - name: cloudbase_init + name: kubernetes_sigs.image_builder_windows.cloudbase_init when: install_cloudbase_init - ansible.builtin.include_role: - name: providers + name: kubernetes_sigs.image_builder_windows.providers - ansible.builtin.include_role: - name: runtimes + name: kubernetes_sigs.image_builder_windows.runtimes - ansible.builtin.include_role: - name: kubernetes + name: kubernetes_sigs.image_builder_windows.kubernetes - ansible.builtin.include_role: - name: gmsa + name: kubernetes_sigs.image_builder_windows.gmsa - ansible.builtin.include_role: - name: load_additional_components + name: kubernetes_sigs.image_builder_windows.load_additional_components when: load_additional_components | bool - ansible.builtin.include_role: - name: debug + name: kubernetes_sigs.image_builder_windows.debug - ansible.builtin.include_role: name: "{{ role }}" loop: "{{ custom_role_names.split() + node_custom_roles_post.split() }}"