কীভাবে আমি Aliases আর Bash দিয়ে আমার DevOps Workflow সহজ করেছি

A highly motivated and experienced full-stack developer with a proven track record of developing and deploying web applications. Skilled in a range of programming languages and frameworks, as well as database technologies. Comfortable working in a fast-paced environment and able to adapt to new technologies quickly. A team player who is also able to work independently when required.
যখন DevOps engineer হিসেবে কাজ শুরু করি, তখন সবচেয়ে ঝামেলার জায়গা ছিল একাধিক সার্ভার ম্যানেজ করা। প্রতিটা সার্ভারের আলাদা IP, port, আর user credentials ছিল। প্রতিবার কানেক্ট করতে গিয়ে এইরকম লম্বা SSH কমান্ড লিখতে হতো:
ssh -p 2202 devopsadmin@192.168.20.45
অথবা কোনো ফাইল ডাউনলোড করতে:
scp -P 2202 devopsadmin@192.168.20.45:/var/log/app.log ~/Downloads/
কয়েকদিন পরেই বুঝলাম, এভাবে চললে সময় নষ্ট হবেই। নতুন DevOps engineer হিসেবে আমার কাজ এমনিতেই ফাস্ট—প্রতিদিন বারবার সার্ভার ডিটেইল মনে রাখা বা বড় কমান্ড টাইপ করা একদমই স্কেলেবল না।
সমস্যাটা কী ছিল
অনেক সার্ভার, সবার IP আর port আলাদা।
SSH/SCP কমান্ডগুলো বড়, ভুল করা সহজ।
credentials মনে রাখতে গিয়ে সময় নষ্ট।
দরকার ছিল এমন কিছু, যাতে যেকোনো সার্ভারে এক ক্লিকে কানেক্ট করা যায়।
সমাধান: Bash-এ Aliases আর Functions
ব্রেকথ্রুটা আসে যখন আমি আমার ~/.bashrc ফাইল কাস্টমাইজ করি। Bash-এ তুমি alias (মানে শর্টকাট কমান্ড) আর function (ছোট স্ক্রিপ্ট) বানাতে পারো।
আমি যা করেছিলাম:
১. সার্ভার ভ্যারিয়েবল ডিফাইন করো
~/.bashrc-এর শুরুতে এইভাবে ভ্যারিয়েবল রাখো:
# Server configs
export appserver_user="devopsadmin"
export appserver_host="192.168.20.45"
export appserver_port="2202"
export dbserver_user="devopsadmin"
export dbserver_host="192.168.20.50"
export dbserver_port="22"
এভাবে, কোনো ডিটেইল বদলাতে হলে শুধু এক জায়গায় আপডেট করলেই হবে।
২. SSH-এর জন্য Alias বানাও
লম্বা কমান্ড না লিখে, শর্টকাট বানিয়ে নাও:
# Aliases
alias appserver="ssh -p $appserver_port $appserver_user@$appserver_host"
alias dbserver="ssh -p $dbserver_port $dbserver_user@$dbserver_host"
এখন শুধু লিখো:
appserver
আর সরাসরি ঠিক সার্ভারে ঢুকে যাবে।
৩. ফাইল ট্রান্সফারের জন্য Function
ফাইল ডাউনলোড এখন এক লাইনে:
# Download from app server
download-app() {
scp -P "$appserver_port" "$appserver_user@$appserver_host:$1" ~/Downloads/
}
# Upload to app server
upload-app() {
scp -P "$appserver_port" "$1" "$appserver_user@$appserver_host:$2"
}
ব্যবহার:
download-app /var/log/app.log
upload-app ./config.yaml /etc/myapp/config.yaml
৪. ডিপ্লয়মেন্ট অটোমেট করো
কিছু সার্ভারে ডিপ্লয় করতে git branch চেক আর স্ক্রিপ্ট রান করতে হতো। এটাও ফাংশনে নিয়ে আসো:
deploy-app() {
ssh -p $appserver_port $appserver_user@$appserver_host \
"cd /opt/myapp && git branch && ./deploy.sh"
}
এখন ডিপ্লয় করতে শুধু:
deploy-app
ফলাফল
এই সেটআপের পর:
আর কোনো IP, port, username মুখস্থ রাখতে হয় না।
SSH আর ফাইল ট্রান্সফার এক শব্দেই হয়।
ডিপ্লয়মেন্ট স্ক্রিপ্টেড, রিপিটেবল।
কোনো সার্ভারের IP বদলালে, শুধু
.bashrc-এ এক লাইন এডিট করলেই হয়।
আগে যেটা করতে ২০–৩০ সেকেন্ড লাগত, এখন লাগে ২ সেকেন্ড। দিনে অনেকবার লগইন বা ফাইল ট্রান্সফার করতে হয়—এই সেভটাই বিশাল।
বোনাস: Passwordless SSH (Key দিয়ে)
প্রতিবার পাসওয়ার্ড টাইপ করাও বিরক্তিকর ছিল, তাই SSH key সেটআপ করেছিলাম:
ssh-keygen -t ed25519 -C "me@company.com"
ssh-copy-id -p 2202 devopsadmin@192.168.20.45
এখন আর পাসওয়ার্ড লাগে না। Alias-এর সাথে মিলিয়ে, আমার workflow এখন অনেক ফাস্ট।
# Aliases
alias ascii="man ascii | head -43 | tail -16"
alias ls='ls --color=auto'
alias ll='ls -la'
alias zconfig='nano ~/.zshrc' # Or vim, if you prefer
alias zconfigcode='code -w ~/.zshrc && source ~/.zshrc'
alias myip="hostname -I | awk '{print \$1}'"
# Remote SSH access
alias moon="ssh \$moonusername@\$moonhost"
alias mars="ssh -i \$marspem \$marsusername@\$marshost"
alias simec-tutor="ssh -p 8098 devopsadmin@103.84.36.246"
# Functions
download-mars() {
# Downloads file/folder from Mars server to Downloads
scp -r -i "$marspem" "$marsusername@$marshost:$1" ~/Downloads/
}
download-simec-tutor() {
# Downloads file/folder from Simec Tutor server to Downloads
scp -P 8098 devopsadmin@103.84.36.246:"$1" ~/Downloads/
}
# Remote server config variables
export moonusername="your_moon_user"
export moonhost="your.moon.host"
export marsusername="your_mars_user"
export marshost="your.mars.host"
export marspem="$HOME/.ssh/mars.pem"
# Simec Tutor DevOps Server
export devopsuser="devopsadmin"
export devopshost="103.84.36.246"
export devopsport="8098"
export devopspem="$HOME/.ssh/simec-tutor.pem" # Update with your private key for this server
# Additional Helpful Aliases (optional)
alias ll='ls -la --color=auto' # More readable file listing
alias gst='git status' # Shorten git status command
alias gco='git checkout' # Shorten git checkout command
# Customize prompt (optional)
export PS1="[\u@\h \W]\$ " # Display user@host directory in prompt



