mirror of
https://github.com/yyhuni/xingrin.git
synced 2026-02-18 20:33:17 +08:00
- 新增logger模块,提供基于zap的日志管理 - agent主程序及内部模块改为使用zap日志记录信息和错误 - agent内部关键事件增加详细日志输出 - 配置日志级别和环境变量控制日志格式和输出 - websocket和task客户端启用TLS跳过验证并记录连接日志 - 任务接收、取消和配置更新过程中增加结构化日志记录 - 更新过程中添加panic捕获日志及状态更新 - 移除.vscode/settings.json配置文件 - 更新Dockerfile基础镜像版本和环境变量 - .gitignore添加SSL证书相关忽略规则 - 调整Go模块依赖,新增多个日志和相关库依赖
121 lines
3.8 KiB
PowerShell
121 lines
3.8 KiB
PowerShell
$ErrorActionPreference = "Stop"
|
|
Set-StrictMode -Version Latest
|
|
|
|
$Token = "{{.Token}}"
|
|
$ServerUrl = "{{.ServerURL}}"
|
|
$RegisterUrl = if ($env:LUNAFOX_REGISTER_URL) { $env:LUNAFOX_REGISTER_URL } else { "" }
|
|
$AgentServerUrl = if ($env:LUNAFOX_AGENT_SERVER_URL) { $env:LUNAFOX_AGENT_SERVER_URL } else { $RegisterUrl }
|
|
$NetworkName = if ($env:LUNAFOX_NETWORK) { $env:LUNAFOX_NETWORK } else { "off" }
|
|
$AgentImage = "{{.AgentImage}}"
|
|
$AgentVersion = "{{.AgentVersion}}"
|
|
$DefaultWorkerToken = "{{.WorkerToken}}"
|
|
$WorkerImage = "yyhuni/lunafox-worker"
|
|
|
|
if (-not $RegisterUrl) {
|
|
Write-Error "LUNAFOX_REGISTER_URL is required (no defaults)."
|
|
exit 1
|
|
}
|
|
|
|
Write-Output "Configuration:"
|
|
Write-Output "Register URL: $RegisterUrl"
|
|
Write-Output "Agent server URL: $AgentServerUrl"
|
|
Write-Output "Network: $NetworkName"
|
|
|
|
if (-not $env:WORKER_TOKEN) {
|
|
$env:WORKER_TOKEN = $DefaultWorkerToken
|
|
}
|
|
|
|
if (-not $env:WORKER_TOKEN) {
|
|
Write-Error "WORKER_TOKEN is required (set WORKER_TOKEN=...)"
|
|
exit 1
|
|
}
|
|
|
|
if (-not (Get-Command docker -ErrorAction SilentlyContinue)) {
|
|
Write-Error "Docker is required. Install it first: https://docs.docker.com/desktop/install/windows-install/"
|
|
exit 1
|
|
}
|
|
|
|
docker info 2>$null | Out-Null
|
|
if ($LASTEXITCODE -ne 0) {
|
|
Write-Error "Docker daemon is not running or is not accessible. Please start Docker Desktop (or the Docker service)."
|
|
exit 1
|
|
}
|
|
|
|
if (-not $env:AGENT_HOSTNAME) {
|
|
$env:AGENT_HOSTNAME = $env:COMPUTERNAME
|
|
}
|
|
|
|
$body = @{ token = $Token; hostname = $env:AGENT_HOSTNAME; version = $AgentVersion } | ConvertTo-Json -Compress
|
|
$invokeParams = @{ Method = "Post"; Uri = "$RegisterUrl/api/agents/register"; ContentType = "application/json"; Body = $body; TimeoutSec = 30 }
|
|
try {
|
|
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = { $true }
|
|
} catch { }
|
|
if ($PSVersionTable.PSVersion.Major -ge 7) {
|
|
$invokeParams.SkipCertificateCheck = $true
|
|
}
|
|
try {
|
|
$apiKey = Invoke-RestMethod @invokeParams
|
|
$apiKey = $apiKey.Trim()
|
|
} catch {
|
|
Write-Error "Registration failed: $_"
|
|
exit 1
|
|
}
|
|
|
|
if (-not $apiKey) {
|
|
Write-Error "Failed to register agent"
|
|
exit 1
|
|
}
|
|
|
|
$maxTasks = if ($env:MAX_TASKS) { $env:MAX_TASKS } else { "5" }
|
|
$cpuThreshold = if ($env:CPU_THRESHOLD) { $env:CPU_THRESHOLD } else { "85" }
|
|
$memThreshold = if ($env:MEM_THRESHOLD) { $env:MEM_THRESHOLD } else { "85" }
|
|
$diskThreshold = if ($env:DISK_THRESHOLD) { $env:DISK_THRESHOLD } else { "90" }
|
|
|
|
$dataDir = if ($env:AGENT_DATA_DIR) { $env:AGENT_DATA_DIR } else { "C:\lunafox" }
|
|
if (-not (Test-Path $dataDir)) {
|
|
New-Item -ItemType Directory -Path $dataDir | Out-Null
|
|
}
|
|
|
|
Write-Output "Installing LunaFox Agent $AgentVersion..."
|
|
Write-Output "Pulling agent image..."
|
|
docker pull "$AgentImage`:$AgentVersion"
|
|
|
|
Write-Output "Pulling worker image..."
|
|
docker pull "$WorkerImage`:$AgentVersion"
|
|
|
|
docker rm -f lunafox-agent 2>$null | Out-Null
|
|
|
|
$networkArgs = @()
|
|
if ($NetworkName -and $NetworkName -notin @("off", "none")) {
|
|
docker network inspect $NetworkName 2>$null | Out-Null
|
|
if ($LASTEXITCODE -eq 0) {
|
|
$networkArgs = @("--network", $NetworkName)
|
|
} else {
|
|
Write-Warning "Docker network '$NetworkName' not found, using default bridge."
|
|
}
|
|
}
|
|
|
|
$dockerArgs = @(
|
|
"run", "-d", "--restart", "unless-stopped", "--name", "lunafox-agent"
|
|
)
|
|
if ($networkArgs.Count -gt 0) { $dockerArgs += $networkArgs }
|
|
$dockerArgs += @(
|
|
"--hostname", $env:AGENT_HOSTNAME,
|
|
"-e", "SERVER_URL=$AgentServerUrl",
|
|
"-e", "API_KEY=$apiKey",
|
|
"-e", "WORKER_TOKEN=$env:WORKER_TOKEN",
|
|
"-e", "AGENT_VERSION=$AgentVersion",
|
|
"-e", "MAX_TASKS=$maxTasks",
|
|
"-e", "CPU_THRESHOLD=$cpuThreshold",
|
|
"-e", "MEM_THRESHOLD=$memThreshold",
|
|
"-e", "DISK_THRESHOLD=$diskThreshold",
|
|
"-e", "AGENT_HOSTNAME=$env:AGENT_HOSTNAME",
|
|
"-v", "//var/run/docker.sock:/var/run/docker.sock",
|
|
"-v", "$dataDir`:/opt/lunafox",
|
|
"$AgentImage`:$AgentVersion"
|
|
)
|
|
|
|
docker @dockerArgs | Out-Null
|
|
|
|
Write-Output "Agent installed and running (container: lunafox-agent)"
|