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

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions .github/workflows/ansible-galaxy.yml
Original file line number Diff line number Diff line change
@@ -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/"
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
.vscode/
.idea/
.venv/
*.tar.gz
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
4 changes: 2 additions & 2 deletions docs/book/src/capi/windows/windows.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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).

Expand Down
20 changes: 10 additions & 10 deletions images/capi/.ansible-lint-ignore
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -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]
Expand Down
1 change: 1 addition & 0 deletions images/capi/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
/.local/bin/
manifest.json
**.DS_Store
*.tar.gz

# Goss test droppings
debug-goss-spec.yaml
Expand Down
13 changes: 13 additions & 0 deletions images/capi/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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/
3 changes: 2 additions & 1 deletion images/capi/ansible/.gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
*.pyc
*.pyc
*.tar.gz
1 change: 1 addition & 0 deletions images/capi/ansible/LICENSE
3 changes: 3 additions & 0 deletions images/capi/ansible/README.md
Original file line number Diff line number Diff line change
@@ -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.
17 changes: 17 additions & 0 deletions images/capi/ansible/galaxy.yml
Original file line number Diff line number Diff line change
@@ -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"
2 changes: 2 additions & 0 deletions images/capi/ansible/meta/runtime.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
---
requires_ansible: '>=2.15,<2.16'
Original file line number Diff line number Diff line change
Expand Up @@ -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() }}"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 }}"
Expand All @@ -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('') }}"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@

tasks:
- ansible.builtin.include_role:
name: python
name: kubernetes_sigs.image_builder.python

environment:
http_proxy: "{{ http_proxy | default('') }}"
Expand Down
1 change: 1 addition & 0 deletions images/capi/ansible/roles/containerd/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Containerd Ansible Role
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# ECR Credential Ansible Role
2 changes: 2 additions & 0 deletions images/capi/ansible/roles/firstboot/README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
# Firstboot Ansible Role

This role is to be used for operating systems that require some operations
that require a reboot.
1 change: 1 addition & 0 deletions images/capi/ansible/roles/kubernetes/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Kubernetes Ansible Role
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Load Additional Component Ansible Role
1 change: 1 addition & 0 deletions images/capi/ansible/roles/node/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Node Ansible Role
1 change: 1 addition & 0 deletions images/capi/ansible/roles/providers/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Providers Ansible Role
1 change: 1 addition & 0 deletions images/capi/ansible/roles/python/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Python Ansible Role
1 change: 1 addition & 0 deletions images/capi/ansible/roles/setup/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Setup Ansible Role
1 change: 1 addition & 0 deletions images/capi/ansible/roles/sysprep/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Sysprep Ansible Role
1 change: 1 addition & 0 deletions images/capi/ansible/windows/LICENSE
3 changes: 3 additions & 0 deletions images/capi/ansible/windows/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# 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.
19 changes: 19 additions & 0 deletions images/capi/ansible/windows/galaxy.yml
Original file line number Diff line number Diff line change
@@ -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"
2 changes: 2 additions & 0 deletions images/capi/ansible/windows/meta/runtime.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
---
requires_ansible: '>=2.15,<2.16'
Original file line number Diff line number Diff line change
Expand Up @@ -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() }}"
Expand Down
1 change: 1 addition & 0 deletions images/capi/ansible/windows/roles/cloudbase_init/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Cloudbase Init Ansible Role (Windows)
1 change: 1 addition & 0 deletions images/capi/ansible/windows/roles/debug/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Debug Ansible Role (Windows)
1 change: 1 addition & 0 deletions images/capi/ansible/windows/roles/gmsa/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# GMSA Ansible Role (Windows)
1 change: 1 addition & 0 deletions images/capi/ansible/windows/roles/kubernetes/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Kubernetes Ansible Role (Windows)
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Load Additional Components Ansible Role (Windows)
1 change: 1 addition & 0 deletions images/capi/ansible/windows/roles/providers/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Providers Ansible Role (Windows)
1 change: 1 addition & 0 deletions images/capi/ansible/windows/roles/runtimes/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Runtimes Ansible Role (Windows)
1 change: 1 addition & 0 deletions images/capi/ansible/windows/roles/systemprep/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Systemprep Ansible Role (Windows)
2 changes: 1 addition & 1 deletion images/capi/packer/ami/packer-windows.json
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
2 changes: 1 addition & 1 deletion images/capi/packer/ami/packer.json
Original file line number Diff line number Diff line change
Expand Up @@ -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"
},
{
Expand Down
2 changes: 1 addition & 1 deletion images/capi/packer/azure/packer-windows.json
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
4 changes: 2 additions & 2 deletions images/capi/packer/azure/packer.json
Original file line number Diff line number Diff line change
Expand Up @@ -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"
},
Expand All @@ -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"
},
Expand Down
2 changes: 1 addition & 1 deletion images/capi/packer/digitalocean/packer.json
Original file line number Diff line number Diff line change
Expand Up @@ -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"
}
Expand Down
2 changes: 1 addition & 1 deletion images/capi/packer/gce/packer.json
Original file line number Diff line number Diff line change
Expand Up @@ -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"
},
{
Expand Down
4 changes: 2 additions & 2 deletions images/capi/packer/hcloud/packer-flatcar.json
Original file line number Diff line number Diff line change
Expand Up @@ -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"
},
Expand All @@ -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"
},
Expand Down
Loading