Rename template/ to infmap/, add template publish CI job
This commit is contained in:
12
infmap/backup.sh
Executable file
12
infmap/backup.sh
Executable file
@@ -0,0 +1,12 @@
|
||||
#!/bin/bash
|
||||
source "${AGENT_PATH}/common.sh"
|
||||
_check_required_env_vars "CONTAINER_NAME" "DATA_VOLUME" "BACKUP_FILE" "TEMP_DIR"
|
||||
|
||||
mkdir -p "${TEMP_DIR}/backup"
|
||||
|
||||
docker run --rm -v "${DATA_VOLUME}":/source -v "${TEMP_DIR}/backup":/backup \
|
||||
debian bash -c "tar -czf /backup/data.tgz -C /source ." || _die "Failed to backup data volume"
|
||||
|
||||
tar -czf "${BACKUP_FILE}" -C "${TEMP_DIR}/backup" . || _die "Failed to create backup archive"
|
||||
|
||||
echo "Backup completed successfully"
|
||||
20
infmap/config/infrastructure.conf
Normal file
20
infmap/config/infrastructure.conf
Normal file
@@ -0,0 +1,20 @@
|
||||
# Infrastructure Map Configuration
|
||||
#
|
||||
# Format:
|
||||
# GROUPNAME
|
||||
# USERNAME@SERVERNAME
|
||||
# USERNAME@SERVERNAME
|
||||
# ...
|
||||
#
|
||||
# GROUPNAME is a freeform label to group servers together.
|
||||
# USERNAME@SERVERNAME is the SSH user and hostname/IP to connect to.
|
||||
#
|
||||
# Example:
|
||||
#
|
||||
# Production
|
||||
# root@prod-web-01
|
||||
# root@prod-db-01
|
||||
#
|
||||
# Development
|
||||
# deploy@dev-01
|
||||
# deploy@dev-02
|
||||
12
infmap/config/service.env
Normal file
12
infmap/config/service.env
Normal file
@@ -0,0 +1,12 @@
|
||||
CONTAINER_NAME=infmap
|
||||
SSH_USER="root"
|
||||
|
||||
# Web UI port (HTTP)
|
||||
WEB_PORT=8080
|
||||
|
||||
# Path to SSH private key on the host (used to connect to monitored servers)
|
||||
SSH_KEY_PATH=/root/.ssh/id_ed25519
|
||||
|
||||
# Collection settings
|
||||
COLLECTION_INTERVAL=300
|
||||
MAX_CONCURRENT_SSH=5
|
||||
13
infmap/destroy.sh
Executable file
13
infmap/destroy.sh
Executable file
@@ -0,0 +1,13 @@
|
||||
#!/bin/bash
|
||||
source "${AGENT_PATH}/common.sh"
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
cd "$SCRIPT_DIR"
|
||||
|
||||
_check_required_env_vars "CONTAINER_NAME" "DATA_VOLUME"
|
||||
|
||||
echo "WARNING: This will PERMANENTLY DELETE all data for ${CONTAINER_NAME}"
|
||||
|
||||
docker compose -p "${CONTAINER_NAME}" down 2>/dev/null || true
|
||||
_remove_volume "$DATA_VOLUME"
|
||||
|
||||
echo "Service and all data destroyed"
|
||||
18
infmap/docker-compose.yml
Normal file
18
infmap/docker-compose.yml
Normal file
@@ -0,0 +1,18 @@
|
||||
services:
|
||||
app:
|
||||
image: ${IMAGE_REGISTRY}/${IMAGE_REPO}:${IMAGE_TAG}
|
||||
ports:
|
||||
- "${WEB_PORT}:5000"
|
||||
environment:
|
||||
COLLECTION_INTERVAL: ${COLLECTION_INTERVAL}
|
||||
MAX_CONCURRENT_SSH: ${MAX_CONCURRENT_SSH}
|
||||
volumes:
|
||||
- ${SSH_KEY_PATH}:/app/ssh_key:ro
|
||||
- ${CONFIG_PATH}/infrastructure.conf:/app/infrastructure.conf:ro
|
||||
- app_data:/app/data
|
||||
restart: unless-stopped
|
||||
|
||||
volumes:
|
||||
app_data:
|
||||
external: true
|
||||
name: ${CONTAINER_NAME}_data
|
||||
10
infmap/install-pre.sh
Executable file
10
infmap/install-pre.sh
Executable file
@@ -0,0 +1,10 @@
|
||||
#!/bin/bash
|
||||
source "${AGENT_PATH}/common.sh"
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
cd "$SCRIPT_DIR"
|
||||
|
||||
_check_required_env_vars "CONTAINER_NAME" "IMAGE_REGISTRY" "IMAGE_REPO" "IMAGE_TAG"
|
||||
|
||||
docker pull -q "$IMAGE_REGISTRY/$IMAGE_REPO:$IMAGE_TAG" || echo "Warning: pre-pull failed, install.sh will retry"
|
||||
|
||||
echo "Pre-install complete"
|
||||
24
infmap/install.sh
Executable file
24
infmap/install.sh
Executable file
@@ -0,0 +1,24 @@
|
||||
#!/bin/bash
|
||||
source "${AGENT_PATH}/common.sh"
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
cd "$SCRIPT_DIR"
|
||||
|
||||
_check_required_env_vars "CONTAINER_NAME" "WEB_PORT" "SSH_KEY_PATH" "DATA_VOLUME" "IMAGE_REGISTRY" "IMAGE_REPO" "IMAGE_TAG"
|
||||
_check_docker_installed || _die "Docker test failed"
|
||||
|
||||
# Check SSH key exists
|
||||
[ -f "${SSH_KEY_PATH}" ] || _die "SSH key not found at ${SSH_KEY_PATH}"
|
||||
|
||||
# Check infrastructure.conf exists
|
||||
[ -f "${CONFIG_PATH}/infrastructure.conf" ] || _die "infrastructure.conf not found at ${CONFIG_PATH}/infrastructure.conf"
|
||||
|
||||
docker pull "$IMAGE_REGISTRY/$IMAGE_REPO:$IMAGE_TAG" || _die "Failed to pull image"
|
||||
|
||||
# Create data volume
|
||||
docker volume create "${DATA_VOLUME}" 2>/dev/null || true
|
||||
|
||||
bash ./stop.sh || true
|
||||
docker compose -p "${CONTAINER_NAME}" up -d || _die "Failed to start services"
|
||||
|
||||
echo "Installation of ${CONTAINER_NAME} complete"
|
||||
echo "Web UI available at http://localhost:${WEB_PORT}"
|
||||
8
infmap/logs.sh
Executable file
8
infmap/logs.sh
Executable file
@@ -0,0 +1,8 @@
|
||||
#!/bin/bash
|
||||
source "${AGENT_PATH}/common.sh"
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
cd "$SCRIPT_DIR"
|
||||
|
||||
_check_required_env_vars "CONTAINER_NAME"
|
||||
|
||||
docker compose -p "${CONTAINER_NAME}" logs "$@"
|
||||
5
infmap/ports.sh
Executable file
5
infmap/ports.sh
Executable file
@@ -0,0 +1,5 @@
|
||||
#!/bin/bash
|
||||
source "${AGENT_PATH}/common.sh"
|
||||
_check_required_env_vars "WEB_PORT"
|
||||
|
||||
echo "${WEB_PORT}"
|
||||
13
infmap/restore.sh
Executable file
13
infmap/restore.sh
Executable file
@@ -0,0 +1,13 @@
|
||||
#!/bin/bash
|
||||
source "${AGENT_PATH}/common.sh"
|
||||
_check_required_env_vars "CONTAINER_NAME" "DATA_VOLUME" "BACKUP_FILE" "TEMP_DIR"
|
||||
|
||||
mkdir -p "${TEMP_DIR}/restore"
|
||||
tar -xzf "${BACKUP_FILE}" -C "${TEMP_DIR}/restore" || _die "Failed to extract backup archive"
|
||||
|
||||
docker volume rm "${DATA_VOLUME}" 2>/dev/null || true
|
||||
docker volume create "${DATA_VOLUME}" || _die "Failed to create data volume"
|
||||
docker run --rm -v "${DATA_VOLUME}":/target -v "${TEMP_DIR}/restore":/backup \
|
||||
debian bash -c "tar -xzf /backup/data.tgz -C /target" || _die "Failed to restore data volume"
|
||||
|
||||
echo "Restore completed successfully"
|
||||
11
infmap/start.sh
Executable file
11
infmap/start.sh
Executable file
@@ -0,0 +1,11 @@
|
||||
#!/bin/bash
|
||||
source "${AGENT_PATH}/common.sh"
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
cd "$SCRIPT_DIR"
|
||||
|
||||
_check_required_env_vars "CONTAINER_NAME" "DATA_VOLUME"
|
||||
|
||||
docker volume create "${DATA_VOLUME}" 2>/dev/null || true
|
||||
docker compose -p "${CONTAINER_NAME}" up -d || _die "Failed to start services"
|
||||
|
||||
echo "${CONTAINER_NAME} started"
|
||||
23
infmap/status.sh
Executable file
23
infmap/status.sh
Executable file
@@ -0,0 +1,23 @@
|
||||
#!/bin/bash
|
||||
source "${AGENT_PATH}/common.sh"
|
||||
_check_required_env_vars "CONTAINER_NAME"
|
||||
|
||||
APP_CONTAINER="${CONTAINER_NAME}-app-1"
|
||||
|
||||
if ! docker ps -a --format "{{.Names}}" | grep -q "^${APP_CONTAINER}$"; then
|
||||
echo "Unknown"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
STATE=$(docker inspect -f '{{.State.Status}}' "$APP_CONTAINER" 2>/dev/null)
|
||||
case "$STATE" in
|
||||
running)
|
||||
echo "Running"
|
||||
;;
|
||||
exited|stopped)
|
||||
echo "Stopped"
|
||||
;;
|
||||
*)
|
||||
echo "Unknown"
|
||||
;;
|
||||
esac
|
||||
10
infmap/stop.sh
Executable file
10
infmap/stop.sh
Executable file
@@ -0,0 +1,10 @@
|
||||
#!/bin/bash
|
||||
source "${AGENT_PATH}/common.sh"
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
cd "$SCRIPT_DIR"
|
||||
|
||||
_check_required_env_vars "CONTAINER_NAME"
|
||||
|
||||
docker compose -p "${CONTAINER_NAME}" down 2>/dev/null || true
|
||||
|
||||
echo "${CONTAINER_NAME} stopped"
|
||||
9
infmap/template_info.env
Normal file
9
infmap/template_info.env
Normal file
@@ -0,0 +1,9 @@
|
||||
REQUIRES_HOST_ROOT=false
|
||||
REQUIRES_DOCKER=true
|
||||
REQUIRES_DOCKER_ROOT=false
|
||||
|
||||
IMAGE_REGISTRY="gitea.jde.nz"
|
||||
IMAGE_REPO="public/infmap"
|
||||
IMAGE_TAG="latest"
|
||||
|
||||
DATA_VOLUME="${CONTAINER_NAME}_data"
|
||||
12
infmap/uninstall.sh
Executable file
12
infmap/uninstall.sh
Executable file
@@ -0,0 +1,12 @@
|
||||
#!/bin/bash
|
||||
source "${AGENT_PATH}/common.sh"
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
cd "$SCRIPT_DIR"
|
||||
|
||||
_check_required_env_vars "CONTAINER_NAME"
|
||||
|
||||
docker compose -p "${CONTAINER_NAME}" down || _die "Failed to stop services"
|
||||
|
||||
# DO NOT remove volumes here! Data is preserved for reinstallation.
|
||||
echo "Uninstallation of ${CONTAINER_NAME} complete"
|
||||
echo "Note: Data volumes have been preserved. To remove all data, use destroy.sh"
|
||||
Reference in New Issue
Block a user