Bài 1. Cơ Bản Bash Script trong DevOps

Bài 1: Cơ Bản Bash Script – Hiểu và Viết Script Đầu Tiên trong DevOps

Nếu bạn mới bước chân vào DevOps hoặc đã quen với việc gõ lệnh trên terminal, Bash chắc chắn là thứ bạn sẽ đụng đến hàng ngày. Từ kiểm tra dung lượng disk, chạy lệnh lặp lại, đến tự động hóa task trong pipeline – Bash là “con dao Thụy Sĩ” trong túi đồ nghề của bạn. Trong bài đầu tiên của series Bash Script Chuyên Sâu cho DevOps, tôi sẽ dẫn bạn qua những bước cơ bản nhất: Bash là gì, cách dùng biến Bash, lệnh cơ bản Bash, và thực hành viết script đầu tiên. Đây là những gì tôi học được từ thực tế, không phải lý thuyết suông đâu nhé!

Bash Là Gì?

Bash: Shell và Hơn Thế Nữa

Bash (Bourne Again Shell) là một shell phổ biến trên Linux/Unix, vừa là nơi bạn gõ lệnh, vừa là ngôn ngữ script để tự động hóa.

  • Shell: Giao diện giữa bạn và hệ điều hành (VD: ls, cd, rm).
  • Script: Tập hợp lệnh trong file để chạy tự động, tiết kiệm thời gian.

Ví dụ: Thay vì gõ df -h mỗi lần kiểm tra disk, bạn viết script để nó tự in kết quả – đơn giản nhưng hiệu quả.

Tại Sao Bash Quan Trọng trong DevOps?

  • Tự động hóa: Từ việc nhỏ như kiểm tra log đến lớn như deploy ứng dụng.
  • Nhẹ và nhanh: Không cần ngôn ngữ phức tạp như Python cho task cơ bản.
  • Tích hợp: Hầu hết tool DevOps (Docker, Git, CI/CD) đều hỗ trợ Bash.

Thực tế: Tôi từng dùng Bash để kiểm tra CPU server mỗi 5 phút, phát hiện vấn đề sớm hơn cả monitoring tool – chỉ mất 10 dòng code.

Bắt Đầu với Bash Script

Viết Script Đầu Tiên

Hãy thử script đơn giản nhất – in lời chào:

  1. Tạo file hello.sh:
    #!/bin/bash
    echo "Hello DevOps!"
  2. Chạy script:
    chmod +x hello.sh
    ./hello.sh
    • Kết quả: “Hello DevOps!”.
  • #!/bin/bash: Shebang, bảo Bash chạy script này.
  • chmod +x: Cấp quyền thực thi.
  • ./hello.sh: Chạy file.

DevOps: Script này là bước đầu để bạn tự động hóa – thay vì gõ lệnh lặp đi lặp lại.

Biến trong Bash (Variables)

Biến là cách lưu giá trị để dùng lại – cực kỳ hữu ích.

  • Khai báo và in:

    NAME="DevOps"
    echo "Xin chào, $NAME!"
    • Kết quả: “Xin chào, DevOps!”.
  • Biến môi trường:

    echo "User hiện tại: $USER"
    echo "Thư mục home: $HOME"
  • Gán lệnh vào biến:

    DATE=$(date)
    echo "Hôm nay là: $DATE"

Tips: Không có khoảng trắng quanh = khi gán biến (VD: NAME="DevOps", không phải NAME = "DevOps").

DevOps: Biến giúp lưu config như IP server, đường dẫn file – bạn sẽ thấy sức mạnh khi tích hợp CI/CD sau này.

Lệnh Cơ Bản Bash

  1. Echo: In ra màn hình.

    echo "Dung lượng disk: $(df -h / | tail -1)"
    • $(...): Command substitution, chạy lệnh và lấy output.
  2. Read: Lấy input từ user.

    read -p "Nhập tên của bạn: " NAME
    echo "Chào $NAME, welcome to DevOps!"
  3. Cat, Ls, Pwd: Lệnh Linux cơ bản.

    cat /etc/hostname  # Xem hostname
    pwd                # In thư mục hiện tại

Thực tế: Tôi thường dùng echo kết hợp $(date) để thêm timestamp vào log – đơn giản mà hiệu quả.

Thực Hành: Script Kiểm Tra Hệ Thống

Script Đầu Tiên Thực Tế

Tạo check_system.sh để kiểm tra thông tin hệ thống:

#!/bin/bash

# Biến lưu thông tin
HOST=$(hostname)
DISK=$(df -h / | tail -1 | awk '{print $5}')  # Lấy % disk usage
CPU=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}')  # Lấy % CPU

# In kết quả
echo "Hostname: $HOST"
echo "Disk usage: $DISK"
echo "CPU usage: $CPU%"

Chạy và Test

chmod +x check_system.sh
./check_system.sh
  • Kết quả mẫu:
    Hostname: my-server
    Disk usage: 42%
    CPU usage: 15.3%

Giải thích:

  • hostname: Lấy tên máy.
  • df -h | tail -1: Lấy dòng cuối (root filesystem).
  • awk '{print $5}': Trích cột % usage.
  • top -bn1: Chạy 1 lần để lấy CPU.

DevOps: Script này là khởi đầu để bạn tự động kiểm tra server – thêm cron (bài 8) để chạy định kỳ.

Debug Cơ Bản

  • Nếu lỗi:

    bash -x check_system.sh
    • -x: In từng lệnh khi chạy, giúp tìm lỗi.
  • Kiểm tra cú pháp:

    bash -n check_system.sh
    • -n: Không chạy, chỉ check lỗi cú pháp.

Thực tế: Tôi từng quên $ trước biến, -x giúp tôi phát hiện ngay trong 10 giây.

Ứng Dụng trong DevOps

Tự Động Hóa Nhỏ

  • Script kiểm tra disk:
    DISK=$(df -h / | tail -1 | awk '{print $5}' | cut -d'%' -f1)
    echo "Disk usage: $DISK%"

Chuẩn Bị cho Pipeline

  • Lưu output vào file:
    ./check_system.sh > system_status.txt
  • Dùng trong CI/CD để báo cáo trạng thái server trước deploy.

Case study: Một team dùng script tương tự để kiểm tra disk trước backup, tránh lỗi do đầy dung lượng.

Best Practice

  • Luôn bắt đầu bằng #!/bin/bash.
  • Dùng biến thay giá trị cứng (VD: $HOST thay vì “my-server”).
  • Comment rõ ràng để team đọc hiểu.

Kết Luận

Cơ Bản Bash Script trong DevOps là nền tảng để bạn bắt đầu tự động hóa với biến Bash, lệnh cơ bản Bash, và script đơn giản. Thực hành với check_system.sh cho thấy Bash dễ học mà mạnh mẽ – chỉ cần vài dòng đã giải quyết được việc lặp lại. Bài tiếp theo, chúng ta sẽ khám phá Điều Kiện trong Bash – cách thêm logic để script thông minh hơn. Bạn đã sẵn sàng chưa?

Điều hướng chuỗi bài viết
>> Bài 2. Điều Kiện trong Bash DevOps: Xử Lý Logic Cơ Bản
Chia sẻ bài viết:
Theo dõi
Thông báo của
0 Góp ý
Được bỏ phiếu nhiều nhất
Mới nhất Cũ nhất
Phản hồi nội tuyến
Xem tất cả bình luận