Oleg Agent v1.0: Dockerfile, entrypoint, docker-compose, install.sh
This commit is contained in:
37
projects/dttb/oleg-agent/Dockerfile
Normal file
37
projects/dttb/oleg-agent/Dockerfile
Normal 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"]
|
||||||
26
projects/dttb/oleg-agent/docker-compose.yml
Normal file
26
projects/dttb/oleg-agent/docker-compose.yml
Normal 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:
|
||||||
41
projects/dttb/oleg-agent/entrypoint.sh
Normal file
41
projects/dttb/oleg-agent/entrypoint.sh
Normal 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 "$@"
|
||||||
52
projects/dttb/oleg-agent/install.sh
Executable file
52
projects/dttb/oleg-agent/install.sh
Executable 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"
|
||||||
Reference in New Issue
Block a user