Keywords: How to create and use file tf of terraform bassic for aws
Thật ra trình mình cũng không phải cao siêu gì với terraform cả, nhưng bản thân mình đã làm qua nó và sử dụng nó một chút ít, đâm ra cũng hiểu nó chút thôi, vì vậy đã hiểu rồi thì phải lưu lại kẻo sau này cần thì chính bản thân mình lại quên đi mất những kiến thức này, dù biết rằng kiến thức con người là vô hạn, nhưng khổ cái những vấn đề mà ít được sử dụng lại dễ dàng quên đi mất, terraform này cũng vậy, mình rất ít khi sử dụng nó, bởi lẽ trong môi trường làm việc của mình lâu lâu mới sử dụng đến, còn lại thì rất ít, thành ra mới có bài viết ngày hôm nay, nên có vấn đề sai sót gì thì mong mọi người có thể nhẹ tay và nhận xét góp ý ở phía dưới cho mình cải thiện hơn nhé.
Trong bài viết ngày hôm nay mình sẻ sử dụng Terraform trải nghiệm quá trình build và auto trên AWS như thế nào, nhưng các bạn cần phải hiểu rằng thằng terraform này không chỉ hoạt động mõi AWS không đâu mà còn rất nhiều framework khác nữa, nhiều người họ cũng hay so sánh terraform với cloudformation (Một service của AWS) vậy thật ra 2 thằng này có gì đó giống và khác nhau ? bản chất thì thằng terraform và cloudformation hoàn toàn giống nhau và để so sánh nó thì cũng giống như đi so sánh 2 người đẹp Ngọc Trinh và Elly Trần vậy, rất khó mà nói ai hơn ai, nhưng có một vấn đề bạn cần phải hiểu là thằng terraform có thể chạy trên nhiều nền tảng còn cloudformation chỉ chạy trên mõi và riêng cho aws thôi, nên thành ra việc lựa chọn cloudformation chạy aws là hoàn toàn hợp lý bởi nó hỗ trợ cho chính người nhà của nó nhiều hơn mà, ok quay lại vấn đề chính, chúng ta sẻ cùng tìm hiểu 1 chút về terraform cho aws cơ bản nhé
Terraform có thể được cấu tạo thành 4 file cơ bản hoặc cũng có thể là các file nâng cao khác như là chia ra thành từng modules nhỏ để chạy (Ở bài viết này mình sẻ tạo và làm việc với 4 file cơ bản thôi với mình thì nhiêu đây là đủ triển khai terraform rồi, không cần gì nhiều thêm cả)
Như hình mình chụp cho các bạn thấy, mình sẻ sử dụng 4 file (main.tf, outputs.tf, terraform.tfvars, variables.tf) để tạo dựng một vpc cơ bản cho aws, đừng chú ý đển 2 file tfstate và backup vì đó chỉ là 2 file khi ta chạy 4 file trên nó tạo ra thôi, các bạn cũng đừng quên tải aws cli về để cài đặt nữa nha, thực hiện tải aws cli cho ubuntu tại đây
Sau khi các bạn cài đặt xong AWS CLI thì sẻ được như mình nhé
Ok mình sẻ giải thích sơ qua 4 file này cho các bạn biết luôn
- main.tf: đây là file chứa đựng các cốt lõi của thằng terraform, đã là main thì các bạn cũng hiểu nó là trung tâm điều khiển của tất cả các thằng còn lại
- outputs.tf: file này hỗ trợ export xuất ra ngoài những giá trị mà mình mong muốn, ví dụ khi bạn tạo xong thằng vpc bạn không biết id của nó là bao nhiêu, muốn biết thì phải lên aws mà xem, nhưng bạn có thể sử dụng thằng outputs này để export giá trị đó ra màn hình console mà không cần phải truy cập vào aws.
- terraform.tfvars: file chứa giá trị của biến, các giá trị của biến trong file này có thể public ra bên ngoài và sử dụng
- variables.tf: đúng như cái tên của nó, đây là file chứa biến của terraform nhưng những biến trong file này chỉ có thể sử dụng private của 1 modules mà thôi, hiện tại thư mục mình chứa 4 file này được gọi là root modules và nó chỉ có thể thực hiện trong modules này thôi (sau này nâng cao các bạn có thể tạo ra thêm vài modules nữa)
Như vậy mình đã giới thiệu sơ qua 4 file cho các bạn xem rồi, bây giờ mình sẻ để code của 4 file ở phía dưới, cho các bạn xem tham khảo nhé
Main.tf:
# Configure the AWS Provider provider "aws" { version = "~> 2.0" region = var.region shared_credentials_file = var.key } # Create a VPC resource "aws_vpc" "Network_2" { cidr_block = var.cidr_block tags = { Name = var.name } }
Outputs.tf:
output "instance_ip_addr" { value = aws_vpc.Network_2.id }Terraform.tfvars:
name = "Network_2" region = "us-east-1" key = "/root/.aws/credentials" cidr_block = "10.0.0.0/16"Variables.tf:
variable "name" {} variable "region" {} variable "key" {} variable "cidr_block" {}
Tới đây mình cũng không biết phải giải thích tiếp theo từng câu lệnh ra sao nữa, vì nó có hổ trợ toàn bộ trên trang chủ của terraform rồi, những đoạn code trên của mình chỉ giúp các bạn 1 phần nào đó để hiểu và biết cách thức hoạt động lẫn cấu trúc để chạy terraform thôi, sau này khi các bạn đã chuyên nghiệp và rành rồi thì có thể tạo ra các modules để chạy từng phần, từng phần ví dụ tạo S3 hoặc VPC và EC2 mõi cái nằm ở 1 modules khác nhau sau đó thằng main có nhiệm vụ kêu gọi từng cái modules đó, nói chung bài viết này của mình nói là hướng dẫn nhưng thật ra thì cũng chả hướng dẫn gì chủ yếu show code cho các bạn tham khảo để hiểu là chủ yếu, các bạn có thể tham khảo thêm tại trang chủ của terraform ở link phía dưới nhé.
Sau khi đã có 4 file đó rồi các bạn thực hiện chạy 4 lệnh sau:
terraform init terraform plan terraform apply terraform destroy
Còn nếu không muốn hỏi yes khi build thì cứ thêm lệnh "-auto-approve"
terraform apply -auto-approve terraform destroy -auto-approve
Ok giờ đây mình sẻ giải thích 4 câu lệnh trên cho các bạn hiểu nhé
- terraform init: đây là lệnh dùng để tìm xem code của chúng ta sử dụng những plugin gì hay là những thứ gì để nó download plugin đó về ví dụ nó chạy đoạn mã và thấy rằng có aws trong đó nó sẻ tải ngay plugin aws của terraform và cài đặt vào thư viện
- terraform plan: đây là lệnh để xem lại toàn bộ, đúng hơn là lệnh để check coi nó đã ok hay chưa, giống như lệnh F5 trong C# dùng Visual Studio vậy, khi các bạn muốn chạy thử phần mềm, nó sẻ show tổng thể ra cho chúng ta xem nếu không có lỗi gì thì các bạn thực hiện apply
- terraform apply: lệnh này thì chắc không có gì xa lạ với các bạn nữa, dùng để apply thực thi build code terraform thôi
- terraform destroy: nghe từ destroy thì chắc các bạn đã hiểu nhiệm vụ của nó là gì rồi đúng không nào, nó giúp chúng ta xóa bỏ phá hủy phần mà nó đã tạo, bằng cách check lại 2 file backup lúc đầu mình nói đó, khi bạn nhấn apply sẻ tạo ra 2 file đó và khi bạn nhấn destroy nó lại dựa vào 2 file đó để cho quay về vị trí ban đâu
Ok tới đây thì mình đã nói sơ qua tất cả cho các bạn hiểu rồi, còn lại thì trông cậy vào các bạn thôi, chúc may mắn hehe.
Nguồn: itblognote.com
0 Comments
Vài lời muốn nói:
* Không được nhận xét thô tục bởi mình biết các bạn là những người văn minh.
* Pass giải nén mặt định là itblognote hoặc itblognote.com nếu có Pass khác thì mình sẽ ghim trong bài viết.
* Click vào quảng cáo và chia sẻ bài viết để mình có thêm động lực viết bài nhé.