Bash và Cloud CLI – Quản Lý Cloud trong DevOps

Trong DevOps, cloud là nền tảng chính để chạy ứng dụng, và việc quản lý nó thủ công qua giao diện web là không khả thi khi quy mô lớn. Bash và Cloud CLI trong DevOps kết hợp Bash với AWS CLI Bash (hoặc CLI của cloud khác) để quản lý cloud Bashtự động hóa cloud Bash một cách hiệu quả. Trong bài thứ mười tám của series Bash Script Chuyên Sâu cho DevOps, tôi sẽ dẫn bạn qua cách dùng Bash với AWS CLI, kèm thực hành thực tế. Đây là kinh nghiệm tôi áp dụng khi quản lý cụm EC2, không chỉ là lý thuyết đâu nhé!

Tại Sao Bash và Cloud CLI?

Cloud CLI trong DevOps

Cloud CLI (như AWS CLI, GCP CLI, Azure CLI) cho phép:

Ví dụ: Script Bash dùng AWS CLI để kiểm tra EC2 đang chạy, thay vì vào AWS Console.

Lợi Ích trong DevOps

Thực tế: Tôi từng dùng Bash và AWS CLI để restart 10 instance cùng lúc, tiết kiệm 30 phút so với làm thủ công.

Công Cụ Bash với Cloud CLI

AWS CLI Cơ Bản

  1. Cài đặt:

    curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
    unzip awscliv2.zip
    sudo ./aws/install
  2. Cấu hình:

    aws configure
    • Nhập Access Key, Secret Key, Region.
  3. Ví dụ lệnh:

    • Liệt kê instance:
      aws ec2 describe-instances
    • Khởi động instance:
      aws ec2 start-instances --instance-ids i-1234567890abcdef0

Kết Hợp với Bash

Thực Hành: Script Kiểm Tra Instance

Script Quản Lý EC2

Tạo cloud_manager.sh:

#!/bin/bash

set -e
trap 'echo "Lỗi tại dòng $LINENO: $BASH_COMMAND" >&2; exit 1' ERR

# Biến
LOG_FILE="/var/log/cloud_manager.log"
TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")
INSTANCE_IDS=("i-1234567890abcdef0" "i-0987654321fedcba0")  # Thay bằng ID thật
SLACK_WEBHOOK="https://hooks.slack.com/services/xxx/yyy/zzz"  # Thay bằng webhook thật

# Hàm ghi log
log() {
    echo "[$TIMESTAMP] $1" >> "$LOG_FILE" 2>/dev/null || {
        echo "Không thể ghi log" >&2
        exit 1
    }
}

# Hàm gửi alert Slack
send_alert() {
    curl -s -X POST -H 'Content-type: application/json' \
        --data "{\"text\":\"$1\"}" "$SLACK_WEBHOOK" >/dev/null 2>&1 || {
        log "Lỗi gửi alert Slack"
    }
}

# Hàm kiểm tra instance
check_instance() {
    local INSTANCE=$1
    local STATUS=$(aws ec2 describe-instances --instance-ids "$INSTANCE" | jq -r '.Reservations[].Instances[].State.Name' 2>/dev/null)
    if [ -z "$STATUS" ]; then
        log "Lỗi: Không lấy được trạng thái $INSTANCE"
        send_alert "Instance $INSTANCE không phản hồi!"
        return 1
    fi
    if [ "$STATUS" != "running" ]; then
        log "Cảnh báo: $INSTANCE đang $STATUS"
        echo "Khởi động $INSTANCE..."
        aws ec2 start-instances --instance-ids "$INSTANCE" >/dev/null 2>&1
        log "Đã yêu cầu khởi động $INSTANCE"
        send_alert "Instance $INSTANCE ($STATUS) đang được khởi động"
    else
        log "Instance $INSTANCE đang chạy"
    fi
}

# Lặp qua instance
for INSTANCE in "${INSTANCE_IDS[@]}"
do
    check_instance "$INSTANCE"
done

echo "Kiểm tra cloud hoàn tất, xem log tại $LOG_FILE"

Chuẩn Bị và Chạy

  1. Cài đặt:

    • Cài AWS CLI và jq:
      sudo apt install jq
      aws configure
    • Thay INSTANCE_IDS bằng ID thật từ AWS.
  2. Chạy script:

    chmod +x cloud_manager.sh
    ./cloud_manager.sh
    • Kết quả mẫu:
      Kiểm tra cloud hoàn tất, xem log tại /var/log/cloud_manager.log
    • Log:
      [2025-03-13 10:00:00] Instance i-1234567890abcdef0 đang chạy
      [2025-03-13 10:00:00] Cảnh báo: i-0987654321fedcba0 đang stopped
      [2025-03-13 10:00:00] Đã yêu cầu khởi động i-0987654321fedcba0

Giải thích:

DevOps: Script này giám sát EC2, tự động can thiệp, có thể chạy qua cron.

Debug Cloud Script

Thực tế: Tôi từng quên kiểm tra lỗi AWS CLI, script fail im lặng – thêm 2>/dev/null và điều kiện khắc phục.

Ứng Dụng trong DevOps

Tự Động Hóa Cloud

Pipeline CI/CD

Case study: Một team dùng Bash và AWS CLI tự động scale EC2 khi CPU cao, giảm 40% chi phí – không cần Lambda.

Best Practice

Kết Luận

Bash và Cloud CLI trong DevOps với AWS CLI Bash là cách mạnh mẽ để quản lý cloud Bashtự động hóa cloud Bash. Thực hành với cloud_manager.sh cho thấy bạn có thể giám sát và can thiệp cloud dễ dàng – kỹ năng quan trọng trong DevOps. Bài tiếp theo, chúng ta sẽ khám phá Bash và Security – cách bảo mật script như pro.

Điều hướng chuỗi bài viết<< Bài 17. Bash và API trong DevOps: Gọi và Xử Lý API Hiệu Quả
>> Bài 19. Bash và Security trong DevOps: Bảo Mật Script Hiệu Quả
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