This guide deploys Ollama with Docker Compose on Debian 10 to latest stable, Ubuntu LTS, and RHEL 9+ compatible hosts.
- name: Deploy Ollama
hosts: ollama
become: true
vars:
app_root: /opt/ollama
app_port: 11434
gpu_enabled: false
gpu_vendor: "nvidia" # nvidia or amd
tasks:
- name: Install Docker on Debian/Ubuntu
apt:
name:
- docker.io
- docker-compose-plugin
state: present
update_cache: true
when: ansible_os_family == "Debian"
- name: Install Docker on RHEL family
dnf:
name:
- docker
- docker-compose-plugin
state: present
when: ansible_os_family == "RedHat"
- name: Enable and start Docker
service:
name: docker
state: started
enabled: true
- name: Create app directory
file:
path: "{{ app_root }}"
state: directory
mode: "0755"
- name: Write Docker Compose file (CPU only)
copy:
dest: "{{ app_root }}/docker-compose.yml"
mode: "0644"
content: |
services:
ollama:
image: ollama/ollama:latest
restart: unless-stopped
ports:
- "{{ app_port }}:11434"
volumes:
- ollama:/root/.ollama
environment:
- OLLAMA_HOST=127.0.0.1:11434
- OLLAMA_KEEP_ALIVE=5m
volumes:
ollama:
when: not gpu_enabled
- name: Write Docker Compose file (NVIDIA GPU)
copy:
dest: "{{ app_root }}/docker-compose.yml"
mode: "0644"
content: |
services:
ollama:
image: ollama/ollama:latest
restart: unless-stopped
ports:
- "{{ app_port }}:11434"
volumes:
- ollama:/root/.ollama
environment:
- OLLAMA_HOST=127.0.0.1:11434
- OLLAMA_KEEP_ALIVE=5m
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
volumes:
ollama:
when: gpu_enabled and gpu_vendor == "nvidia"
- name: Write Docker Compose file (AMD GPU)
copy:
dest: "{{ app_root }}/docker-compose.yml"
mode: "0644"
content: |
services:
ollama:
image: ollama/ollama:rocm
restart: unless-stopped
ports:
- "{{ app_port }}:11434"
volumes:
- ollama:/root/.ollama
devices:
- /dev/kfd
- /dev/dri
environment:
- OLLAMA_HOST=127.0.0.1:11434
- OLLAMA_KEEP_ALIVE=5m
volumes:
ollama:
when: gpu_enabled and gpu_vendor == "amd"
- name: Start application stack
command: docker compose up -d
args:
chdir: "{{ app_root }}"
ansible-playbook -i inventory ollama.yml
ansible-playbook -i inventory ollama.yml -e "gpu_enabled=true" -e "gpu_vendor=nvidia"
ansible-playbook -i inventory ollama.yml -e "gpu_enabled=true" -e "gpu_vendor=amd"