- Added windows llama proxy

- Added terraform-mcp
- Added S3 storage to gitea
- Changed context size for windows LLMs
- Changed number of cores for VMs, added P2000 support
This commit is contained in:
2026-06-29 14:31:28 +02:00
parent 80c154df03
commit 4825ad1495
29 changed files with 399 additions and 90 deletions
@@ -0,0 +1,114 @@
---
- name: Inspect Ubuntu container state
ansible.windows.win_shell: |
$containersJson = (podman ps -a --filter "name=^{{ windows_containers_container_name }}$" --format json 2>$null | Out-String).Trim()
if (-not $containersJson -or $containersJson -eq "[]") {
Write-Output "__CONTAINER_ABSENT__"
exit 0
}
$containers = $containersJson | ConvertFrom-Json
$container = $containers | Select-Object -First 1
if ($container) {
Write-Output "__CONTAINER_PRESENT__"
if ($container.State -eq "running") {
Write-Output "__CONTAINER_RUNNING__"
}
}
register: container_state
changed_when: false
tags:
- roles::windows_containers::ubuntu_container
- name: Create Ubuntu container
ansible.windows.win_shell: podman run -d --name {{ windows_containers_container_name }} -p {{ windows_containers_container_port }}:22 --restart unless-stopped "{{ windows_containers_image }}"
when: "'__CONTAINER_ABSENT__' in (container_state.stdout + container_state.stderr)"
tags:
- roles::windows_containers::ubuntu_container
- name: Start Ubuntu container when stopped
ansible.windows.win_shell: podman start {{ windows_containers_container_name }}
when:
- "'__CONTAINER_PRESENT__' in (container_state.stdout + container_state.stderr)"
- "'__CONTAINER_RUNNING__' not in (container_state.stdout + container_state.stderr)"
tags:
- roles::windows_containers::ubuntu_container
- name: Wait for container to be ready
ansible.windows.win_shell: |
$status = (podman inspect --format "{{ '{{.State.Running}}' }}" {{ windows_containers_container_name }} 2>$null | Out-String).Trim()
if ($LASTEXITCODE -eq 0 -and $status -eq "true") {
exit 0
}
Write-Error "Container {{ windows_containers_container_name }} is not running yet"
exit 1
register: container_ready
until: container_ready.rc == 0
retries: 20
delay: 5
tags:
- roles::windows_containers::ubuntu_container
- name: Set up SSH in Ubuntu container
ansible.windows.win_shell: |
podman exec {{ windows_containers_container_name }} sh -c 'mkdir -p /home/{{ windows_containers_user }}/.ssh'
podman exec {{ windows_containers_container_name }} sh -c 'touch /home/{{ windows_containers_user }}/.ssh/authorized_keys'
podman exec {{ windows_containers_container_name }} sh -c 'chown -R {{ windows_containers_user }}:$(id -g {{ windows_containers_user }}) /home/{{ windows_containers_user }}/.ssh'
podman exec {{ windows_containers_container_name }} sh -c 'chmod 700 /home/{{ windows_containers_user }}/.ssh && chmod 600 /home/{{ windows_containers_user }}/.ssh/authorized_keys'
register: ssh_dir_setup
changed_when: false
tags:
- roles::windows_containers::ubuntu_container
- name: Deploy SSH authorized_keys
ansible.windows.win_shell: |
$keysJson = '{{ windows_containers_ssh_users | map(attribute="key") | list | to_json }}'
$keys = @()
if ($keysJson) {
$keys = $keysJson | ConvertFrom-Json
}
$keys = $keys | Where-Object { $_ -and $_.Trim() -ne "" } | ForEach-Object { $_.Trim() } | Sort-Object -Unique
$desiredContent = ""
if ($keys.Count -gt 0) {
$desiredContent = ($keys -join "`n") + "`n"
}
$currentContent = (podman exec {{ windows_containers_container_name }} sh -c "cat /home/{{ windows_containers_user }}/.ssh/authorized_keys 2>/dev/null || true" | Out-String)
if ($currentContent -ne $desiredContent) {
$encodedContent = [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes($desiredContent))
podman exec {{ windows_containers_container_name }} sh -c "echo $encodedContent | base64 -d > /home/{{ windows_containers_user }}/.ssh/authorized_keys"
podman exec {{ windows_containers_container_name }} sh -c 'chown {{ windows_containers_user }}:$(id -g {{ windows_containers_user }}) /home/{{ windows_containers_user }}/.ssh/authorized_keys'
podman exec {{ windows_containers_container_name }} sh -c 'chmod 600 /home/{{ windows_containers_user }}/.ssh/authorized_keys'
Write-Output "__AUTHORIZED_KEYS_UPDATED__"
}
register: authorized_keys_result
changed_when: "'__AUTHORIZED_KEYS_UPDATED__' in (authorized_keys_result.stdout + authorized_keys_result.stderr)"
tags:
- roles::windows_containers::ubuntu_container
- name: Enable and start sshd in Ubuntu container
ansible.windows.win_shell: |
$changed = $false
podman exec {{ windows_containers_container_name }} sh -c "dpkg -s openssh-server >/dev/null 2>&1"
if ($LASTEXITCODE -ne 0) {
podman exec {{ windows_containers_container_name }} sh -c "apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y openssh-server"
$changed = $true
}
podman exec {{ windows_containers_container_name }} sh -c "mkdir -p /run/sshd"
podman exec {{ windows_containers_container_name }} sh -c "pgrep -x sshd >/dev/null 2>&1"
if ($LASTEXITCODE -ne 0) {
podman exec {{ windows_containers_container_name }} /usr/sbin/sshd
$changed = $true
}
if ($changed) {
Write-Output "__SSHD_PROVISIONED__"
}
register: sshd_result
changed_when: "'__SSHD_PROVISIONED__' in (sshd_result.stdout + sshd_result.stderr)"
tags:
- roles::windows_containers::ubuntu_container
@@ -0,0 +1,100 @@
---
# ── WSL verification ─────────────────────────────────────────────────────
- name: Verify WSL is operational
ansible.windows.win_shell: wsl.exe --status --default
register: __wsl_verify
changed_when: false
failed_when: __wsl_verify.rc != 0
tags:
- roles::windows_containers::verify
# ── Podman verification ──────────────────────────────────────────────────
- name: Verify Podman is installed
ansible.windows.win_shell: podman version
register: __podman_version
changed_when: false
tags:
- roles::windows_containers::verify
- name: Verify Podman machine exists
ansible.windows.win_shell: |
$machinesJson = (podman machine ls --format json 2>$null | Out-String).Trim()
if (-not $machinesJson) {
Write-Error "No Podman machines found"
exit 1
}
$machines = $machinesJson | ConvertFrom-Json
$machine = $machines | Where-Object { $_.Name -eq "{{ windows_containers_machine_name }}" } | Select-Object -First 1
if (-not $machine) {
Write-Error "Podman machine {{ windows_containers_machine_name }} not found"
exit 1
}
Write-Output "__PODMAN_MACHINE_EXISTS__"
register: __podman_machine_ls
changed_when: false
failed_when: "'__PODMAN_MACHINE_EXISTS__' not in (__podman_machine_ls.stdout + __podman_machine_ls.stderr)"
tags:
- roles::windows_containers::verify
# ── NSSM service verification ────────────────────────────────────────────
- name: Verify NSSM Podman machine service is installed and running
ansible.windows.win_shell: |
$svc = (Get-Service -Name "{{ windows_containers_service_name }}" -ErrorAction SilentlyContinue)
if (-not $svc) { Write-Error "Service {{ windows_containers_service_name }} not found"; exit 1 }
if ($svc.StartType -ne 'Automatic') { Write-Error "Service {{ windows_containers_service_name }} is not Automatic"; exit 1 }
Write-Output "Service: $($svc.DisplayName) | Status: $($svc.Status) | StartType: $($svc.StartType)"
Write-Output "__NSSM_SERVICE_OK__"
register: __nssm_verify
changed_when: false
failed_when: "__NSSM_SERVICE_OK__ not in (__nssm_verify.stdout + __nssm_verify.stderr)"
tags:
- roles::windows_containers::verify
- name: Verify NSSM service runs as dedicated podman user
ansible.windows.win_shell: |
$svc = Get-CimInstance -ClassName Win32_Service -Filter "Name='{{ windows_containers_service_name }}'"
$owner = $svc.StartName
if ($owner -eq ".\\{{ windows_containers_service_user }}" -or $owner -eq "{{ windows_containers_service_user }}") {
Write-Output "Service runs as $owner"
Write-Output "__NSSM_USER_OK__"
} else {
Write-Error "Expected service to run as .\\{{ windows_containers_service_user }}, got $owner"
exit 1
}
register: __nssm_user_verify
changed_when: false
failed_when: "__NSSM_USER_OK__ not in (__nssm_user_verify.stdout + __nssm_user_verify.stderr)"
tags:
- roles::windows_containers::verify
# ── Container verification ───────────────────────────────────────────────
- name: Verify Ubuntu container is running
ansible.windows.win_shell: podman inspect --format "{{ '{{.State.Running}}' }}" {{ windows_containers_container_name }}
register: __container_status
changed_when: false
failed_when: __container_status.rc != 0 or __container_status.stdout | trim != 'true'
tags:
- roles::windows_containers::verify
- name: Verify SSH access to Ubuntu container
ansible.windows.win_shell: podman exec {{ windows_containers_container_name }} id {{ windows_containers_user }}
register: __user_check
changed_when: false
failed_when: __user_check.rc != 0
tags:
- roles::windows_containers::verify
- name: Report SSH connection details
ansible.windows.win_shell: |
Write-Output "Podman is installed"
Write-Output "WSL version: wsl.exe --version"
Write-Output "NSSM service: {{ windows_containers_service_name }}"
Write-Output "Ubuntu container: {{ windows_containers_container_name }}"
Write-Output "SSH access: ssh {{ windows_containers_user }}@localhost -p {{ windows_containers_container_port }}"
changed_when: false
tags:
- roles::windows_containers::verify