Terraform là một công cụ mã nguồn mở được xây dựng bởi HashiCorp . Sử dụng Ngôn ngữ cấu hình HashiCorp (HCL), bạn có thể tự động triển khai cơ sở hạ tầng và cung cấp tài nguyên của nó.
Chỉ với một vài tệp cấu hình, bạn có thể xây dựng, quản lý, cập nhật và xóa cơ sở hạ tầng của mình bằng Terraform. Kỹ thuật này, được Terraform hỗ trợ, được gọi là Cơ sở hạ tầng dưới dạng Mã (IaC).
Hướng dẫn này giải thích cách sử dụng Terraform và HCL để xác định và triển khai môi trường đa đám mây trải dài trên Linode và một nhà cung cấp khác.
Cơ sở hạ tầng dưới dạng mã (IaC) là gì?
Mã khai báo trạng thái cuối cùng của cơ sở hạ tầng mong muốn của bạn được gọi là Cơ sở hạ tầng dưới dạng Mã .
Ưu điểm của IaC:
- Độ tin cậy: Tài nguyên của bạn được cấu hình chính xác như đã khai báo.
- Tính linh hoạt: IaC giảm bớt công việc thủ công và loại bỏ lỗi cấu hình cũng như sự không nhất quán.
- Tăng tốc độ và hiệu quả: IaC cho phép bạn thiết lập toàn bộ kiến trúc cơ sở hạ tầng chỉ bằng một vài tệp cấu hình — bạn có thể khởi chạy các dịch vụ đám mây và hệ thống lưu trữ chỉ trong vài phút.
- Khả năng tái sử dụng: Các nhóm DevOps có thể tái sử dụng các tệp cấu hình IaC hiện có trong nhiều môi trường khác nhau.
- Hợp tác: Bạn có thể kiểm soát phiên bản các tệp cấu hình, cho phép bạn hợp tác với các thành viên trong nhóm để duy trì cơ sở hạ tầng.
- Giảm rủi ro: Việc áp dụng IaC cung cấp khả năng phục hồi thảm họa với chi phí thấp. Bạn có thể phục hồi các hệ thống lớn (thậm chí ở các vị trí khác nhau) bằng IaC.
Lợi ích của môi trường Terraform đa đám mây
- Cơ sở hạ tầng tiết kiệm chi phí: Xây dựng cơ sở hạ tầng của bạn bằng cách kết hợp các dịch vụ tiết kiệm chi phí nhất do nhiều nhà cung cấp dịch vụ đám mây khác nhau cung cấp.
- Tính nhất quán và khả năng chịu lỗi: Bạn có thể triển khai các cơ sở hạ tầng tương tự trên các nhà cung cấp đám mây hoặc trung tâm dữ liệu cục bộ khác nhau. Các nhà phát triển có thể sử dụng cùng một công cụ và tệp cấu hình để quản lý tài nguyên của từng nhà cung cấp đám mây cùng lúc. Một lệnh Terraform duy nhất có thể giám sát việc triển khai cho nhiều nhà cung cấp và thậm chí xử lý các phụ thuộc giữa các đám mây.
Trước khi bạn bắt đầu
- Nếu bạn chưa thực hiện, hãy tạo một tài khoản Linode và Compute Instance. Xem hướng dẫn Bắt đầu với Linode và Tạo Compute Instance của chúng tôi .
- Làm theo hướng dẫn Thiết lập và Bảo mật Phiên bản Compute của chúng tôi để cập nhật hệ thống của bạn. Bạn cũng có thể muốn đặt múi giờ, cấu hình tên máy chủ, tạo tài khoản người dùng giới hạn và tăng cường quyền truy cập SSH.
- Bạn cần mã thông báo truy cập cá nhân cho API v4 của Linode để sử dụng với Terraform và Terraform Linode Provider. Làm theo hướng dẫn Bắt đầu với API Linode để nhận mã thông báo.
Ghi chú: Hướng dẫn này được viết cho người dùng không phải root. Các lệnh yêu cầu quyền nâng cao được thêm tiền tố sudo
. Nếu bạn không quen với sudo
lệnh này, hãy xem hướng dẫn Người dùng và Nhóm Linux .
Tải Terraform về máy chủ Linode của bạn
Trong phần này, bạn cài đặt Terraform trên Ubuntu 20.04 Linode. Các bước này thường áp dụng cho hầu hết các bản phân phối dựa trên Debian. Bạn có thể sử dụng máy chủ Linode làm trung tâm cho cơ sở hạ tầng do Terraform quản lý, tuy nhiên, bạn cũng có thể cài đặt Terraform trên máy tính của mình.
Để tải Terraform trên máy chủ Linode, hãy làm theo các bước dưới đây:
1.Đăng nhập vào máy chủ Linode qua SSH . Đây là máy chủ Linode mà bạn muốn cài đặt Terraform. Thay thế 192.0.2.0
bằng địa chỉ IP của Linode .
ssh username@192.0.2.0
2.Nhận danh sách các gói mới nhất và cập nhật tất cả các gói đã cài đặt.
sudo apt-get update
sudo apt-get upgrade
3.Tạo một thư mục mới cho Terraform và chuyển tới thư mục này.
mkdir terraform
cd terraform
4.Tải xuống Terraform bằng wget
lệnh hoặc từ trang tải xuống của Terraform . Hướng dẫn này được viết cho phiên bản Terraform mới nhất 0.15.0 (tại thời điểm viết hướng dẫn này).
wget https://releases.hashicorp.com/terraform/0.15.0/terraform_0.15.0_linux_amd64.zip
Ghi chú: Các phiên bản trước của Terraform có thể được tìm thấy trên trang phát hành Terraform .
5.Tải xuống SHA256SUMS
tệp và sig
tệp tổng kiểm tra cho phiên bản Terraform mới nhất (trong trường hợp này là 0.15.0).
Tệp tổng kiểm tra SHA256:
wget https://releases.hashicorp.com/terraform/0.15.0/terraform_0.15.0_SHA256SUMS
Tệp chữ ký tổng kiểm tra:
wget https://releases.hashicorp.com/terraform/0.15.0/terraform_0.15.0_SHA256SUMS.sig
Xác minh Tải xuống Terraform
1.Tìm khóa GPG công khai của HashiCorp trên trang Bảo mật của họ trong phần “Truyền thông an toàn”. ID khóa là 51852D87348FFC4C
.
gpg --recv-keys 51852D87348FFC4C
Đầu ra sau đây xác nhận rằng gpg
khóa đã được nhập thành công.
gpg: directory '/root/.gnupg' created
gpg: keybox '/root/.gnupg/pubring.kbx' created
gpg: /root/.gnupg/trustdb.gpg: trustdb created
gpg: key 51852D87348FFC4C: public key "HashiCorp Security <security@hashicorp.com>" imported
gpg: Total number processed: 1
gpg: imported: 1
2.Sử dụng gpg
để xác thực tệp chữ ký. Sử dụng tên chính xác của các tệp sig
và SHA256
.
gpg --verify terraform_0.15.0_SHA256SUMS.sig terraform_0.15.0_SHA256SUMS
Kết quả đầu ra sau đây xác nhận rằng sig
tệp này là chữ ký đáng tin cậy từ HashiCorp Security.
gpg: Signature made Wed Apr 14 15:41:39 2021 UTC
gpg: using RSA key 91A6E7F85D05C65630BEF18951852D87348FFC4C
gpg: Good signature from "HashiCorp Security <security@hashicorp.com>" [unknown]
3.Đảm bảo khóa RSA hiển thị trong đầu ra của bước cuối cùng khớp với dấu vân tay hiển thị trên trang Terraform Security . Dấu vân tay nằm ở cùng vị trí với khóa GPG trong phần “Secure Communications”.
4.Xác minh tổng kiểm tra của zip
kho lưu trữ. Đối với lệnh sau, hãy sử dụng tên chính xác của SHA256SUMS
tệp.
sha256sum -c terraform_0.15.0_SHA256SUMS 2>&1 | grep OK
Chương sha256sum
trình hiển thị tên tệp zip
cùng với trạng thái. Nếu trạng thái là KHÔNG OK
, thì zip
tệp bị hỏng và phải tải xuống lại.
terraform_0.15.0_linux_amd64.zip: OK
Cài đặt và cấu hình Terraform trên máy chủ Linode
1.Giải nén terraform_*_linux_amd64.zip
vào terraform
thư mục của bạn.
unzip terraform_0.15.0_linux_amd64.zip
Ghi chú: Nếu bạn nhận được lỗi cho biết gói unzip
này bị thiếu trong hệ thống, hãy cài đặt unzip
gói bằng lệnh sau sudo apt install unzip
và thử lại.
2.Chỉnh sửa ~./profile
để đưa ~/terraform
thư mục vào PATH của bạn. Sau đó, tải lại hồ sơ.
echo 'export PATH="$PATH:$HOME/terraform" ' >> ~/.profile
source ~/.profile
3.Xác minh cài đặt Terraform bằng cách chạy terraform
lệnh mà không có bất kỳ đối số nào. Thông tin sử dụng Terraform được hiển thị theo sau là danh sách các lệnh phổ biến.
terraform
Usage: terraform [global options] <subcommand> [args]
The available commands for execution are listed below.
The primary workflow commands are given first, followed by
less common or more advanced commands.
Main commands:
init Prepare your working directory for other commands
validate Check whether the configuration is valid
plan Show changes required by the current configuration
apply Create or update infrastructure
destroy Destroy previously-created infrastructure
All other commands:
...
Xác định cơ sở hạ tầng đa đám mây của bạn bằng Terraform
Terraform phụ thuộc vào các plugin được gọi là Providers . Mỗi nhà cung cấp thêm một tập hợp các loại tài nguyên hoặc nguồn dữ liệu được Terraform quản lý.
Cấu hình Terraform phải khai báo nhà cung cấp nào họ yêu cầu để Terraform có thể sử dụng chúng. Terraform có thể hiểu hai loại tệp cấu hình: JSON và Ngôn ngữ cấu hình HashiCorp (HCL).
Hướng dẫn này sử dụng định dạng HCL. Tệp HCL có .tf
phần mở rộng là .
Định nghĩa cơ sở hạ tầng Linode
Các bước sau đây giải thích cách bạn có thể xây dựng cấu hình đa đám mây bao gồm một Linode và một dịch vụ từ đám mây Amazon Web Services (AWS). Phần này sử dụng Terraform Linode Provider và Amazon Web Services (AWS) Provider .
1.Tạo một tập tin linode-terraform.tf
trong terraform
thư mục của bạn.
cd terraform
vi linode-terraform.tf
2.Ở đầu tệp, thêm một terraform
khối để xác định Nhà cung cấp Linode , theo sau là khai báo của chính nhà cung cấp Linode. Trong khối nhà cung cấp, thêm token
khai báo. Xem hướng dẫn của Linode về Bắt đầu với API Linode để tìm hiểu cách tạo mã thông báo API, nếu bạn chưa thực hiện.
terraform {
required_providers {
linode = {
source = "linode/linode"
version = "1.16.0"
}
}
}
# Linode Provider definition
provider "linode" {
token = var.token
}
3.Xác định Tài nguyên Linode . Trong trường hợp này, bạn xác định một phiên bản Linode mới làm tài nguyên để triển khai. Sau đó, bạn chỉ định giá trị cho tất cả các cấu hình tài nguyên cần thiết.
resource "linode_instance" "terraform" {
image = "linode/ubuntu20.04"
label = "Terraform-Example"
group = "Terraform"
region = "us-east"
type = "g6-standard-1"
authorized_keys = [ var.authorized_keys ]
root_pass = var.root_pass
}
4.Toàn bộ linode-terraform.tf
tệp, bao gồm cả phần provider
và resource
phần , được hiển thị bên dưới.
Các cấu hình này tạo ra một Linode 2GB được gắn nhãn terraform-example
và đặt nó vào terraform
nhóm Linodes. Bạn có thể thay thế các giá trị bằng các giá trị mong muốn của riêng bạn. Danh sách các giá trị được phép cho từng trường, chẳng hạn như region
, có trong Linode API .
terraform {
required_providers {
linode = {
source = "linode/linode"
version = "1.16.0"
}
}
}
# Linode Provider definition
provider "linode" {
token = var.token
}
resource "linode_instance" "terraform" {
image = "linode/ubuntu20.04"
label = "terraform-example"
group = "terraform"
region = "us-east"
type = "g6-standard-1"
authorized_keys = [ var.authorized_keys ]
root_pass = var.root_pass
}
5.Trong cùng terraform
thư mục đó, tạo một tệp thứ hai có tên là variables.tf
, và khai báo tất cả các biến từ linode-terraform.tf
, như được hiển thị bên dưới.
vi variables.tf
variable "token" {}
variable "authorized_keys" {}
variable "root_pass" {}
6.Tạo một tệp thứ ba trong terraform
thư mục có tên là terraform.tfvars
. Tệp này dùng để xác định các giá trị thực tế cho từng biến. Đối với các biến – token
, authorized_keys
, và root_pass
, hãy thay thế mã thông báo API Linode, khóa SSH và mật khẩu an toàn cho thiết bị.
vi terraform.tfvars
token = "YOUR_LINODE_API_TOKEN"
authorized_keys = "YOUR_PUBLIC_SSH_KEY"
root_pass ="YOUR_ROOT_PASSWORD"
Ghi chú: Cũng có thể hợp lý khi khai báo các biến cho các trường mà mỗi tài nguyên có cùng giá trị. Nếu mỗi Linode sử dụng cùng một hình ảnh, hãy định nghĩa một image
biến và gán var.image
cho tham số hình ảnh của mỗi tài nguyên. Điều này giúp cập nhật thông tin hình ảnh cho tất cả các thiết bị dễ dàng hơn.
Xác định cơ sở hạ tầng AWS
Điều kiện tiên quyết để cung cấp tài nguyên AWS bằng Terraform
- Một tài khoản AWS
- Khóa bí mật AWS
Ví dụ sau đây minh họa cách bạn có thể cấu hình bảng cơ sở dữ liệu trong dịch vụ DynamoDB . Để biết thêm thông tin về cách xác định tài nguyên AWS trong Terraform, hãy tham khảo AWS Provider trong Terraform Registry . Thực hiện theo các bước dưới đây để chỉ định tài nguyên AWS.
1.Tạo một tệp mới có tên aws-terraform.tf
bên trong terraform
thư mục.
vi aws-terraform.tf
2.Khai báo nhà cung cấp AWS bằng cách chỉ định vùng AWS cho tài nguyên, cùng với các tham chiếu biến cho aws_access_key
, và aws_secret_key
.
# Initialize the AWS Provider
provider "aws" {
access_key = var.aws_access_key
secret_key = var.aws_secret_key
region = "eu-west-2"
}
3.Thêm một khai báo cho tài nguyên AWS. Toàn bộ tệp, bao gồm thông tin nhà cung cấp, được hiển thị bên dưới. aws_dynamodb_tabe
Tài nguyên này cấu hình một bảng cơ sở dữ liệu trong dịch vụ DynamoDB.
# Initialize the AWS Provider
provider "aws" {
access_key = var.aws_access_key
secret_key = var.aws_secret_key
region = "eu-west-2"
}
resource "aws_dynamodb_table" "inventory-dynamodb-table" {
name = "RecordInventory"
billing_mode = "PROVISIONED"
read_capacity = 20
write_capacity = 20
hash_key = "ArtistName"
range_key = "AlbumTitle"
attribute {
name = "ArtistName"
type = "S"
}
attribute {
name = "AlbumTitle"
type = "S"
}
}
4.Chỉnh sửa variables.tf
tệp và thêm các biến mới được sử dụng vào aws-terraform.tf
cuối tệp, như hiển thị bên dưới.
Ghi chú: Nếu sử dụng nhiều biến trong các tệp cấu hình, mỗi nhà cung cấp dịch vụ đám mây phải có tệp biến riêng.
...
variable "aws_access_key" {}
variable "aws_secret_key" {}
5.Chỉnh sửa terraform.tfvars
và thêm giá trị thực tế của khóa AWS của bạn.
...
aws_access_key = "YOUR_AWS_ACCESS_TOKEN"
aws_secret_key = "YOUR_AWS_SSH_KEY"
Khởi tạo, Xem xét Kế hoạch và Thực hiện Terraform
Để triển khai Terraform, cần thực hiện ba bước sau.
- Khởi tạo thư mục Terraform
- Xem xét kế hoạch thực hiện
- Áp dụng (thực hiện) kế hoạch Terraform
Hướng dẫn này mô tả chi tiết cả ba bước.
1.Khởi tạo Terraform để Terraform có thể đọc các biến và tải tất cả các nhà cung cấp cần thiết.
terraform init
Đầu ra sau đây xác nhận việc khởi tạo Terraform thành công:
* Finding linode/linode versions matching "1.16.0"...
* Finding latest version of hashicorp/aws...
* Installing linode/linode v1.16.0...
* Installed linode/linode v1.16.0 (signed by a HashiCorp partner, key ID F4E6BBD0EA4FE463)
* Installing hashicorp/aws v3.34.0...
* Installed hashicorp/aws v3.34.0 (signed by HashiCorp)
...
Terraform has been successfully initialized!
You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.
...
Ghi chú: Nếu Terraform hiển thị lỗi, hãy chạy init
lại lệnh với chế độ gỡ lỗi được bật bằng cách sử dụng TF_LOG=debug terraform init
.
2.Chạy terraform plan
lệnh. Lệnh này sẽ liệt kê các tài nguyên mà Terraform mong đợi sẽ tạo, thay đổi hoặc xóa.
terraform plan
An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
* create
Terraform will perform the following actions:
# aws_dynamodb_table.inventory-dynamodb-table will be created
* resource "aws_dynamodb_table" "inventory-dynamodb-table" {
* arn = (known after apply)
* billing_mode = "PROVISIONED"
* hash_key = "ArtistName"
* id = (known after apply)
* name = "RecordInventory"
* range_key = "AlbumTitle"
* read_capacity = 20
* stream_arn = (known after apply)
* stream_label = (known after apply)
* stream_view_type = (known after apply)
* write_capacity = 20
* attribute {
* name = "AlbumTitle"
* type = "S"
}
* attribute {
* name = "ArtistName"
* type = "S"
}
* point_in_time_recovery {
* enabled = (known after apply)
}
* server_side_encryption {
* enabled = (known after apply)
* kms_key_arn = (known after apply)
}
}
# linode_instance.terraform-example will be created
* resource "linode_instance" "terraform-example" {
* backups = (known after apply)
* backups_enabled = (known after apply)
* boot_config_label = (known after apply)
* group = "Terraform"
* id = (known after apply)
* image = "linode/ubuntu20.04"
* ip_address = (known after apply)
* ipv4 = (known after apply)
* ipv6 = (known after apply)
* label = "Terraform-Web-Example"
* private_ip_address = (known after apply)
* region = "eu-west"
* root_pass = (sensitive value)
* specs = (known after apply)
* status = (known after apply)
* swap_size = (known after apply)
* type = "g6-standard-1"
* watchdog_enabled = true
* alerts {
* cpu = (known after apply)
* io = (known after apply)
* network_in = (known after apply)
* network_out = (known after apply)
* transfer_quota = (known after apply)
}
}
Plan: 2 to add, 0 to change, 0 to destroy.
`terraform plan` won’t take any action or make any changes on your Linode account.
Ghi chú: Nếu lệnh tạo ra lỗi hoặc một số kết quả không mong muốn khác, hãy chạy lại terraform plan
ở chế độ gỡ lỗi.
TF_LOG=debug terraform plan
3.Nếu không có lỗi, hãy bắt đầu triển khai tài nguyên mới bằng apply
lệnh.
terraform apply
Terraform hiển thị lại kế hoạch hành động và yêu cầu bạn xác nhận. Nhập yes
để tiếp tục triển khai.
Sau đó, Terraform cung cấp tài nguyên theo kế hoạch của mình. Khi Terraform đã cấu hình cơ sở hạ tầng đa đám mây của bạn, nó sẽ tóm tắt kết quả.
Plan: 2 to add, 0 to change, 0 to destroy.
Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.
Enter a value: yes
linode_instance.terraform-web: Creating...
alerts.#: "" => "<computed>"
authorized_keys.#: "" => "1"
authorized_keys.0: "" => "ssh-rsa ..."
backups.#: "" => "<computed>"
backups_enabled: "" => "<computed>"
boot_config_label: "" => "<computed>"
group: "" => "Terraform"
image: "" => "linode/ubuntu18.04"
ip_address: "" => "<computed>"
ipv4.#: "" => "<computed>"
ipv6: "" => "<computed>"
label: "" => "web"
private_ip_address: "" => "<computed>"
region: "" => "us-east"
root_pass: "<sensitive>" => "<sensitive>"
specs.#: "" => "<computed>"
status: "" => "<computed>"
swap_size: "" => "<computed>"
type: "" => "g6-standard-1"
watchdog_enabled: "" => "true"
linode_instance.terraform-web: Still creating... (10s elapsed)
linode_instance.terraform-web: Still creating... (20s elapsed)
linode_instance.terraform-web: Still creating... (30s elapsed)
linode_instance.terraform-web: Still creating... (40s elapsed)
linode_instance.terraform-web: Still creating... (50s elapsed)
linode_instance.terraform-web: Creation complete after 52s (ID: 10975739)
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
4.Truy cập Linode Cloud Manager . Bạn sẽ thấy Linode terraform-example
đã được thêm vào tài khoản của bạn. Xem lại AWS Dashboard để xác minh nội dung của cơ sở dữ liệu mới.
Ghi chú: Terraform lưu trữ thông tin chi tiết về trạng thái tài nguyên của bạn trong terraform.tfstate
tệp trong cùng thư mục.
Cập nhật cấu hình Terraform
Terraform có thể sửa đổi một tài nguyên mà không ảnh hưởng đến các thành phần khác của cơ sở hạ tầng của bạn. Terraform xử lý các thay đổi cấu hình một cách nhẹ nhàng bằng cách so sánh trạng thái hiện tại của cơ sở hạ tầng của bạn với các tệp cấu hình đã cập nhật.
Ví dụ sau đây minh họa cách thêm Linode mới và thay đổi bảng cơ sở dữ liệu AWS cùng lúc.
1.Chỉnh sửa linode-terraform.tf
tệp và thêm đoạn mã sau vào cuối tệp. Đoạn mã này định nghĩa Linode 1GB chạy Ubuntu 20.04 là tài nguyên mới.
...
resource "linode_instance" "terraform2-example" {
image = "linode/ubuntu20.04"
label = "terraform-web-example-2"
group = "terraform"
region = "eu-west"
type = "g6-nanode-1"
authorized_keys = [var.authorized_keys]
root_pass = var.root_pass
}
2.Chỉnh sửa aws-terraform.tf
, và thay đổi một trong các trường. Trong trường hợp này, hãy đổi AlbumTitle
thành RecordTitle
. Đổi tên trường range_key
cho phù hợp với tên mới.
...
range_key = "RecordTitle"
...
attribute {
name = "RecordTitle"
type = "S"
}
...
3.Thực hiện terraform plan
lại lệnh.
terraform plan
Terraform hiển thị kế hoạch mới, trong đó yêu cầu thêm hai mục và xóa một mục trong số các tài nguyên của bạn.
linode_instance.terraform-example: Refreshing state... [id=25603885]
aws_dynamodb_table.inventory-dynamodb-table: Refreshing state... [id=RecordInventory]
An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
* create
-/+ destroy and then create replacement
Terraform will perform the following actions:
# aws_dynamodb_table.inventory-dynamodb-table must be replaced
-/+ resource "aws_dynamodb_table" "inventory-dynamodb-table" {
~ arn = "arn:aws:dynamodb:eu-west-2:836653344247:table/RecordInventory" -> (known after apply)
~ id = "RecordInventory" -> (known after apply)
name = "RecordInventory"
~ range_key = "AlbumTitle" -> "RecordTitle" # forces replacement
+ stream_arn = (known after apply)
- stream_enabled = false -> null
+ stream_label = (known after apply)
+ stream_view_type = (known after apply)
- tags = {} -> null
# (4 unchanged attributes hidden)
- attribute {
- name = "AlbumTitle" -> null
- type = "S" -> null
}
+ attribute {
+ name = "RecordTitle"
+ type = "S"
}
~ point_in_time_recovery {
~ enabled = false -> (known after apply)
}
+ server_side_encryption {
+ enabled = (known after apply)
+ kms_key_arn = (known after apply)
}
- ttl {
- enabled = false -> null
}
# (1 unchanged block hidden)
}
# linode_instance.terraform2-example will be created
* resource "linode_instance" "terraform2-example" {
* backups = (known after apply)
* backups_enabled = (known after apply)
* boot_config_label = (known after apply)
* group = "Terraform"
* id = (known after apply)
* image = "linode/ubuntu18.04"
* ip_address = (known after apply)
* ipv4 = (known after apply)
* ipv6 = (known after apply)
* label = "Terraform-Web-Example-2"
* private_ip_address = (known after apply)
* region = "eu-west"
* root_pass = (sensitive value)
* specs = (known after apply)
* status = (known after apply)
* swap_size = (known after apply)
* type = "g6-nanode-1"
* watchdog_enabled = true
* alerts {
* cpu = (known after apply)
* io = (known after apply)
* network_in = (known after apply)
* network_out = (known after apply)
* transfer_quota = (known after apply)
}
}
Plan: 2 to add, 0 to change, 1 to destroy.
4.Khi kế hoạch được hoàn tất, hãy chạy apply
lệnh để triển khai các thay đổi. Nhập yes
khi được nhắc để tiếp tục thực hiện các thay đổi.
terraform apply
linode_instance.terraform2-example: Creating...
aws_dynamodb_table.inventory-dynamodb-table: Destroying... [id=RecordInventory]
aws_dynamodb_table.inventory-dynamodb-table: Destruction complete after 2s
aws_dynamodb_table.inventory-dynamodb-table: Creating...
aws_dynamodb_table.inventory-dynamodb-table: Creation complete after 7s [id=RecordInventory]
linode_instance.terraform2-example: Still creating... [10s elapsed]
linode_instance.terraform2-example: Still creating... [20s elapsed]
linode_instance.terraform2-example: Still creating... [30s elapsed]
linode_instance.terraform2-example: Still creating... [40s elapsed]
linode_instance.terraform2-example: Creation complete after 48s [id=25624349]
Apply complete! Resources: 2 added, 0 changed, 1 destroyed.
5.Truy cập Linode Cloud Manager và bảng điều khiển AWS để xác minh các bản cập nhật đã được triển khai chính xác.
Phá hủy cấu hình Terraform
Terraform bao gồm destroy
lệnh xóa hoàn toàn tài nguyên cơ sở hạ tầng của bạn khi chúng không còn cần thiết nữa.
1.Chạy plan
lệnh có -destroy
cờ để xác minh danh sách tài nguyên được lên lịch xóa.
terraform plan -destroy
An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
* destroy
Terraform will perform the following actions:
# aws_dynamodb_table.inventory-dynamodb-table will be destroyed
...
# linode_instance.terraform-example will be destroyed
...
# linode_instance.terraform2-example will be destroyed
...
Plan: 0 to add, 0 to change, 3 to destroy.
2.Chạy terraform destroy
lệnh để hủy (xóa) tài nguyên của bạn. Nhập yes
khi Terraform yêu cầu bạn xác nhận thay đổi.
terraform destroy
Quan trọng: Lệnh này xóa vĩnh viễn tài nguyên của bạn. Không thể hoàn tác hoặc đảo ngược thao tác này.
Plan: 0 to add, 0 to change, 3 to destroy.
Do you really want to destroy all resources?
Terraform will destroy all your managed infrastructure, as shown above.
There is no undo. Only 'yes' will be accepted to confirm.
Enter a value: yes
linode_instance.terraform-example: Destroying... [id=25603885]
linode_instance.terraform2-example: Destroying... [id=25624349]
aws_dynamodb_table.inventory-dynamodb-table: Destroying... [id=RecordInventory]
aws_dynamodb_table.inventory-dynamodb-table: Destruction complete after 3s
linode_instance.terraform2-example: Destruction complete after 4s
linode_instance.terraform-example: Destruction complete after 4s
Destroy complete! Resources: 3 destroyed.
3.Truy cập Linode Cloud Manager và xác minh các thiết bị và dịch vụ đã bị xóa.
Tìm hiểu thêm về Terraform
Terraform đang cách mạng hóa hệ sinh thái DevOps bằng cách chuyển đổi cách quản lý cơ sở hạ tầng. Nó cung cấp nhiều kỹ thuật tiên tiến để giúp hợp lý hóa các tác vụ IaC phổ biến. Ví dụ, các mô-đun Terraform có thể đóng gói các tác vụ cấu hình thường dùng lại với nhau.
Xem Hướng dẫn của Linode về cách tạo mô-đun Terraform để biết hướng dẫn về cách tạo mô-đun.
Tài liệu tham khảo hữu ích:
- Đọc tài liệu Terraform về cách sử dụng HCL và Terraform.
- Xây dựng, cập nhật hoặc hủy bỏ cơ sở hạ tầng AWS bằng Terraform .
- Hãy xem Nhà cung cấp Linode để biết thêm thông tin chi tiết về các tài nguyên Linode mà bạn có thể triển khai bằng Terraform.
Thông tin thêm
Bạn có thể muốn tham khảo các nguồn sau để biết thêm thông tin về chủ đề này. Mặc dù chúng tôi cung cấp với hy vọng rằng chúng sẽ hữu ích, nhưng xin lưu ý rằng chúng tôi không thể đảm bảo tính chính xác hoặc tính kịp thời của các tài liệu được lưu trữ bên ngoài.
- Địa hình
- Nhà cung cấp Terraform Linode
- Trang bảo mật
- Trang tải xuống Terraforms
- các loại tài nguyên
- nguồn dữ liệu
- Ngôn ngữ cấu hình HashiCorp
- Tài nguyên
- Dịch vụ DynamoDB
- Nhà cung cấp AWS trong Terraform Registry
- Xây dựng, cập nhật hoặc phá hủy cơ sở hạ tầng AWS bằng Terraform
Nguồn: https://www.linode.com/docs/guides/create-a-multicloud-infrastructure-using-terraform/