blumeops/ansible/roles/minikube/tasks/main.yml
Erich Blume 919f926241 P5.1: Update minikube role for QEMU2 driver
- Change minikube driver from podman to qemu2
- Change container runtime from cri-o to containerd
- Add qemu installation to minikube role
- Remove podman role from indri.yml playbook
- Update handlers for containerd instead of cri-o
- Temporarily disable registry mirror config (needs containerd format)
- Add k8s-storage synology user creation steps to P5.1 doc
- Add post-migration tasks for zot registry mirror reconfiguration

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-20 21:06:53 -08:00

83 lines
3.2 KiB
YAML

---
# Minikube installation and cluster setup for indri
# Uses qemu2 driver for full VM with kernel mount capabilities (NFS, SMB, etc.)
#
# NOTE: minikube start may have issues when run via SSH.
# If cluster fails to start, manually run on indri:
# minikube start --driver=qemu2 --container-runtime=containerd \
# --cpus=4 --memory=8192 --disk-size=200g \
# --apiserver-names=k8s.tail8d86e.ts.net --apiserver-names=indri \
# --apiserver-port=6443 --listen-address=0.0.0.0
- name: Install qemu via homebrew (required for qemu2 driver)
community.general.homebrew:
name: qemu
state: present
- name: Install minikube via homebrew
community.general.homebrew:
name: minikube
state: present
- name: Install kubectl via homebrew
community.general.homebrew:
name: kubectl
state: present
- name: Check if minikube cluster exists
ansible.builtin.command:
cmd: minikube status --format={% raw %}'{{.Host}}'{% endraw %}
register: minikube_status
changed_when: false
failed_when: false
- name: Start minikube cluster
ansible.builtin.command:
cmd: >
minikube start
--driver={{ minikube_driver }}
--container-runtime={{ minikube_container_runtime }}
--cpus={{ minikube_cpus }}
--memory={{ minikube_memory }}
--disk-size={{ minikube_disk_size }}
{% for name in minikube_apiserver_names %}
--apiserver-names={{ name }}
{% endfor %}
--apiserver-port={{ minikube_apiserver_port }}
--listen-address={{ minikube_listen_address }}
register: minikube_start
changed_when: minikube_start.rc == 0
failed_when: false # Don't fail - may need manual intervention like podman
when: minikube_status.rc != 0 or 'Running' not in minikube_status.stdout
- name: Check minikube status after start attempt
ansible.builtin.command:
cmd: minikube status --format={% raw %}'{{.Host}}'{% endraw %}
register: minikube_final_status
changed_when: false
failed_when: false
- name: Warn if minikube failed to start
ansible.builtin.debug:
msg: "WARNING: minikube may not have started properly. Run 'minikube start' manually on indri if needed. Status: {{ minikube_final_status.stdout | default('unknown') }}"
when: minikube_final_status.rc != 0 or 'Running' not in minikube_final_status.stdout
# Configure containerd to use zot as pull-through cache
# With qemu2 driver, host is accessible via host.minikube.internal
# Zot listens on indri:5050 (localhost:5050 from host perspective)
- name: Get host IP for registry mirror config
ansible.builtin.command:
cmd: minikube ssh --native-ssh=false "getent hosts host.minikube.internal | awk '{print \$1}'"
register: minikube_host_ip
changed_when: false
failed_when: false
when: minikube_final_status.rc == 0 and 'Running' in minikube_final_status.stdout
- name: Configure insecure registry for zot
ansible.builtin.command:
cmd: "minikube addons configure registry-creds"
changed_when: false
failed_when: false
when: false # TODO: Configure containerd registry mirrors after basic migration works
# For now, images will be pulled directly from public registries
# We can add zot mirror config later via containerd config or minikube addons