Add new model files and update Ansible playbooks for Qwen3.5 and Qwen3.6

- Created model files for Qwen3.5 with different context lengths.
- Added a new Ansible host variable file for CI server configuration.
- Updated GPU server host variables to include Ollama models and model files.
- Enhanced playbooks for Podman to manage Ollama models, including copying model files and checking existing models.
- Introduced a new playbook for setting up Qwen3.6 with specific configurations.
- Updated Windows SSH tasks to improve security and configuration management.
- Added a Python utility to parse Ollama model names from command output.
- Modified Terraform configurations to include new DNS entries and proxy settings.
- Improved Nginx proxy configurations with timeout settings.
This commit is contained in:
2026-05-27 23:53:00 +02:00
parent dd943c8963
commit e9e28a5ca8
27 changed files with 611 additions and 103 deletions
+5
View File
@@ -116,6 +116,11 @@ locals {
name = "search"
type = "CNAME"
content = "dev-01.${local.lab_domain}."
},
{
name = "ci-01"
type = "A"
content = "10.19.4.207"
}
]
}
+8 -6
View File
@@ -139,12 +139,14 @@ locals {
proxy_services = {
"open-webui" = {
http_port = 8080
https_port = 8443
tls = true
resolver = "10.19.4.136"
fqdn = ["ai.alexpires.me"]
upstream = "https://open-webui.lab.alexpires.me"
http_port = 8080
https_port = 8443
tls = true
resolver = "10.19.4.136"
fqdn = ["ai.alexpires.me"]
read_timeout = "300s"
send_timeout = "300s"
upstream = "https://open-webui.lab.alexpires.me"
locations = [
{
path = "/ws/socket.io/"
+6 -4
View File
@@ -4,10 +4,12 @@ resource "kubernetes_ingress_v1" "openwebui" {
namespace = kubernetes_namespace.openwebui.metadata[0].name
annotations = {
"kubernetes.io/ingress.class" = "public"
"cert-manager.io/cluster-issuer" = "letsencrypt-prod"
"kubernetes.io/tls-acme" = "true"
"nginx.ingress.kubernetes.io/ssl-redirect" = "true"
"kubernetes.io/ingress.class" = "public"
"cert-manager.io/cluster-issuer" = "letsencrypt-prod"
"kubernetes.io/tls-acme" = "true"
"nginx.ingress.kubernetes.io/ssl-redirect" = "true"
"nginx.ingress.kubernetes.io/proxy-read-timeout" = "600s"
"nginx.ingress.kubernetes.io/proxy-send-timeout" = "600s"
}
}
spec {
+3
View File
@@ -3,4 +3,7 @@ locals {
app_version = var.tag
app_fqdn = var.fqdn
searxng_config = templatefile("${path.module}/resources/settings.yml.tpl", {})
searxng_config_checksum = md5(local.searxng_config)
}
+27
View File
@@ -26,6 +26,17 @@ resource "kubernetes_config_map" "searxng_config" {
}
}
resource "kubernetes_config_map" "searxng_config_file" {
metadata {
name = "searxng-config-file"
namespace = kubernetes_namespace.searxng.metadata[0].name
}
data = {
"settings.yml" = local.searxng_config
}
}
resource "kubernetes_secret" "searxng_secrets" {
metadata {
name = "searxng-keys"
@@ -64,6 +75,9 @@ resource "kubernetes_deployment" "searxng" {
labels = {
app = "searxng"
}
annotations = {
"checksum/config" = local.searxng_config_checksum
}
}
spec {
@@ -145,6 +159,12 @@ resource "kubernetes_deployment" "searxng" {
name = "searxng-tmp"
mount_path = "/tmp"
}
volume_mount {
name = "searxng-config-file"
mount_path = "/etc/searxng/settings.yml"
sub_path = "settings.yml"
}
}
volume {
@@ -158,6 +178,13 @@ resource "kubernetes_deployment" "searxng" {
name = "searxng-tmp"
empty_dir {}
}
volume {
name = "searxng-config-file"
config_map {
name = kubernetes_config_map.searxng_config_file.metadata[0].name
}
}
}
}
}
@@ -0,0 +1,5 @@
use_default_settings: true
search:
formats:
- html
- json
+3
View File
@@ -35,6 +35,9 @@ locals {
tls = v.tls
fqdn = length(v.fqdn) > 0 ? join(" ", v.fqdn) : k
auth = length([for l in v.locations : true if l.private]) > 0
send_timeout = v.send_timeout
read_timeout = v.read_timeout
connect_timeout = v.connect_timeout
locations = [for l in v.locations : {
path = l.path
headers = merge(l.headers, coalesce(v.default_headers, local.default_headers))
@@ -44,6 +44,9 @@ location = /auth {
rewrite ${l.rewrite};
%{ endif ~}
proxy_pass $upstream;
proxy_connect_timeout ${connect_timeout};
proxy_read_timeout ${read_timeout};
proxy_send_timeout ${send_timeout};
proxy_http_version 1.1;
%{ for k,v in l.headers ~}
proxy_set_header ${k} ${v};
@@ -41,6 +41,9 @@ variable "services" {
ingress = optional(bool, true)
service_http_port = optional(number, 80)
service_https_port = optional(number, 443)
read_timeout = optional(string, "60s")
send_timeout = optional(string, "60s")
connect_timeout = optional(string, "250ms")
locations = optional(list(object({
path = string,
headers = optional(map(string), {}),