- [x] 完成log模块镜像构建、本地端到端写日志——收集——查询流程; - [x] 完成bind模块构建; - [x] 内置域名IP自动更新脚本,使用 /private/argus/etc目录下文件进行同步,容器启动时自动写IP,定时任务刷新更新DNS服务器IP和DNS规则; Co-authored-by: root <root@curious.host.com> Reviewed-on: #8 Reviewed-by: sundapeng <sundp@mail.zgclab.edu.cn>
115 lines
3.0 KiB
Bash
Executable File
115 lines
3.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Test configuration persistence after container restart
|
|
# Usage: ./04_persistence_test.sh
|
|
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
TEST_DIR="$(dirname "$SCRIPT_DIR")"
|
|
|
|
echo "=== Configuration Persistence Test ==="
|
|
|
|
# Check if dig is available
|
|
if ! command -v dig &> /dev/null; then
|
|
echo "Installing dig (dnsutils)..."
|
|
apt-get update && apt-get install -y dnsutils
|
|
fi
|
|
|
|
# Function to test DNS query
|
|
test_dns_query() {
|
|
local hostname="$1"
|
|
local expected_ip="$2"
|
|
local description="$3"
|
|
|
|
echo "Testing: $description"
|
|
echo "Query: $hostname.argus.com -> Expected: $expected_ip"
|
|
|
|
result=$(dig @localhost $hostname.argus.com A +short 2>/dev/null || echo "QUERY_FAILED")
|
|
|
|
if [ "$result" = "$expected_ip" ]; then
|
|
echo "✓ $result"
|
|
return 0
|
|
else
|
|
echo "✗ Got: $result, Expected: $expected_ip"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
echo ""
|
|
echo "Step 1: Stopping current container..."
|
|
|
|
# Stop the container
|
|
docker compose down
|
|
|
|
echo "Container stopped"
|
|
|
|
echo ""
|
|
echo "Step 2: Verifying persistent configuration exists..."
|
|
|
|
# Check if modified configuration exists
|
|
DB_FILE="$TEST_DIR/private/argus/bind/db.argus.com"
|
|
|
|
if [ ! -f "$DB_FILE" ]; then
|
|
echo "✗ Persistent configuration file not found: $DB_FILE"
|
|
exit 1
|
|
fi
|
|
|
|
# Check if the modified IP is in the configuration
|
|
if grep -q "192.168.1.100" "$DB_FILE"; then
|
|
echo "✓ Modified IP (192.168.1.100) found in persistent configuration"
|
|
else
|
|
echo "✗ Modified IP not found in persistent configuration"
|
|
echo "Configuration content:"
|
|
cat "$DB_FILE"
|
|
exit 1
|
|
fi
|
|
|
|
echo ""
|
|
echo "Step 3: Restarting container with persistent configuration..."
|
|
|
|
# Start the container again
|
|
docker compose up -d
|
|
|
|
echo "Waiting for container to be ready..."
|
|
sleep 5
|
|
|
|
# Check if container is running
|
|
if ! docker compose ps | grep -q "Up"; then
|
|
echo "✗ Failed to restart container"
|
|
docker compose logs
|
|
exit 1
|
|
fi
|
|
|
|
echo "✓ Container restarted successfully"
|
|
|
|
echo ""
|
|
echo "Step 4: Testing DNS resolution after restart..."
|
|
|
|
# Wait a bit more for DNS to be fully ready
|
|
sleep 5
|
|
|
|
# Test that the modified configuration is still active
|
|
if ! test_dns_query "web" "192.168.1.100" "Persistent web.argus.com resolution"; then
|
|
echo "✗ Persistent configuration test failed"
|
|
exit 1
|
|
fi
|
|
|
|
# Also verify ns1 still works
|
|
if ! test_dns_query "ns1" "127.0.0.1" "ns1.argus.com still working"; then
|
|
echo "✗ ns1 DNS test failed after restart"
|
|
exit 1
|
|
fi
|
|
|
|
echo ""
|
|
echo "Step 5: Verifying configuration files are linked correctly..."
|
|
|
|
# Check that the persistent files are properly linked
|
|
echo "Checking file links in container:"
|
|
docker compose exec bind9 ls -la /etc/bind/named.conf.local /etc/bind/db.argus.com
|
|
|
|
echo ""
|
|
echo "✓ Configuration persistence test completed successfully!"
|
|
echo "✓ Modified IP (192.168.1.100) persisted after container restart"
|
|
echo "✓ Configuration files properly linked to persistent storage"
|
|
echo "✓ DNS resolution working correctly with persisted configuration" |