Automation Setup Service Provider với Terraform
terraform
3
Cloudwatch
2
AWS
28
chef
2
White

Hùng Phạm viết ngày 23/02/2020

Vậy Infrastructure là gì ? Infrastructure theo tiếng việt nghĩa là cơ sở hạ tầng, là nền tảng hoặc khuôn khổ hỗ trợ một hệ thống hoặc tổ chức. Trong giới công nghệ, cơ sở hạ tầng công nghệ thông tin bao gồm các tài nguyên vật lý và ảo hỗ trợ lưu lượng, lưu trữ, xử lý và phân tích dữ liệu.

Bởi vì hạ tầng mỗi ngày sẽ càng ngày to ra và việc setup sẽ trở nên khó khăn và phức tạp. Đó là lý do xuất hiện của khái niệm Infrastructure as Code

Infrastructure as Code là gì?

Infrastructure as Code là dùng nền tảng hoặc script dùng để tự động hoá quá trình cấu hình cơ sở hạ tầng thay vì phải setup thủ công.

Hiện nay việc setup cơ sở hạ tầng sẽ mất rất nhiều thời gian với nhiều quy trình thủ công liên quan đến nhau, nhưng với sự xuất hiện của những công cụ như Terraform, Chef, Ansible, Puppet, SaltStack, CloudFormation ... Nó khiến cho việc quản lý cũng như cung cấp những việc setup infrastructure trở nên đơn giản hơn.

Ví dụ như vậy cho các anh em dễ hiểu:

Giả sử mình có một website Wordpress và được deploy trên 2 con instance bằng Amazon EC2, ngoài ra mình có setup thêm một con Classic Load Blancer bên ngoài 2 con instance.

Để monitor instance mình cần phải setup CloudWatch, nhưng giả sử tương lai mình thêm một con instance nữa thì những thông số bắt buộc mình phải vô trong AWS cấu hình thủ công lại.

Để công việc dễ dàng hơn mình sẽ tìm một open source hoặc một platform nào đó để tự động hoá vấn đề này.

Đó lý do mình sẽ đề cập về Terraform, một open source giúp ích chúng ta trong công việc này.

alt text

Vậy Terraform là gì?

Sau khi đã hiểu được infrastructure là gì thì chúng ta sẽ đi sâu hơn một xíu để hiểu thêm về Terraform, một cái tên khá xa lạ cho các anh em chưa từng làm tới Devops.

Terraform là một công cụ phát triển, thay đổi và "versioning" hệ thống an toàn và hiệu quả.

Terraform là công cụ cơ sở hạ tầng bất biến đa đám mây được HashiCorp đầu tiên giới thiệu thế giới vào tháng 7 năm 2014 và được viết bằng Go. Một lý do quan trọng mà mọi người chọn Terraform là vì nó quản lý cơ sở hạ tầng của họ dưới code.

Bên cạnh đó Terraform có thể quản lý và hỗ trợ hầu hết các "service provider" đình đám hiện nay như:

Tại sao chọn Terraform?

Thật ra có rất nhiều những tool khác ngoài Terraform, nhưng vì mình chưa có dịp trải nghiệm qua những tool khác nên bài viết mang tính cá nhân một tí

Một phần nữa mình phải công nhận cộng đồng sử dụng Terraform khá nhiều bằng chứng là theo thống kê của IAC (một bên thứ 3 thông kê và so sánh giữa các thương hiệu) thì số lượng job cho Developer biết Terraform khá là nhiều cũng như số lượng thư viện khá là khủng.

Với một lý do nữa là theo mình thấy code Terraform đọc khá dễ hiểu. Document đầy đủ, mô tả rất chi tiết và đó là một điểm cộng lớn nếu các anh em bắt đầu đi tìm một công nghệ mới.

alt text

Demo Code Terraform

Dưới đây mình sẽ demo đoạn code nhỏ về Terraform và giải thích về cách hoạt động của nó:

module "metric_alarm" {
  source              = "terraform-aws-modules/cloudwatch/aws//modules/metric-alarm"
  version              = "~> 0.2.0"

