added ollama role and host
This commit is contained in:
0
host_vars/ollama.universe.local.yml
Normal file
0
host_vars/ollama.universe.local.yml
Normal file
4
hosts
4
hosts
@@ -51,6 +51,7 @@ jitsimeet
|
||||
mailserver
|
||||
mastodon
|
||||
nameserver
|
||||
ollama
|
||||
printspooler
|
||||
proxmoxserver
|
||||
proxyserver
|
||||
@@ -135,6 +136,9 @@ ns1.universe.local
|
||||
unbound01.universe.local
|
||||
unbound02.universe.local
|
||||
|
||||
[ollama]
|
||||
ollama.universe.local
|
||||
|
||||
[omada_controller]
|
||||
omada.universe.local
|
||||
omada-stdby.universe.local
|
||||
|
||||
@@ -204,6 +204,14 @@
|
||||
roles:
|
||||
- omada-controller
|
||||
|
||||
- hosts: ollama
|
||||
tags: server,ollama
|
||||
become: true
|
||||
handlers:
|
||||
- ansible.builtin.import_tasks: global_handlers/global_handlers.yml
|
||||
roles:
|
||||
- ollama
|
||||
|
||||
- hosts: backup
|
||||
tags: server,backup
|
||||
become: true
|
||||
|
||||
59
roles/ollama/README.md
Normal file
59
roles/ollama/README.md
Normal file
@@ -0,0 +1,59 @@
|
||||
# Ansible Role: ollama
|
||||
|
||||
Diese Rolle richtet einen Debian-Host vollständig als Ollama-Server ein.
|
||||
|
||||
Sie installiert Ollama über das offizielle Installationsskript, aktiviert den systemd-Dienst `ollama` und erzeugt einen systemd-Override, damit der Server auf allen Interfaces lauscht (`OLLAMA_HOST=0.0.0.0:11434`). Anschließend werden die über die Variable `ollama_models` definierten Modelle automatisch heruntergeladen – jeweils nur, wenn sie noch nicht vorhanden sind.
|
||||
|
||||
Eine Firewall-Konfiguration wird bewusst nicht vorgenommen.
|
||||
|
||||
## Anforderungen
|
||||
|
||||
Diese Rolle wurde für Debian-basierte Systeme entwickelt und getestet (Debian, Ubuntu – insbesondere LXC-Container).
|
||||
|
||||
Das offizielle Installationsskript lädt die neueste Ollama-Version von `https://ollama.com/install.sh` und benötigt dafür `curl`. Dieses wird vom Skript bei Bedarf selbst mit installiert.
|
||||
|
||||
## Rollenvariablen
|
||||
|
||||
Die folgenden Variablen können angepasst werden, um das Verhalten der Rolle zu steuern. Die Standardwerte sind in `defaults/main.yml` definiert.
|
||||
|
||||
| Variable | Standardwert | Beschreibung |
|
||||
|---|---|---|
|
||||
| `ollama_host` | `"0.0.0.0:11434"` | Host/Port, auf dem der Ollama-Server lauschen soll. `0.0.0.0` bedeutet alle Interfaces. |
|
||||
| `ollama_install_script_url` | `"https://ollama.com/install.sh"` | URL des offiziellen Ollama-Installationsskripts. |
|
||||
| `ollama_models` | `["qwen3:8b"]` | Liste der Modelle, die automatisch heruntergeladen werden. |
|
||||
|
||||
## Abhängigkeiten
|
||||
|
||||
Diese Rolle hat keine Abhängigkeiten von anderen Ansible-Rollen.
|
||||
|
||||
## Beispiel-Playbook
|
||||
|
||||
So können Sie die Rolle in Ihr Playbook integrieren:
|
||||
|
||||
```yaml
|
||||
- hosts: ollama
|
||||
become: true
|
||||
roles:
|
||||
- ollama
|
||||
```
|
||||
|
||||
Um weitere Modelle herunterzuladen, überschreiben Sie die Variable im Playbook oder in den `host_vars`:
|
||||
|
||||
```yaml
|
||||
- hosts: ollama
|
||||
become: true
|
||||
vars:
|
||||
ollama_models:
|
||||
- qwen3:8b
|
||||
- llama3.1:8b
|
||||
roles:
|
||||
- ollama
|
||||
```
|
||||
|
||||
## Lizenz
|
||||
|
||||
MIT
|
||||
|
||||
## Autor
|
||||
|
||||
Ihr Name
|
||||
13
roles/ollama/defaults/main.yml
Normal file
13
roles/ollama/defaults/main.yml
Normal file
@@ -0,0 +1,13 @@
|
||||
---
|
||||
# defaults file for roles/ollama
|
||||
|
||||
# Host/Port, auf dem der Ollama-Server lauschen soll.
|
||||
# 0.0.0.0:11434 => alle Interfaces.
|
||||
ollama_host: "0.0.0.0:11434"
|
||||
|
||||
# URL des offiziellen Ollama-Installationsskripts.
|
||||
ollama_install_script_url: "https://ollama.com/install.sh"
|
||||
|
||||
# Liste der Modelle, die automatisch heruntergeladen werden.
|
||||
ollama_models:
|
||||
- qwen3:8b
|
||||
8
roles/ollama/handlers/main.yml
Normal file
8
roles/ollama/handlers/main.yml
Normal file
@@ -0,0 +1,8 @@
|
||||
---
|
||||
# handlers file for roles/ollama
|
||||
|
||||
- name: Reload systemd and restart Ollama
|
||||
ansible.builtin.systemd:
|
||||
name: ollama
|
||||
state: restarted
|
||||
daemon_reload: yes
|
||||
20
roles/ollama/tasks/configure.yml
Normal file
20
roles/ollama/tasks/configure.yml
Normal file
@@ -0,0 +1,20 @@
|
||||
---
|
||||
# tasks file for roles/ollama
|
||||
# systemd-Override, damit Ollama auf allen Interfaces lauscht (OLLAMA_HOST).
|
||||
- name: ollama | configure | create systemd override directory
|
||||
tags: ollama,configure
|
||||
ansible.builtin.file:
|
||||
path: /etc/systemd/system/ollama.service.d
|
||||
state: directory
|
||||
mode: '0755'
|
||||
|
||||
- name: ollama | configure | set OLLAMA_HOST via systemd override
|
||||
tags: ollama,configure
|
||||
ansible.builtin.template:
|
||||
src: ollama-override.conf.j2
|
||||
dest: /etc/systemd/system/ollama.service.d/override.conf
|
||||
mode: '0644'
|
||||
# Der Handler lädt systemd neu und startet den Dienst nur bei Änderungen neu.
|
||||
notify: Reload systemd and restart Ollama
|
||||
|
||||
# Hinweis: Eine Firewall-Konfiguration (z.B. ufw) wird bewusst NICHT vorgenommen.
|
||||
17
roles/ollama/tasks/install.yml
Normal file
17
roles/ollama/tasks/install.yml
Normal file
@@ -0,0 +1,17 @@
|
||||
---
|
||||
# tasks file for roles/ollama
|
||||
# Installation von Ollama über das offizielle Installationsskript.
|
||||
- name: ollama | install | download official install script
|
||||
tags: ollama,install
|
||||
ansible.builtin.get_url:
|
||||
url: "{{ ollama_install_script_url }}"
|
||||
dest: "/tmp/ollama-install.sh"
|
||||
mode: "0755"
|
||||
|
||||
- name: ollama | install | run official install script
|
||||
tags: ollama,install
|
||||
# Das Skript installiert das Binary nach /usr/local/bin/ollama.
|
||||
# 'creates' sorgt für Idempotenz: Bei vorhandenem Binary wird die Ausführung übersprungen.
|
||||
ansible.builtin.shell:
|
||||
cmd: "/tmp/ollama-install.sh"
|
||||
creates: /usr/local/bin/ollama
|
||||
12
roles/ollama/tasks/main.yml
Normal file
12
roles/ollama/tasks/main.yml
Normal file
@@ -0,0 +1,12 @@
|
||||
---
|
||||
# Load distro specific variables
|
||||
- ansible.builtin.include_vars: "{{ ansible_facts['distribution'] | lower }}.yml"
|
||||
tags: always
|
||||
ignore_errors: True
|
||||
- ansible.builtin.include_vars: "{{ ansible_facts['fqdn'] | lower }}.yml"
|
||||
ignore_errors: True
|
||||
|
||||
- ansible.builtin.import_tasks: install.yml
|
||||
- ansible.builtin.import_tasks: configure.yml
|
||||
- ansible.builtin.import_tasks: service.yml
|
||||
- ansible.builtin.import_tasks: models.yml
|
||||
20
roles/ollama/tasks/models.yml
Normal file
20
roles/ollama/tasks/models.yml
Normal file
@@ -0,0 +1,20 @@
|
||||
---
|
||||
# tasks file for roles/ollama
|
||||
# Modellverwaltung: Es werden nur Modelle heruntergeladen, die noch nicht vorhanden sind.
|
||||
- name: ollama | models | list installed models
|
||||
tags: ollama,models
|
||||
ansible.builtin.command: ollama list
|
||||
register: ollama_installed_models
|
||||
changed_when: false
|
||||
# Kurzes Warten auf den frisch gestarteten Daemon beim Erstlauf (Retry-Muster wie omada-controller).
|
||||
retries: 5
|
||||
until: ollama_installed_models is success
|
||||
delay: 2
|
||||
|
||||
- name: ollama | models | pull missing models
|
||||
tags: ollama,models
|
||||
ansible.builtin.command: ollama pull {{ item }}
|
||||
loop: "{{ ollama_models }}"
|
||||
# 'ollama list' führt die Modellnamen in der ersten Spalte auf; ein bereits
|
||||
# vorhandenes Modell wird nicht erneut heruntergeladen.
|
||||
when: item not in ollama_installed_models.stdout
|
||||
8
roles/ollama/tasks/service.yml
Normal file
8
roles/ollama/tasks/service.yml
Normal file
@@ -0,0 +1,8 @@
|
||||
---
|
||||
# tasks file for roles/ollama
|
||||
- name: ollama | service | enable and start Ollama
|
||||
tags: ollama,service
|
||||
ansible.builtin.service:
|
||||
name: ollama
|
||||
state: started
|
||||
enabled: true
|
||||
2
roles/ollama/templates/ollama-override.conf.j2
Normal file
2
roles/ollama/templates/ollama-override.conf.j2
Normal file
@@ -0,0 +1,2 @@
|
||||
[Service]
|
||||
Environment="OLLAMA_HOST={{ ollama_host }}"
|
||||
Reference in New Issue
Block a user