Hướng dẫn cài đặt Terraform và khởi chạy 1 kịch bản

tampm

Gà con
Upload content
#1
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 :
  • 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
Terraform được viết bằng ngôn ngữ Go, đc khởi xướng bởi Hashicorp.

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 keysecret key thì có thể tìm
Bạn phải đăng nhập để xem liên kết Log in or register now.


Để đọc thêm về nó thì
Bạn phải đăng nhập để xem liên kết Log in or register now.


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 .

 
Top