  alarm_name          = "wordpress-instances-health-check"
  alarm_description   = "Number of healthy instances less than 2"
  comparison_operator = "LessThanThreshold"
  evaluation_periods  = "2"
  threshold           = "2"
  period              = "60"
  namespace           = "AWS/ELB"
  metric_name         = "HealthyHostCount"
  statistic           = "Minimum"
  actions_enabled     = "true"

  alarm_actions       = ["${var.cloudwatch_sns_topic}"]
  ok_actions          = ["${var.cloudwatch_sns_topic}"]

  dimensions = {
    LoadBalancerName = "wordpress-load-blancer"
  }
}

Ở đây mình auto setup một CloudWatch config để monitor instance trên EC2 nhằm một trong 2 con instance mình bị die thì nó sẽ báo về email cho mình.

Nhưng field bên trái cần phải follow theo syntax của Terraform còn giá trị bên phải sẽ tương đương với giá trị Service Provider các anh em dùng.

Ở đây mình dùng AWS nên mình cần phải dùng module Terraform của AWS còn về các giá trị thì các anh em chỉ cần lên AWS đọc document rồi set một giá trị mà mình muốn vào thôi.

Còn anh em nào không hiểu rõ thì có thể xem sơ qua các doc này nó ghi rất là rõ nhé:

https://www.terraform.io/docs/providers/aws/r/cloudwatch_metric_alarm.html

Kết Luận

Sau một hồi tìm hiểu infrastructure là gì hoặc Terraform là gì thì mình biết là các em cũng hơi rối một xíu. Tóm cái váy lại như sau để dễ hiểu hơn. Mặc định các Service Provider như Amazon Web Service, nó sẽ có rất là nhiều service trên đó. Khi mà cách anh em phải edit trên UI bằng tay như vậy sẽ rất là rối.

Khi mà hệ thống nó càng phình ra đồng nghĩa cấu hình sẽ tương đôi phức tạp và việc quản lý bằng tay là không thể.

Để đơn giản hoá vấn đề hơn ở đây chúng ta sẽ sử dụng tool hỗ trợ điển hình ở đây là Terraform. Hy vọng là bài viết mình không quá lang mang và sẽ giúp ích phần nào cho các anh em. Hẹn gặp lại vào một bài viết khác

Ngoài ra các anh em có thể xem bài viết gốc của mình ở đây:
https://hungphamdevweb.com/infrastructure-la-gi-chon-terraform-de-tu-dong-hoa-setup.html

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Hùng Phạm

19 bài viết.
17 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
8 2
CSS Sprites thật ra đã là một cái tên khá cũ rồi và mình viết bài viết này hy vọng nó sẽ hữu ích cho các anh em nào chưa bao giờ biết đến cái tên c...
Hùng Phạm viết hơn 1 năm trước
8 2
White
5 0
Trước khi bắt đầu viết tiếp phần 2, các anh em có thể xem lại Phần 1 của mình theo đường dẫn bên dưới: (Link) Hoặc là có thể xem bài viết full cả...
Hùng Phạm viết hơn 1 năm trước
5 0
White
5 4
Cũng như hôm bữa ( cách đây có 6 tháng trước chứ nhiêu :smile_cat: ) mình có kể là mình đang ở Mã để làm việc. Bài viết cũ còn đây mời cả nhà vô xe...
Hùng Phạm viết 1 năm trước
5 4
Bài viết liên quan
White
1 2
Transfer files từ local computer đến AWS EC2 dùng FileZilla Bài toán: Làm thế nào để copy files từ local computer đến AWS EC2? Cách làm: Có mấy ...
Minh-Trung Nguyễn viết hơn 1 năm trước
1 2
White
6 0
Sau khi nhận được chứng chỉ (Link) mình có lên kế hoạch ôn luyện cho kỳ thi thứ 2 là Developer Associate. Title hiện tại của mình là developer chứ...
Mầu Hà Quang viết 1 năm trước
6 0
White
2 0
Bài viết gốc có ở blog của mình: (Link) Trong bài viết này, mình muốn giới thiệu về module trong terraform, và cách sử dụng nó để deploy lên nhiều...
Chiến Kira viết hơn 1 năm trước
2 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
19 bài viết.
17 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!