October 17, 2021

gcloud command – Tập tành tự động hoá Google Cloud Platform

Google cung cấp cấp cho người dùng một giao diện quản trị (web-based console) trên Google Cloud Platform (GCP) được đánh giá là đầy tính linh hoạt, tông màu nhẹ nhàng, bố cục rõ ràng và dễ tiếp cận tất cả người dùng. 

Giao diện của Google Cloud Platform cung cấp tới người dùng

Tại console.cloud.google.com, người dùng có thể thao tác với trên 200 products từ tất cả các mảng dịch vụ Google Cloud cung cấp.

Bên cạnh đó, Google còn cung cấp thêm một công cụ command line khác giúp người quản trị tất cả khía cạnh hệ thống GCP từ một giao diện terminal. Đó chính là gcloud command

Tools and libraries for interacting with Google Cloud products and services.

Các bạn có thể cài gcloud trong bộ Cloud SDK theo hướng dẫn tại https://cloud.google.com/sdk/docs/install

Với gcloud command, bạn có thể xây dựng các kiến trúc tự động hoá công việc hằng ngày trên Google Cloud Platform như triển khai Compute Engine, App Engine, phân tích logs phát sinh từ Stackdriver (analyzing log data), cập nhật cấu hình Compute Engine, … rất nhiều thứ có thể làm với gcloud command.

Hãy thử bắt đầu với vài thứ cơ bản nhé.

“Cho rất nhiều nhưng không cần nhận tất cả” – gcloud command option –filter, –format

1. Lệnh gcloud

gcloud command có những options giúp người dùng lấy được rất nhiều dạng thông tin như json, yaml, csv, flattend, text,… thông qua options –format.

gcloud compute instances list --format=json

hoặc chỉ hiển thị ra dữ liệu mình cần với options –filter (ở đây chỉ filter với các compute engine có status=terminated).

gcloud compute instances list --filter="status=terminated"

Với việc list ra được các instance đang trong tình trạng Terminated thì người quản trị hệ thống có thể thực hiện dòng lặp for để delete các VMs đó đi.

Tuy nhiên vấn đề nảy sinh là lệnh gcloud compute instances cần người dùng cung cấp zone của instance muốn xoá. Ở đây chúng ta sẽ tiến hành xác định zone bằng gcloud command với –filter

gcloud compute instances list --filter="status=terminated" --format=”value(zone)”

Sau khi đã có instances name và zones thì tiến hành xoá VMs. Biến $zone và $instance có được với 2 command trên.

Lưu ý ở đây xuất hiện –quiet để giúp người dùng không cần phải chọn Yes trong quá trình xoá instance với gcloud.

gcloud compute instances delete $instance --zone=$zone --quiet

2. Tự động hóa trong một file bash

Hãy thử gom tất cả các lệnh trên vào một file bash script để có thể tạo một công cụ nhỏ tự động xoá Compute Engine

#!/bin/bash
for instance in $(gcloud compute instances list --filter="status=terminated" --format="value(name)" --quiet)
do
  zone=$(gcloud compute instances list --filter="name=$instance" --format="value(zone)" --quiet)
  status=$(gcloud compute instances describe $instance --zone=$zone --format="value(status)" --quiet)
  created_on=$(gcloud compute instances describe $instance --zone=$zone --format="value(creationTimestamp.date('%Y-%m-%d'))" --quiet)
  echo "Instance name: $instance"
  echo "Created on $created_on"
  gcloud compute instances delete $instance --zone=$zone --quiet
done

Đó chỉ là một ý tưởng nhỏ và chuyển hoá thành bashscript khi tận dụng các options –filter, –format và –quiet của command gcloud.

Trong những bài tiếp theo, mình sẽ chia sẻ thêm về cách mình vận hành trên Cloud với gcloud command để đạt được hiệu quả cao hơn trong công việc Cloud Engineer.

Liên hệ ngay với chúng tôi, Cloud Ace Việt Nam để được tư vấn về G Suite, GCP.

Leave a Reply

Your email address will not be published. Required fields are marked *