Giaosucan's blog - Chia sẻ kiến thức theo cách bá đạo

Ticker

20/recent/ticker-posts

DevOps - Giải ngố Terraform part 1

Team DevOps nọ có một anh kiến trúc sư Cloud, bằng cấp đầy mình, từ AWS Professional đên GCE Certificate. Anh chuyên phụ trách build các infra để deploy application. Tóm lại anh là linh hồn của cả team, thiếu anh thì team chắc chắn xong phim.
Nhân dịp vợ đẻ, anh phải off cả tuần để ờ nhà giặt tã. Trong khi khách hàng liên tục request phải build một infra trên AWS, có khả năng autoscaling, hoạt động trong 1 VPC. Cả team nhốn nháo hẳn, nguyên nhân trước đây. Anh kiến trúc sư toàn build infra bằng cơm (console, command line), nay anh nghỉ rồi team không có chú nào biết know-how để làm, điện thoại cũng ko liên lạc được

Anh PM sốt ruột quá đành gọi tổng đài 1080 để nhờ tư vấn. Em tổng đài giọng oanh vàng thỏ thẻ, nói ngọt như mía lùi.
DevOps - Giải ngố terraform
Anh PM nghe được keyword mừng quá vội Google khẩn cấp. Thế rồi một chân trời kiến thức mở ra.

Terraform là gì

Đây là một opensource được phát triển bới HashiCorp. Với Terraform kĩ sư DevOps có thể xây dựng, thay đổi và quản lý cơ sở hạ tầng (Infra) tự động. Thay vì chạy bằng cơm như thông thường, bạn chỉ cẩn run script Terraform, infra sẽ được provision automatically.
DevOps - Giải ngố Terraform

Terraform bá đạo đến mức nào

Terraform là một tool cài đặt trên máy tinh của bạn, hoặc trên server. Bạn có thể viết kịch bản provision infra sau đó dùng Terraform để để ra lệnh cho máy chủ trên đám mây thực hiện đúng kịch bản do bạn viết.
DevOps - Giải ngố Terraform
Ví dụ simple thế này, khách hàng yêu cầu bạn provision 1 infra trên AWS như sau
Image result for aws scaling group instance
Thay vì vào console, click, enter hoặc vô terminal gõ command sml thì chỉ cần viết 1 script bằng terraform, mô tả các step thực hiện. Sau đó run terraform apply là AWS tự provision infra như trên cho bạn. Cho nên ở trường hợp anh kiến trúc sư trên nên vợ đẻ, off anh chỉ việc đưa script đó cho 1 thanh niên trong team run là OK.
Bạn chỉ cần cung cấp cloud credential cho terraform, mọi thứ còn lại terraform sẽ thực hiện giúp bạn. Cái này là IaC (Infrastructure as Code)
Một món bá đạo nữa, là bạn có thể xài terraform với nhiều cloud provider khác nhau như AWS, GCE, Azure…
Danh sách dài provider dài như vạn lý trường thành

Cách terraform làm việc như thế nào



https://www.datocms-assets.com/2885/1552683791-enterprisevertical-2x.png?fit=max&fm=png&q=80
Giả sử anh DevOps cần provision AWS infra, anh sẽ tạo một workspace (production, test, dev). Đại loại là anh ngồi viết code script bằng ngôn ngữ Configuration Language, ngôn ngữ dùng để mô tả infra trên terraform.
Ví dụ dưới, bạn chỉ định terraform provision 1 EC2 instance loại t2.micro trên AWS
resource "aws_instance" "web" {
 ami           = "${data.aws_ami.ubuntu.id}"
 instance_type = "t2.micro"

 tags = {
   Name = "HelloWorld"
 }
}


Sau đó chạy command
terraform init 🡪 Cài đặt plugin aws..
teraform plan 🡪 Terraform kiểm tra security, credential, show user những gì sẽ được build trên aws
terraform apply 🡪 Thực hiện provisioning


Terraform vs Cloud formation

So sánh giữa terraform với cloud formation giống như so sánh Ngọc Trinh với Thủy Tóp. Một em da trắng, tóc đen với em mông to, ngực khủng. Vì mỗi thứ có cái hay, dở riêng
Cloud formation chuyên để provision infra trên AWS, full support AWS, cung cấp hẳn 1 tool designer visualize infra
Terraform thì provision cho nhiều cloud provider, không chỉ AWS
Cloud formation hỗ trợ chức năng rollback, tức là khi build infra nếu gặp lỗi, cloudformation sẽ rollback lại, xóa hết những gì đã tạo
Terraform không rollback, khi build infra nếu có lỗi, terraform sẽ giữ lại những infra nào đã tạo thành công. Sau khi sửa lỗi, terraform sẽ provision nốt những infra còn lại.
Tóm lại còn rất nhiều sự khác nhau, khuôn khổ bài viết không thể mô tả hết được
Bài tiếp theo sẽ đi sâu hơn vào thực hành với Terraform

Đăng nhận xét

1 Nhận xét