56 lines
1.8 KiB
Bash
56 lines
1.8 KiB
Bash
#!/usr/bin/env bash
|
|
# tools/cmd/railiance-doctor — workstation & provisioning toolchain checks
|
|
set -euo pipefail
|
|
|
|
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
|
source "${ROOT}/lib/railiance-print.sh"
|
|
|
|
ver() {
|
|
local cmd="$1" out=""
|
|
if command -v "$cmd" >/dev/null 2>&1; then
|
|
out="$("$cmd" --version 2>/dev/null || "$cmd" -V 2>/dev/null || "$cmd" version 2>/dev/null || true)"
|
|
echo "$out" | head -n1
|
|
else
|
|
echo ""
|
|
fi
|
|
}
|
|
have(){ command -v "$1" >/dev/null 2>&1; }
|
|
|
|
OP_REQ=(curl git jq python3 ssh)
|
|
PROV_REQ=(ansible)
|
|
PROV_OPT=(age docker helm kubectl kustomize podman rsync scp sops tar yq)
|
|
|
|
missing_req=0
|
|
|
|
print_hdr "Operator toolchain (required on your workstation)"
|
|
for cmd in "${OP_REQ[@]}"; do
|
|
if have "$cmd"; then ok "$cmd" "$(ver "$cmd")"; else bad "$cmd" "missing"; missing_req=1; fi
|
|
done
|
|
|
|
print_hdr "Provisioning toolchain"
|
|
for cmd in "${PROV_REQ[@]}"; do
|
|
if have "$cmd"; then ok "$cmd" "$(ver "$cmd")"; else bad "$cmd" "missing (needed to run playbooks)"; missing_req=1; fi
|
|
done
|
|
for cmd in "${PROV_OPT[@]}"; do
|
|
if have "$cmd"; then ok "$cmd" "$(ver "$cmd")"; else warn "$cmd" "not installed (only needed if you use related features)"; fi
|
|
done
|
|
|
|
cat <<'NOTE'
|
|
|
|
Notes:
|
|
- Operator tools are needed on your local machine to drive Railiance.
|
|
- Provisioning:
|
|
• ansible — required to bootstrap hosts
|
|
• kubectl/helm/kustomize — needed once Kubernetes is up
|
|
• sops/age — for managing encrypted secrets (recommended)
|
|
• docker or podman — only if building images locally
|
|
• yq — handy for YAML manipulation in scripts
|
|
• rsync/scp/tar — file transfer & packaging utilities
|
|
|
|
TIP: On Debian/Ubuntu install basics with:
|
|
sudo apt-get update && sudo apt-get install -y \
|
|
curl git jq python3 openssh-client ansible rsync tar
|
|
NOTE
|
|
|
|
exit $missing_req
|