Oleg Agent v1.0: Dockerfile, entrypoint, docker-compose, install.sh

This commit is contained in:
Максимка
2026-02-26 22:32:14 +03:00
parent c8d5d28a11
commit 961e41d361
4 changed files with 156 additions and 0 deletions

View File

@@ -0,0 +1,37 @@
FROM debian:bookworm-slim
LABEL maintainer="Oleg Batlaev <oleg@dttb.ru>"
LABEL description="Oleg Agent — портативный DevOps-агент"
# Базовые инструменты
RUN apt-get update && apt-get install -y --no-install-recommends \
curl wget git ssh nano htop \
nmap net-tools dnsutils iputils-ping \
python3 python3-pip python3-venv \
jq yq ca-certificates gnupg \
openssh-client rsync \
&& rm -rf /var/lib/apt/lists/*
# Docker CLI (для управления удалёнными Docker)
RUN install -m 0755 -d /etc/apt/keyrings && \
curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc && \
chmod a+r /etc/apt/keyrings/docker.asc && \
echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian bookworm stable" > /etc/apt/sources.list.d/docker.list && \
apt-get update && apt-get install -y --no-install-recommends docker-ce-cli && \
rm -rf /var/lib/apt/lists/*
# Ansible
RUN python3 -m venv /opt/ansible && \
/opt/ansible/bin/pip install ansible paramiko && \
ln -s /opt/ansible/bin/ansible /usr/local/bin/ansible && \
ln -s /opt/ansible/bin/ansible-playbook /usr/local/bin/ansible-playbook
# Рабочая директория
WORKDIR /workspace
# Скрипт инициализации
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
CMD ["bash"]

View File

@@ -0,0 +1,26 @@
services:
agent:
build: .
image: oleg-agent:latest
container_name: oleg-agent
hostname: oleg-agent
restart: unless-stopped
stdin_open: true
tty: true
environment:
- GITEA_URL=http://git.dttb.ru
- GITEA_USER=oleg
- GITEA_PASS=OL260380eg
- PROXMOX_URL=https://10.0.0.250:8006
- NEXTCLOUD_URL=https://dttb.ru
volumes:
- agent-data:/workspace
- ./secrets:/secrets:ro
# Если NetBird в host mode:
# network_mode: host
extra_hosts:
- "git.dttb.ru:10.0.0.189"
- "dttb.ru:10.0.0.230"
volumes:
agent-data:

View File

@@ -0,0 +1,41 @@
#!/bin/bash
set -e
echo "🤖 Oleg Agent запускается..."
# Настройка git
git config --global user.name "Oleg Agent"
git config --global user.email "oleg@dttb.ru"
# Клонируем knowledge-base если есть доступ к Gitea
KB_DIR="/workspace/knowledge-base"
if [ -n "$GITEA_URL" ] && [ ! -d "$KB_DIR" ]; then
echo "📚 Клонирую knowledge-base..."
git clone "${GITEA_URL}/oleg/knowledge-base.git" "$KB_DIR" 2>/dev/null && \
echo "✅ Knowledge-base подключена" || \
echo "⚠️ Не удалось клонировать (проверь VPN)"
elif [ -d "$KB_DIR" ]; then
echo "📚 Обновляю knowledge-base..."
cd "$KB_DIR" && git pull --quiet 2>/dev/null
fi
# SSH ключи
if [ -d "/secrets/ssh" ]; then
mkdir -p ~/.ssh
cp /secrets/ssh/* ~/.ssh/ 2>/dev/null
chmod 700 ~/.ssh
chmod 600 ~/.ssh/* 2>/dev/null
echo "🔑 SSH ключи загружены"
fi
# Показать статус
echo ""
echo "════════════════════════════════════════"
echo " 🤖 Oleg Agent v1.0"
echo " 📍 $(hostname) / $(hostname -I | awk '{print $1}')"
echo " 📚 KB: $([ -d "$KB_DIR" ] && echo '✅' || echo '❌')"
echo " 🔗 Gitea: ${GITEA_URL:-не задан}"
echo "════════════════════════════════════════"
echo ""
exec "$@"

View File

@@ -0,0 +1,52 @@
#!/bin/bash
# Oleg Agent — установка на Linux
# curl -sSL https://raw.githubusercontent.com/... | bash
set -e
echo "🤖 Установка Oleg Agent..."
# Проверка Docker
if ! command -v docker &> /dev/null; then
echo "❌ Docker не найден. Установите Docker и повторите."
echo " curl -fsSL https://get.docker.com | bash"
exit 1
fi
# Проверка NetBird
if command -v netbird &> /dev/null; then
NB_STATUS=$(netbird status 2>/dev/null | grep -c "Connected" || true)
if [ "$NB_STATUS" -gt 0 ]; then
echo "✅ NetBird подключён"
else
echo "⚠️ NetBird установлен, но не подключён. Выполните: sudo netbird up"
fi
else
echo "⚠️ NetBird не найден. Рекомендуется установить:"
echo " curl -fsSL https://pkgs.netbird.io/install.sh | bash"
echo " sudo netbird up"
fi
# Создаём директорию
AGENT_DIR="$HOME/oleg-agent"
mkdir -p "$AGENT_DIR/secrets/ssh"
# Скачиваем файлы (или клонируем из Gitea)
echo "📥 Загрузка агента..."
if command -v git &> /dev/null; then
git clone http://git.dttb.ru/oleg/knowledge-base.git /tmp/kb-tmp 2>/dev/null && \
cp -r /tmp/kb-tmp/projects/dttb/oleg-agent/* "$AGENT_DIR/" && \
rm -rf /tmp/kb-tmp && \
echo "✅ Файлы загружены из Gitea"
fi
cd "$AGENT_DIR"
# Запуск
echo "🚀 Запуск агента..."
docker compose up -d --build
echo ""
echo "✅ Oleg Agent установлен!"
echo " Подключиться: docker exec -it oleg-agent bash"
echo " Логи: docker logs oleg-agent"