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:
@@ -2,7 +2,7 @@
|
||||
"LuaSnip": { "branch": "master", "commit": "0abc8f390b278c3b4aabc4c004ac8a088b65cf24" },
|
||||
"NvChad": { "branch": "v2.5", "commit": "add44b952d631981614bbb8cfc6f7002f296dfe6" },
|
||||
"avante.nvim": { "branch": "main", "commit": "0222885dff8ff17def0a78ccdeaf02c32230a55a" },
|
||||
"base46": { "branch": "v3.0", "commit": "884b990dcdbe07520a0892da6ba3e8d202b46337" },
|
||||
"base46": { "branch": "v3.0", "commit": "cbb71c6cb56f53b30ab1a95a6d277f7e0524025b" },
|
||||
"cmp-async-path": { "branch": "main", "commit": "98185a91d49ff5dd249aebf2f7456e18063fa2a0" },
|
||||
"cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" },
|
||||
"cmp-nvim-lsp": { "branch": "main", "commit": "cbc7b02bb99fae35cb42f514762b89b5126651ef" },
|
||||
@@ -14,7 +14,7 @@
|
||||
"gitsigns.nvim": { "branch": "main", "commit": "eb60cc7b94c46005237fd34170d76f3a089a90aa" },
|
||||
"harpoon": { "branch": "harpoon2", "commit": "87b1a3506211538f460786c23f98ec63ad9af4e5" },
|
||||
"indent-blankline.nvim": { "branch": "master", "commit": "d28a3f70721c79e3c5f6693057ae929f3d9c0a03" },
|
||||
"lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" },
|
||||
"lazy.nvim": { "branch": "main", "commit": "85c7ff3711b730b4030d03144f6db6375044ae82" },
|
||||
"lazygit.nvim": { "branch": "main", "commit": "a04ad0dbc725134edbee3a5eea29290976695357" },
|
||||
"mason.nvim": { "branch": "main", "commit": "2a6940af80375532e5e9e7c1f2fc6319a1b7a69d" },
|
||||
"menu": { "branch": "main", "commit": "7a0a4a2896b715c066cfbe320bdc048091874cc6" },
|
||||
@@ -28,7 +28,7 @@
|
||||
"nvim-dap-ui": { "branch": "master", "commit": "1a66cabaa4a4da0be107d5eda6d57242f0fe7e49" },
|
||||
"nvim-lspconfig": { "branch": "master", "commit": "292f44408498103c47996ff5c18fd366293840d8" },
|
||||
"nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" },
|
||||
"nvim-tree.lua": { "branch": "master", "commit": "7ff7040bf6c246671eb55cb1727de4fd9f92a106" },
|
||||
"nvim-tree.lua": { "branch": "master", "commit": "cf18a662cd5f200361b6fedfb794eed583e075e1" },
|
||||
"nvim-treesitter": { "branch": "main", "commit": "4916d6592ede8c07973490d9322f187e07dfefac" },
|
||||
"nvim-web-devicons": { "branch": "master", "commit": "dad71387de386a946b123079d0e53f23028f3abd" },
|
||||
"oil.nvim": { "branch": "master", "commit": "b73018b75affd13fa38e2fc94ef753b465f770d7" },
|
||||
@@ -38,7 +38,7 @@
|
||||
"todo-comments.nvim": { "branch": "main", "commit": "31e3c38ce9b29781e4422fc0322eb0a21f4e8668" },
|
||||
"toggleterm.nvim": { "branch": "main", "commit": "50ea089fc548917cc3cc16b46a8211833b9e3c7c" },
|
||||
"trouble.nvim": { "branch": "main", "commit": "bd67efe408d4816e25e8491cc5ad4088e708a69a" },
|
||||
"ui": { "branch": "v3.0", "commit": "3e67e9d5325fd47fdbc90ca00a147db2f3525754" },
|
||||
"ui": { "branch": "v3.0", "commit": "28019401865beffcedc744bb1506d0201b88f2f9" },
|
||||
"volt": { "branch": "main", "commit": "620de1321f275ec9d80028c68d1b88b409c0c8b1" },
|
||||
"which-key.nvim": { "branch": "main", "commit": "3aab2147e74890957785941f0c1ad87d0a44c15a" }
|
||||
}
|
||||
|
||||
@@ -13,36 +13,58 @@ fi
|
||||
|
||||
# Define base package list
|
||||
BASE_PACKAGE_LIST=(
|
||||
ansible
|
||||
bat
|
||||
btop
|
||||
curl
|
||||
git
|
||||
gh
|
||||
direnv
|
||||
eza
|
||||
fd-find
|
||||
flatpak
|
||||
fzf
|
||||
git
|
||||
gh
|
||||
httpie
|
||||
iperf3
|
||||
jq
|
||||
k9s
|
||||
kubectl
|
||||
minikube
|
||||
mtr
|
||||
nmap
|
||||
python3
|
||||
python3-pip
|
||||
ripgrep
|
||||
virt-manager
|
||||
zsh
|
||||
wget
|
||||
socat
|
||||
tcpdump
|
||||
terraform
|
||||
tldr
|
||||
tmux
|
||||
traceroute
|
||||
unzip
|
||||
virt-manager
|
||||
wget
|
||||
whois
|
||||
zoxide
|
||||
zsh
|
||||
)
|
||||
|
||||
# Distro-specific packages to add to the main list
|
||||
DISTRO_SPECIFIC_PACKAGES=()
|
||||
if [ "$PACKAGE_MANAGER" == "dnf" ]; then
|
||||
DISTRO_SPECIFIC_PACKAGES+=(
|
||||
"bind-utils" # dig, nslookup, etc.
|
||||
"fontconfig-devel" # for fc-cache
|
||||
"nmap-ncat" # netcat utility
|
||||
"openssl-devel" # for various compilations
|
||||
"util-linux-user" # for chsh, if needed by OhMyZsh script
|
||||
)
|
||||
elif [ "$PACKAGE_MANAGER" == "apt" ]; then
|
||||
DISTRO_SPECIFIC_PACKAGES+=(
|
||||
"dnsutils"
|
||||
"libfontconfig-dev"
|
||||
"libssl-dev"
|
||||
"fd-find" # On Debian/Ubuntu, binary is fdfind, symlink to fd often needed
|
||||
# Or user might prefer 'fd' package if available from other sources
|
||||
"netcat-openbsd"
|
||||
)
|
||||
fi
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user