feat: expand devops tooling in setup scripts

Add networking, cloud, and devops packages to 01-package-install.sh
(ansible, k9s, kubectl, minikube, terraform, nmap, etc). Add installers
for helm, kubectx/kubens, stern, dive, trivy, and AWS CLI v2 to
02-dev-tools-setup.sh. Update nvim lazy-lock.json.
This commit is contained in:
Blake Ridgway
2026-07-11 16:26:08 -05:00
parent 671fc9cf07
commit 4063e26c30
3 changed files with 152 additions and 11 deletions

View File

@@ -154,3 +154,122 @@ fi
echo "--- Development Tools Setup Finished ---"
# --- Helm (Kubernetes package manager) ---
echo ""
echo "--- Installing Helm ---"
if command -v helm &>/dev/null; then
echo "✔ Helm already installed: $(helm version --short 2>/dev/null | head -n1)"
else
echo "➤ Fetching latest Helm version..."
HELM_LATEST="$(curl -fsSL https://api.github.com/repos/helm/helm/releases/latest | grep '"tag_name"' | cut -d'"' -f4)"
# e.g. "v3.16.0"
echo " latest is ${HELM_LATEST}, downloading..."
TMPDIR="$(mktemp -d)"
curl -fsSL "https://get.helm.sh/helm-${HELM_LATEST}-linux-${ARCH}.tar.gz" -o "${TMPDIR}/helm.tar.gz"
tar -C "${TMPDIR}" -xzf "${TMPDIR}/helm.tar.gz"
sudo install -m755 "${TMPDIR}/linux-${ARCH}/helm" /usr/local/bin/helm
rm -rf "${TMPDIR}"
echo "Installed Helm ${HELM_LATEST} to /usr/local/bin/helm"
fi
# --- kubectx + kubens (fast k8s context/namespace switching) ---
echo ""
echo "--- Installing kubectx & kubens ---"
_install_kubectx_kubens() {
KUBECTX_VERSION="v0.9.5"
echo " version: ${KUBECTX_VERSION}"
TMPDIR="$(mktemp -d)"
curl -fsSL "https://raw.githubusercontent.com/ahmetb/kubectx/${KUBECTX_VERSION}/kubectx" \
-o "${TMPDIR}/kubectx"
curl -fsSL "https://raw.githubusercontent.com/ahmetb/kubectx/${KUBECTX_VERSION}/kubens" \
-o "${TMPDIR}/kubens"
sudo install -m755 "${TMPDIR}/kubectx" /usr/local/bin/kubectx
sudo install -m755 "${TMPDIR}/kubens" /usr/local/bin/kubens
rm -rf "${TMPDIR}"
echo "✔ kubectx & kubens installed to /usr/local/bin/"
}
if command -v kubectx &>/dev/null && command -v kubens &>/dev/null; then
echo "✔ kubectx & kubens already installed"
else
_install_kubectx_kubens
fi
# --- stern (multi-pod/container log tailing for k8s) ---
echo ""
echo "--- Installing stern ---"
_stern_version() {
curl -fsSL "https://api.github.com/repos/stern/stern/releases/latest" \
| grep '"tag_name"' | cut -d'"' -f4
}
if command -v stern &>/dev/null; then
echo "✔ stern already installed"
else
STERN_VER="$(_stern_version)"
echo " latest is ${STERN_VER}, downloading..."
TMPDIR="$(mktemp -d)"
STERN_URL="https://github.com/stern/stern/releases/download/${STERN_VER}/stern_${STERN_VER#v}_linux_${ARCH}.tar.gz"
curl -fsSL "${STERN_URL}" -o "${TMPDIR}/stern.tar.gz"
tar -C "${TMPDIR}" -xzf "${TMPDIR}/stern.tar.gz" stern
sudo install -m755 "${TMPDIR}/stern" /usr/local/bin/stern
rm -rf "${TMPDIR}"
echo "✔ stern ${STERN_VER} installed to /usr/local/bin/stern"
fi
# --- dive (Docker image layer explorer) ---
echo ""
echo "--- Installing dive ---"
_dive_version() {
curl -fsSL "https://api.github.com/repos/wagoodman/dive/releases/latest" \
| grep '"tag_name"' | cut -d'"' -f4
}
if command -v dive &>/dev/null; then
echo "✔ dive already installed"
else
DIVE_VER="$(_dive_version)"
echo " latest is ${DIVE_VER}, downloading..."
DIVE_URL="https://github.com/wagoodman/dive/releases/download/${DIVE_VER}/dive_${DIVE_VER#v}_linux_${ARCH}.deb"
TMPDIR="$(mktemp -d)"
curl -fsSL "${DIVE_URL}" -o "${TMPDIR}/dive.deb"
if [ "${PACKAGE_MANAGER}" = "apt" ]; then
sudo dpkg -i "${TMPDIR}/dive.deb" 2>/dev/null || sudo apt-get install -f -y
else
# For rpm-based distros, extract binary from deb
ar x "${TMPDIR}/dive.deb" data.tar.gz 2>/dev/null \
&& tar -C "${TMPDIR}" -xzf data.tar.gz ./usr/local/bin/dive \
&& sudo install -m755 "${TMPDIR}/usr/local/bin/dive" /usr/local/bin/dive \
|| echo "⚠ Could not install dive from .deb on non-apt system. Try manual install."
fi
rm -rf "${TMPDIR}"
echo "✔ dive ${DIVE_VER} installed"
fi
# --- trivy (container/filesystem vulnerability scanner) ---
echo ""
echo "--- Installing trivy ---"
if command -v trivy &>/dev/null; then
echo "✔ trivy already installed: $(trivy --version 2>/dev/null | head -n1)"
else
echo "➤ Downloading trivy via official install script..."
curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh \
| sudo sh -s -- -b /usr/local/bin
echo "✔ trivy installed to /usr/local/bin/trivy"
fi
# --- AWS CLI v2 ---
echo ""
echo "--- Installing AWS CLI v2 ---"
_awscli_install() {
TMPDIR="$(mktemp -d)"
curl -fsSL "https://awscli.amazonaws.com/awscli-exe-linux-${ARCH_RAW}.zip" \
-o "${TMPDIR}/awscliv2.zip"
unzip -q "${TMPDIR}/awscliv2.zip" -d "${TMPDIR}"
sudo "${TMPDIR}/aws/install" --update
rm -rf "${TMPDIR}"
echo "✔ AWS CLI v2 installed"
}
if command -v aws &>/dev/null; then
echo "✔ AWS CLI already installed: $(aws --version 2>&1)"
else
_awscli_install
fi