homelab/ansible/archive/playbooks/ai/test_ollama.yml

75 lines
2.6 KiB
YAML

---
- name: Test Karakeep to Ollama connection
hosts: localhost
gather_facts: false
vars:
karakeep_host: "10.0.0.251"
ollama_host: "10.0.0.220"
ollama_port: 11434
container_name: "hoarder-web"
tasks:
- name: Check Ollama API is reachable
ansible.builtin.uri:
url: "http://{{ ollama_host }}:{{ ollama_port }}/api/tags"
method: GET
return_content: true
status_code: 200
register: ollama_check
changed_when: false
- name: Show available models
ansible.builtin.debug:
msg: "Ollama models: {{ ollama_check.json.models | map(attribute='name') | list }}"
- name: Test connectivity from Karakeep container
community.docker.docker_container_exec:
container: "{{ container_name }}"
command: "/bin/sh -c 'wget -qO- http://{{ ollama_host }}:{{ ollama_port }}/api/tags'"
delegate_to: "{{ karakeep_host }}"
vars:
ansible_user: chester
ansible_ssh_private_key_file: /home/chester/.ssh/id_ed25519
register: container_test
changed_when: false
- name: Verify container can reach Ollama
ansible.builtin.assert:
that:
- "'models' in container_test.stdout"
success_msg: "Container can reach Ollama"
fail_msg: "Container cannot reach Ollama"
- name: Extract Ollama-related environment variables
community.docker.docker_container_info:
name: "{{ container_name }}"
delegate_to: "{{ karakeep_host }}"
vars:
ansible_user: chester
ansible_ssh_private_key_file: /home/chester/.ssh/id_ed25519
register: container_info
- name: Show configuration
ansible.builtin.debug:
msg: "{{ container_info.container.Config.Env | select('match', '^(OLLAMA|INFERENCE).*') | list }}"
- name: Verify configuration is correct
ansible.builtin.assert:
that:
- "'OLLAMA_BASE_URL=http://' + ollama_host + ':' + (ollama_port | string) in container_info.container.Config.Env"
- "'INFERENCE_TEXT_MODEL=llama3.1:8b' in container_info.container.Config.Env"
- "'INFERENCE_IMAGE_MODEL=llama3.2-vision:11b' in container_info.container.Config.Env"
success_msg: "Configuration is correct"
fail_msg: "Configuration needs updating"
- name: Display validation summary
ansible.builtin.debug:
msg:
- "Validation complete"
- "Ollama: {{ ollama_host }}:{{ ollama_port }}"
- "Karakeep: {{ karakeep_host }}"
- "Container: {{ container_name }}"
- "Connection: Working"
- "Config: Valid"