62 lines
1.8 KiB
Bash
Executable File
62 lines
1.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
if [[ "${EUID:-$(id -u)}" -ne 0 ]]; then
|
|
echo "Run as root (or via sudo)." >&2
|
|
exit 1
|
|
fi
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
AGENT_DIR="$(cd "${SCRIPT_DIR}/.." && pwd)"
|
|
|
|
BIN_SOURCE="${1:-${AGENT_DIR}/keywarden-agent}"
|
|
UNIT_SOURCE="${AGENT_DIR}/systemd/keywarden-agent.service"
|
|
ENV_SOURCE="${AGENT_DIR}/systemd/keywarden-agent.env.example"
|
|
|
|
if [[ ! -f "${BIN_SOURCE}" ]]; then
|
|
echo "Agent binary not found: ${BIN_SOURCE}" >&2
|
|
echo "Build it first: go build -o keywarden-agent ./cmd/keywarden-agent" >&2
|
|
exit 1
|
|
fi
|
|
|
|
if [[ ! -f "${UNIT_SOURCE}" ]]; then
|
|
echo "Unit file not found: ${UNIT_SOURCE}" >&2
|
|
exit 1
|
|
fi
|
|
|
|
install -D -m 0755 "${BIN_SOURCE}" /usr/local/bin/keywarden-agent
|
|
install -D -m 0644 "${UNIT_SOURCE}" /etc/systemd/system/keywarden-agent.service
|
|
|
|
if [[ ! -f /etc/default/keywarden-agent ]]; then
|
|
install -D -m 0640 "${ENV_SOURCE}" /etc/default/keywarden-agent
|
|
fi
|
|
|
|
mkdir -p /etc/keywarden
|
|
if [[ ! -f /etc/keywarden/agent.json ]]; then
|
|
cat > /etc/keywarden/agent.json <<'EOF'
|
|
{
|
|
"server_url": "https://keywarden.example.com/api/v1"
|
|
}
|
|
EOF
|
|
chmod 0600 /etc/keywarden/agent.json
|
|
fi
|
|
|
|
systemctl daemon-reload
|
|
|
|
cat <<'EOF'
|
|
Installed:
|
|
- /usr/local/bin/keywarden-agent
|
|
- /etc/systemd/system/keywarden-agent.service
|
|
- /etc/default/keywarden-agent (if it did not already exist)
|
|
- /etc/keywarden/agent.json (bootstrap file, if it did not already exist)
|
|
|
|
Next steps:
|
|
1) Edit /etc/default/keywarden-agent and set KEYWARDEN_SERVER_URL + KEYWARDEN_ENROLL_TOKEN.
|
|
2) (Optional) Edit /etc/keywarden/agent.json with additional settings.
|
|
3) Enable and start:
|
|
systemctl enable --now keywarden-agent
|
|
4) Check status/logs:
|
|
systemctl status keywarden-agent
|
|
journalctl -u keywarden-agent -f
|
|
EOF
|