Created
June 1, 2021 23:45
-
-
Save navarrothiago/0f609f30fe9a3e8ad2cf7b8ebb22cdf7 to your computer and use it in GitHub Desktop.
Cilium Kafka Example Tmux Layout
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# ============================================== | |
# Author: Thiago Navarro | |
# email: navarro.ime@gmail.com | |
# | |
# Create a grid (panes) for kafka example | |
# Login k8s1 | |
# https://docs.cilium.io/en/v1.10/gettingstarted/kafka/#gs-kafka | |
# | |
# Dependencies: tmux, cilium, vagrant | |
# | |
# TODO: | |
#============================================= | |
CMD_LOGIN_K8s1="ssh vagrant@127.0.0.1 -p 2222" | |
CMD_LOGIN_EMPIRE_HQ="HQ_POD=\$(kubectl get pods -l app=empire-hq -o jsonpath='{.items[0].metadata.name}') && kubectl exec -it \$HQ_POD -- sh -c \"PS1=\\\"empire-hq \$\\\" /bin/bash\"" | |
CMD_LOGIN_EMPIRE_BACKUP="BACKUP_POD=\$(kubectl get pods -l app=empire-backup -o jsonpath='{.items[0].metadata.name}') && kubectl exec -it \$BACKUP_POD -- sh -c \"PS1=\\\"empire-backup \$\\\" /bin/bash\"" | |
CMD_LOGIN_OUTPUT_8888="OUTPOST_8888_POD=\$(kubectl get pods -l outpostid=8888 -o jsonpath='{.items[0].metadata.name}') && kubectl exec -it \$OUTPOST_8888_POD -- sh -c \"PS1=\\\"outpost-8888 \$\\\" /bin/bash\"" | |
CMD_LOGIN_OUTPUT_9999="OUTPOST_9999_POD=\$(kubectl get pods -l outpostid=9999 -o jsonpath='{.items[0].metadata.name}') && kubectl exec -it \$OUTPOST_9999_POD -- sh -c \"PS1=\\\"outpost-9999 \$\\\" /bin/bash\"" | |
#Create remote session with panes | |
initialize() { | |
echo "Initializing on session "${session_name}"..." | |
# Initialize windowns and panes | |
tmux kill-session -t $session_name -n testbed 2>/dev/null | |
# Create window 0 | |
tmux -2 new-session -d -s $session_name | |
tmux rename-window -t 0 'kafka' | |
# Configure layout | |
tmux split-window -t $session_name:0.0 -v \; selectl tiled | |
tmux split-window -t $session_name:0.1 -v \; selectl tiled | |
tmux split-window -t $session_name:0.2 -v \; selectl tiled | |
tmux split-window -t $session_name:0.3 -v \; selectl tiled | |
tmux select-layout -t $session_name even-vertical | |
local k8s1_pane=(0 1 2 3 4) | |
# Select window 0 pane 2 | |
tmux select-pane -t "$session_name":0.0 | |
# Login K8s1 | |
for value in "${k8s1_pane[@]}"; do | |
tmux send-keys -t $session_name:0."${value}" "${CMD_LOGIN_K8s1}" C-m | |
done | |
# Run commands k8s1 | |
tmux send-keys -t $session_name:0.${k8s1_pane[1]} "${CMD_LOGIN_EMPIRE_HQ}" C-m | |
tmux send-keys -t $session_name:0.${k8s1_pane[2]} "${CMD_LOGIN_EMPIRE_BACKUP}" C-m | |
tmux send-keys -t $session_name:0.${k8s1_pane[3]} "${CMD_LOGIN_OUTPUT_8888}" C-m | |
tmux send-keys -t $session_name:0.${k8s1_pane[4]} "${CMD_LOGIN_OUTPUT_9999}" C-m | |
} | |
attach() { | |
echo "Attaching on session "${session_name}"..." | |
tmux select-pane -t $session_name:0.0 | |
tmux -2 attach-session -t $session_name | |
} | |
stop() { | |
echo "Stopping on session "${session_name}"..." | |
} | |
force_kill() { | |
echo "Killing on session "${session_name}"..." | |
#sleep 1 | |
tmux kill-session -t $session_name 2>/dev/null | |
} | |
main() { | |
# set -o errexit | |
set -o pipefail | |
set -o nounset | |
# set -x | |
local -r dirname="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | |
local -r filename="${dirname}/$(basename "${BASH_SOURCE[0]}")" | |
local -r session_name="cilium-kafka" | |
# Enable nested tmux session. | |
unset TMUX | |
initialize | |
attach | |
stop | |
force_kill | |
} | |
main "$@" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment