systemd ile Deployment
Bare-metal veya VM üzerinde Consul Guardian'ı systemd servisi olarak çalıştırabilirsin. Bu yöntem container kullanmadan sürekli çalışan bir servis sağlar.
Kullanıcı Oluşturma
Guardian için ayrı bir sistem kullanıcısı oluştur. Root olarak çalıştırma:
# Kullanıcı oluştur (login shell'i olmayan sistem kullanıcısı)
sudo useradd --system --home-dir /var/lib/consul-guardian \
--create-home --shell /usr/sbin/nologin consul-guardian
# Git repo dizinini oluştur
sudo mkdir -p /var/lib/consul-guardian/repo
sudo chown consul-guardian:consul-guardian /var/lib/consul-guardian/repo
# Config dizinini oluştur
sudo mkdir -p /etc/consul-guardian
Binary Kurulumu
# Binary'yi indir veya derle
sudo cp consul-guardian /usr/local/bin/consul-guardian
sudo chmod +x /usr/local/bin/consul-guardian
# Doğrula
consul-guardian version
Yapılandırma Dosyası
sudo tee /etc/consul-guardian/config.yaml << 'EOF'
consul:
address: "http://localhost:8500"
token: "${CONSUL_HTTP_TOKEN}"
datacenter: "dc1"
watch:
prefixes:
- "config/"
- "env/"
- "feature-flags/"
poll_interval: "5m"
git:
repo_path: "/var/lib/consul-guardian/repo"
auto_push: true
remote: "origin"
branch: "main"
snapshot:
enabled: true
schedule: "0 */6 * * *"
storage:
type: "local"
path: "/var/lib/consul-guardian/snapshots"
retention:
count: 30
logging:
level: "info"
format: "json"
output: "stdout"
EOF
sudo chown consul-guardian:consul-guardian /etc/consul-guardian/config.yaml
sudo chmod 640 /etc/consul-guardian/config.yaml
systemd Unit Dosyası
sudo tee /etc/systemd/system/consul-guardian.service << 'EOF'
[Unit]
Description=Consul Guardian - Backup, sync and protect Consul KV
Documentation=https://consul-guardian.dev
After=network-online.target consul.service
Wants=network-online.target
Requires=consul.service
[Service]
Type=simple
User=consul-guardian
Group=consul-guardian
# Consul token'ı environment file'dan oku
EnvironmentFile=-/etc/consul-guardian/env
ExecStart=/usr/local/bin/consul-guardian watch \
--config /etc/consul-guardian/config.yaml
Restart=always
RestartSec=5
StartLimitBurst=5
StartLimitIntervalSec=60
# Güvenlik ayarları
NoNewPrivileges=yes
ProtectSystem=strict
ProtectHome=yes
ReadWritePaths=/var/lib/consul-guardian
PrivateTmp=yes
PrivateDevices=yes
# Kaynak limitleri
LimitNOFILE=65536
MemoryMax=256M
# Log ayarları
StandardOutput=journal
StandardError=journal
SyslogIdentifier=consul-guardian
[Install]
WantedBy=multi-user.target
EOF
Environment Dosyası
Consul token gibi hassas değerleri environment file'da sakla:
sudo tee /etc/consul-guardian/env << 'EOF'
CONSUL_HTTP_TOKEN=your-consul-acl-token
CONSUL_GUARDIAN_CONSUL_TOKEN=your-consul-acl-token
EOF
sudo chmod 600 /etc/consul-guardian/env
sudo chown consul-guardian:consul-guardian /etc/consul-guardian/env
Servisi Başlat
# systemd'yi yeniden yükle
sudo systemctl daemon-reload
# Servisi etkinleştir (boot'ta otomatik başlat)
sudo systemctl enable consul-guardian
# Servisi başlat
sudo systemctl start consul-guardian
# Durumu kontrol et
sudo systemctl status consul-guardian
Log Yönetimi
Guardian log'ları journald'ye gider. journalctl ile okuyabilirsin:
# Son log'ları gör
journalctl -u consul-guardian -n 50
# Canlı takip
journalctl -u consul-guardian -f
# Belirli zaman aralığındaki log'lar
journalctl -u consul-guardian --since "2026-04-04 10:00" --until "2026-04-04 12:00"
# JSON formatında (Guardian json log kullanıyorsa)
journalctl -u consul-guardian -o cat | jq '.'
Log rotasyonu
journald varsayılan olarak log rotasyonu yapar. Özellikle ayarlamak istersen:
# /etc/systemd/journald.conf
[Journal]
SystemMaxUse=500M
SystemMaxFileSize=50M
MaxRetentionSec=30day
Dosyaya loglama (opsiyonel)
journald yerine dosyaya loglamak istersen:
# config.yaml
logging:
output: "/var/log/consul-guardian/guardian.log"
logrotate yapılandırması:
sudo tee /etc/logrotate.d/consul-guardian << 'EOF'
/var/log/consul-guardian/*.log {
daily
rotate 14
compress
delaycompress
missingok
notifempty
create 640 consul-guardian consul-guardian
postrotate
systemctl reload consul-guardian 2>/dev/null || true
endscript
}
EOF
Dashboard Modu için Unit Dosyası
Watch yerine dashboard çalıştırmak istersen, ExecStart satırını değiştir:
ExecStart=/usr/local/bin/consul-guardian dashboard \
--config /etc/consul-guardian/config.yaml \
--listen :9090 \
--static-dir /opt/consul-guardian/frontend/dist
Gerçek Senaryo: Ubuntu 22.04 Üzerinde Kurulum
# 1. Kullanıcı oluştur
sudo useradd --system --home-dir /var/lib/consul-guardian \
--create-home --shell /usr/sbin/nologin consul-guardian
# 2. Binary'yi indir
curl -sSL https://github.com/consul-guardian/consul-guardian/releases/latest/download/consul-guardian-linux-amd64 \
-o /tmp/consul-guardian
sudo mv /tmp/consul-guardian /usr/local/bin/
sudo chmod +x /usr/local/bin/consul-guardian
# 3. Git repo'yu başlat
sudo -u consul-guardian git init /var/lib/consul-guardian/repo
# 4. Config ve env dosyalarını oluştur (yukarıdaki örnekleri kullan)
# 5. Unit dosyasını oluştur (yukarıdaki örneği kullan)
# 6. Başlat
sudo systemctl daemon-reload
sudo systemctl enable --now consul-guardian
# 7. Doğrula
sudo systemctl status consul-guardian
journalctl -u consul-guardian -n 20