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
|
mailserver
|
||||||
mastodon
|
mastodon
|
||||||
nameserver
|
nameserver
|
||||||
|
ollama
|
||||||
printspooler
|
printspooler
|
||||||
proxmoxserver
|
proxmoxserver
|
||||||
proxyserver
|
proxyserver
|
||||||
@@ -135,6 +136,9 @@ ns1.universe.local
|
|||||||
unbound01.universe.local
|
unbound01.universe.local
|
||||||
unbound02.universe.local
|
unbound02.universe.local
|
||||||
|
|
||||||
|
[ollama]
|
||||||
|
ollama.universe.local
|
||||||
|
|
||||||
[omada_controller]
|
[omada_controller]
|
||||||
omada.universe.local
|
omada.universe.local
|
||||||
omada-stdby.universe.local
|
omada-stdby.universe.local
|
||||||
|
|||||||
@@ -204,6 +204,14 @@
|
|||||||
roles:
|
roles:
|
||||||
- omada-controller
|
- omada-controller
|
||||||
|
|
||||||
|
- hosts: ollama
|
||||||
|
tags: server,ollama
|
||||||
|
become: true
|
||||||
|
handlers:
|
||||||
|
- ansible.builtin.import_tasks: global_handlers/global_handlers.yml
|
||||||
|
roles:
|
||||||
|
- ollama
|
||||||
|
|
||||||
- hosts: backup
|
- hosts: backup
|
||||||
tags: server,backup
|
tags: server,backup
|
||||||
become: true
|
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