tampm
Búa Gỗ
Terraform là gì ?
Terraform là một công cụ giúp tự động hóa triển khai các kịch bản của bạn liên kết với Google (GCP), Amazon (AWS), Microsoft (Azure)…
Đại khái là giúp bạn nhúng các code của mình để liên kết với cloud và chạy nó, hôm nay mình sẽ demo thử 1 kịch bản giúp bạn hiểu rõ về vấn đề này. thì đầu tiên để nhúng đc code của bạn thì bạn cần phải hiểu các options của 1 cloud.
Các thành phần chính :
Chuẩn bị
Disable selinux : xem hướng dẫn tại đây
Tắt firewall : xem hướng dẫn tại đây
Update các bản mới đầy đủ.
Cài đặt gói package cần thiết
Cài Đặt Terraform
ok đầu tiên thì ta kiểm tra xem biến môi trường của chúng ta ntn nhé !
Biến môi trường là các thư mục mặc định mà mỗi lần chạy các lệnh tương ứng thì shell sẽ tìm đến thư mục và gọi nó ra. thế thôi
sẽ nhận được kết quả dạng như này.
sau khi download về thì giải nén nó ra thư mục /usr/bin/
Ok vậy là đc rồi
Test bằng cách check version của terraform bằng lệnh
Dựng kịch bản
Theo mình thì viết kịch bản này mặc dùng dùng code của Hashicorp nhưng mình thấy nó tương tự như JSON vậy. dạng khai báo các giá trị để có thể apply nó hoặc destroy nó !
Terraform cung cấp công cụ đó nên bạn hoàn toàn yên tâm nhé !
Mình củng có chuẩn bị sẵn 1 kịch bản đơn giản giúp bạn launch 1 instance
OK để mình giải thích chút nhé ! đại khái là access key và secret key bạn sẽ được cấp cho mỗi tài khoản để có thể thông qua đó mà nhúng code của bạn tạo ra nhiều instance
như kịch bản ở trên giúp bạn tạo ra 1 instance mới với tên là terraform-instance
Access key và secret key thì có thể tìm ở đây
Để đọc thêm về nó thì tại đây
OK để chạy kịch bản thì đầu tiên ta gần chạy init để tạo môi trường cho terraform sau đó là dùng lệnh plan, nên nhớ để chạy cho kịch bản nào thì pwd phải thực thi trên đúng file chứa kịch bản đó.
Ở lệnh plan sẽ show cho ta thấy đc kế hoạch thực thi lệnh bao gồm những options nào ta đã khai báo trong file *.tf
sau đó thì ta apply để tiến hành chạy nó
Kết quả nhận được là 1 máy ảo đc tạo ra và khởi động.
Kết luận
Vậy terraform giúp bạn giải quyết việc gì. dĩ nhiên để triển khai 1 hệ thống phức tạp. không thể nào ta lại thao tác với GUI đc. nên mình dựng ra hàng loạt kịch bản ngoài ra mình có thể nhúng bash shell trực tiếp bằng cách chèn thêm options user-data vào các trường . Vậy hàng loạt vấn đề đã được giải quyết phải không ? cụ thể là khi có 1 chiến dịch nào đó mà mình cần triển khai trên diện rộng. việc đơn giản hơn là bạn cho apply chạy là xong !
và theo mình cloud mặc dù chi phí đắt đỏ thật. nhưng nó quá tiện đi ! chi phí để bảo dưỡng hệ thống vật lý hoặc đại khái là giảm thiểu tính ảnh hưởng bởi con người đi. thì nên dùng cloud !
và nhớ đừng có để nhầm access key với secret key cho ai thấy nhé ! rất phiền đấy .
Terraform là một công cụ giúp tự động hóa triển khai các kịch bản của bạn liên kết với Google (GCP), Amazon (AWS), Microsoft (Azure)…
Đại khái là giúp bạn nhúng các code của mình để liên kết với cloud và chạy nó, hôm nay mình sẽ demo thử 1 kịch bản giúp bạn hiểu rõ về vấn đề này. thì đầu tiên để nhúng đc code của bạn thì bạn cần phải hiểu các options của 1 cloud.
Các thành phần chính :
- Mạng ( network )
- Tính toán ( calculator )
- Lưu trữ ( storage )
- Tên miền, hộp thư mail ( DNS )
- Giám sát
Chuẩn bị
Disable selinux : xem hướng dẫn tại đây
Tắt firewall : xem hướng dẫn tại đây
Update các bản mới đầy đủ.
Mã:
yum update & upgrade -y
Cài đặt gói package cần thiết
Mã:
yum install nano unzip -y
Cài Đặt Terraform
ok đầu tiên thì ta kiểm tra xem biến môi trường của chúng ta ntn nhé !
Biến môi trường là các thư mục mặc định mà mỗi lần chạy các lệnh tương ứng thì shell sẽ tìm đến thư mục và gọi nó ra. thế thôi
Mã:
echo $PATH
sẽ nhận được kết quả dạng như này.
Mã:
wget https://releases.hashicorp.com/terraform/0.11.7/terraform_0.11.7_linux_amd64.zip
sau khi download về thì giải nén nó ra thư mục /usr/bin/
Mã:
unzip terraform_0.11.7_linux_amd64.zip -d /usr/bin/
Ok vậy là đc rồi
Test bằng cách check version của terraform bằng lệnh
Mã:
terraform -v
Dựng kịch bản
Theo mình thì viết kịch bản này mặc dùng dùng code của Hashicorp nhưng mình thấy nó tương tự như JSON vậy. dạng khai báo các giá trị để có thể apply nó hoặc destroy nó !
Terraform cung cấp công cụ đó nên bạn hoàn toàn yên tâm nhé !
Mình củng có chuẩn bị sẵn 1 kịch bản đơn giản giúp bạn launch 1 instance
Mã:
provider "aws" {
access_key = "XXXXXXXXXXXXXXXX"
secret_key = "XXXXXXXXXXXXXXXXXXXXXX"
region = "ap-southeast-1"
}
resource "aws_instance" "example" {
ami = "ami-a59b49c6"
instance_type = "t2.micro"
key_name = "mykey"
security_groups= ["sample-sg"]
tags {
Name = "terraform-instance"
}
}
OK để mình giải thích chút nhé ! đại khái là access key và secret key bạn sẽ được cấp cho mỗi tài khoản để có thể thông qua đó mà nhúng code của bạn tạo ra nhiều instance
như kịch bản ở trên giúp bạn tạo ra 1 instance mới với tên là terraform-instance
Access key và secret key thì có thể tìm ở đây
Để đọc thêm về nó thì tại đây
OK để chạy kịch bản thì đầu tiên ta gần chạy init để tạo môi trường cho terraform sau đó là dùng lệnh plan, nên nhớ để chạy cho kịch bản nào thì pwd phải thực thi trên đúng file chứa kịch bản đó.
Ở lệnh plan sẽ show cho ta thấy đc kế hoạch thực thi lệnh bao gồm những options nào ta đã khai báo trong file *.tf
sau đó thì ta apply để tiến hành chạy nó
Kết quả nhận được là 1 máy ảo đc tạo ra và khởi động.
Kết luận
Vậy terraform giúp bạn giải quyết việc gì. dĩ nhiên để triển khai 1 hệ thống phức tạp. không thể nào ta lại thao tác với GUI đc. nên mình dựng ra hàng loạt kịch bản ngoài ra mình có thể nhúng bash shell trực tiếp bằng cách chèn thêm options user-data vào các trường . Vậy hàng loạt vấn đề đã được giải quyết phải không ? cụ thể là khi có 1 chiến dịch nào đó mà mình cần triển khai trên diện rộng. việc đơn giản hơn là bạn cho apply chạy là xong !
và theo mình cloud mặc dù chi phí đắt đỏ thật. nhưng nó quá tiện đi ! chi phí để bảo dưỡng hệ thống vật lý hoặc đại khái là giảm thiểu tính ảnh hưởng bởi con người đi. thì nên dùng cloud !
và nhớ đừng có để nhầm access key với secret key cho ai thấy nhé ! rất phiền đấy .