--- # 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=6 --memory=12288 --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