Add support for Ubuntu containers and WSL verification

- Implemented tasks for managing Ubuntu containers using Podman, including inspection, creation, starting, and SSH setup.
- Added verification tasks for WSL and Podman installation, machine existence, and NSSM service status.
- Created PowerShell scripts for Podman auto-start on Windows boot.
- Introduced Prometheus role with default configurations and installation tasks.
- Updated Windows SSH role to improve authorized_keys management and permissions handling.
- Modified inventory to include Windows containers host.
- Updated Grafana datasource configurations with direct IP addresses for Prometheus instances.
This commit is contained in:
2026-06-07 20:35:59 +02:00
parent 3775fa4b6e
commit 25d3eafa5b
34 changed files with 1475 additions and 155 deletions
@@ -34,9 +34,6 @@ llama_server_windows_working_dir: "C:\\llama_server"
llama_server_windows_version: "b9442"
llama_server_windows_backend: "cuda"
llama_server_cuda_version: "13.3"
llama_server_windows_nssm_dir: "C:\\nssm"
llama_server_windows_nssm_version: "2.24"
llama_server_windows_nssm_url: "https://nssm.cc/release/nssm-{{ llama_server_windows_nssm_version }}.zip"
# Llama-server binary defaults for Windows
llama_server_windows_bin_name: "llama-server.exe"
+5 -5
View File
@@ -55,7 +55,7 @@
loop:
- models
- .cache
- .cache/llama.cpp
- .cache/llamacpp
- name: "Add SSH Authorized key"
become: true
@@ -130,7 +130,7 @@
- name: Create pods
containers.podman.podman_container:
name: "llama.cpp"
name: "llamacpp"
image: "{{ llama_server_image }}:{{ llama_server_tag }}"
state: started
device: "{{ llama_server_devices | default(omit) }}"
@@ -159,7 +159,7 @@
become: true
ansible.builtin.template:
src: podman.service.j2
dest: "/etc/systemd/system/podman-llama.cpp.service"
dest: "/etc/systemd/system/podman-llamacpp.service"
owner: root
group: root
mode: "0644"
@@ -172,7 +172,7 @@
- name: Enable containers at boot
become: true
ansible.builtin.systemd:
name: "podman-llama.cpp"
name: "podman-llamacpp"
enabled: true
state: "started"
@@ -221,7 +221,7 @@
- name: Copy llama server Hugging Face sync helper
become: true
ansible.builtin.copy:
src: scripts/llama_hf_sync.py
src: scripts/linux/llama_hf_sync.py
dest: "{{ llama_server_home }}/models/.router/llama_hf_sync.py"
owner: "{{ llama_server_user }}"
group: "{{ llama_server_group }}"
@@ -65,7 +65,7 @@
- name: Install Windows Exporter service via NSSM
ansible.windows.win_command:
argv:
- "{{ __nssm_exe }}"
- "nssm.exe"
- install
- llama-exporter
- "{{ __exporter_venv_python }}"
@@ -78,7 +78,7 @@
- name: Set exporter AppDirectory via NSSM
ansible.windows.win_command:
argv:
- "{{ __nssm_exe }}"
- "nssm.exe"
- set
- llama-exporter
- AppDirectory
@@ -87,7 +87,7 @@
- name: Configure exporter stdout log via NSSM
ansible.windows.win_command:
argv:
- "{{ __nssm_exe }}"
- "nssm.exe"
- set
- llama-exporter
- AppStdout
@@ -96,7 +96,7 @@
- name: Configure exporter stderr log via NSSM
ansible.windows.win_command:
argv:
- "{{ __nssm_exe }}"
- "nssm.exe"
- set
- llama-exporter
- AppStderr
@@ -105,7 +105,7 @@
- name: Set exporter environment variables
ansible.windows.win_command:
argv:
- "{{ __nssm_exe }}"
- "nssm.exe"
- set
- llama-exporter
- AppEnvironmentExtra
@@ -116,7 +116,7 @@
- name: Set exporter Start mode to AUTO via NSSM
ansible.windows.win_command:
argv:
- "{{ __nssm_exe }}"
- "nssm.exe"
- set
- llama-exporter
- Start
@@ -4,13 +4,11 @@
- name: Define Windows paths and versions
ansible.builtin.set_fact:
__llama_user: "{{ llama_server_windows_user }}"
__nssm_exe: "{{ llama_server_windows_nssm_dir }}\\nssm.exe"
__llama_release_asset_name: "{{ 'llama-' ~ llama_server_windows_version ~ '-bin-win-' ~ llama_server_windows_backend ~ (llama_server_windows_backend == 'cuda') | ternary('-' ~ llama_server_cuda_version, '') ~ '-x64.zip' }}"
__llama_release_zip_url: "https://github.com/ggml-org/llama.cpp/releases/download/{{ llama_server_windows_version }}/{{ 'llama-' ~ llama_server_windows_version ~ '-bin-win-' ~ llama_server_windows_backend ~ (llama_server_windows_backend == 'cuda') | ternary('-' ~ llama_server_cuda_version, '') ~ '-x64.zip' }}"
__llama_release_zip_path: "{{ (ansible_env.TEMP | default('C:\\Windows\\Temp')) }}\\{{ 'llama-' ~ llama_server_windows_version ~ '-bin-win-' ~ llama_server_windows_backend ~ (llama_server_windows_backend == 'cuda') | ternary('-' ~ llama_server_cuda_version, '') ~ '-x64.zip' }}"
__llama_release_marker: "{{ llama_server_windows_install_dir }}\\.release-{{ 'llama-' ~ llama_server_windows_version ~ '-bin-win-' ~ llama_server_windows_backend ~ (llama_server_windows_backend == 'cuda') | ternary('-' ~ llama_server_cuda_version, '') ~ '-x64.zip' }}"
__nssm_zip_path: "{{ (ansible_env.TEMP | default('C:\\Windows\\Temp')) }}\\nssm.zip"
__llama_sync_script: "{{ llama_server_windows_working_dir }}\\.router\\llama_hf_sync_windows.py"
__llama_sync_script: "{{ llama_server_windows_working_dir }}\\.router\\llama_hf_sync.py"
__llama_models_json: "{{ llama_server_windows_working_dir }}\\.router\\desired-models.json"
__llama_preset_global_json: "{{ llama_server_windows_working_dir }}\\.router\\preset-global.json"
__llama_managed_dir: "{{ llama_server_windows_working_dir }}\\models\\managed"
@@ -118,35 +116,13 @@
Check download/unzip and llama_server_windows_backend settings.
when: not __llama_bin_stat.stat.exists
- name: Check if NSSM is installed
ansible.windows.win_stat:
path: "{{ llama_server_windows_nssm_dir }}\\nssm-{{ llama_server_windows_nssm_version }}\\win64\\nssm.exe"
register: __nssm_stat
- name: Download NSSM if not installed
ansible.windows.win_get_url:
url: "{{ llama_server_windows_nssm_url }}"
dest: "{{ __nssm_zip_path }}"
force: false
when: not __nssm_stat.stat.exists
- name: Extract NSSM if not installed
community.windows.win_unzip:
src: "{{ __nssm_zip_path }}"
dest: "{{ llama_server_windows_nssm_dir }}"
delete_archive: false
creates: "{{ llama_server_windows_nssm_dir }}\\nssm-{{ llama_server_windows_nssm_version }}\\win64\\nssm.exe"
when: not __nssm_stat.stat.exists
- name: Copy NSSM executable
ansible.windows.win_copy:
src: "{{ llama_server_windows_nssm_dir }}\\nssm-{{ llama_server_windows_nssm_version }}\\win64\\nssm.exe"
dest: "{{ __nssm_exe }}"
remote_src: true
- name: Install NSSM
ansible.builtin.include_role:
name: nssm
- name: Copy Windows-compatible Hugging Face sync script
ansible.windows.win_copy:
src: scripts/llama_hf_sync_windows.py
src: scripts/windows/llama_hf_sync.py
dest: "{{ __llama_sync_script }}"
mode: "0750"
@@ -244,7 +220,7 @@
argv: >-
{{
[
__nssm_exe,
'nssm.exe',
'install',
'llama-server',
(llama_server_windows_install_dir ~ '\\' ~ llama_server_windows_bin_name),
@@ -268,7 +244,7 @@
- name: Set llama-server AppDirectory via NSSM
ansible.windows.win_command:
argv:
- "{{ __nssm_exe }}"
- nssm.exe
- set
- llama-server
- AppDirectory
@@ -277,7 +253,7 @@
- name: Configure llama-server stdout log via NSSM
ansible.windows.win_command:
argv:
- "{{ __nssm_exe }}"
- nssm.exe
- set
- llama-server
- AppStdout
@@ -286,7 +262,7 @@
- name: Configure llama-server stderr log via NSSM
ansible.windows.win_command:
argv:
- "{{ __nssm_exe }}"
- nssm.exe
- set
- llama-server
- AppStderr
@@ -295,7 +271,7 @@
- name: Set llama-server Start mode to AUTO via NSSM
ansible.windows.win_command:
argv:
- "{{ __nssm_exe }}"
- nssm.exe
- set
- llama-server
- Start
@@ -7,8 +7,8 @@ Type=oneshot
User={{ llama_server_user }}
Group={{ llama_server_group }}
RemainAfterExit=true
ExecStart={{ podman_binary }} start podman-llama.cpp
ExecStop={{ podman_binary }} stop podman-llama.cpp
ExecStart={{ podman_binary }} start llamacpp
ExecStop={{ podman_binary }} stop llamacpp
StandardOutput=journal
StandardError=journal