Thứ Bảy, Tháng Sáu 15, 2024
Google search engine
Homelinuxảo hóaCách sử dụng vòng lặp trong Terraform

Cách sử dụng vòng lặp trong Terraform

Cách sử dụng vòng lặp trong Terraform

Cơ sở hạ tầng mạng là công cụ quan trọng đối với nhiều tổ chức. Những lợi ích của việc sử dụng dịch vụ đám mây đã khiến nhiều tổ chức chuyển khối lượng công việc của họ lên đám mây. Quản lý hiệu quả các tài nguyên bên trong các cơ sở hạ tầng đám mây này đòi hỏi các kỹ năng (công cụ) nâng cao và kinh nghiệm tốt. Ngày nay có rất nhiều công cụ để tự động hóa cơ sở hạ tầng dựa trên đám mây. Terraform là một trong những công cụ gần đây đã trở nên phổ biến rộng rãi trong thế giới DevOps.

Terraform là gì?

Terraform là một công cụ mã nguồn mở được phát triển và duy trì bởi HashiCorp. Nó sử dụng Ngôn ngữ cấu hình Hashicorp- HCL của riêng mình để cung cấp cho nhiều nhà cung cấp dịch vụ đám mây. Về cơ bản, Terraform sẽ so sánh cấu hình cơ sở hạ tầng hiện tại của bạn với trạng thái mong muốn và chỉ sửa đổi những phần của cơ sở hạ tầng được yêu cầu để đạt được trạng thái mong muốn.

Terraform sử dụng các plugin mà nó gọi là nhà cung cấp, tương ứng với các nhà cung cấp dịch vụ đám mây và doanh nghiệp khác nhau như AWS, Azure, vSphere, v.v. Terraform không ảnh hưởng đến tất cả các tài nguyên trong tài khoản đám mây của bạn; nó chỉ xử lý các thành phần được quản lý thông qua kế hoạch của nó. Nó sử dụng các tệp trạng thái (định dạng JSON) để lưu trữ trạng thái hiện tại của cơ sở hạ tầng.

Điều gì làm cho Terraform nổi bật?

Một trong những điều thú vị làm nổi bật Terraform so với các công cụ khác là nó cho phép bạn nói những gì bạn muốn và nó sẽ giải quyết cách đạt được điều đó mà không cần phải lo lắng về tất cả các lệnh cấp cơ sở để hoàn thành nó. Một sự thật khác ít được biết đến hơn (hoặc bạn có thể đã biết), đó là các plugin liên kết với các API của nhà cung cấp dịch vụ đám mây, hiện do chính nhà cung cấp dịch vụ đám mây thiết kế. Điều này có nghĩa là bản thân AWS duy trì nhà cung cấp AWS của mình cho Terraform. Đây là một điều tốt vì nhà cung cấp sẽ vẫn được cập nhật với không gian AWS API.

Chúng ta sẽ học gì ở đây?

Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách sử dụng cấu trúc vòng lặp trong Terraform. Chúng ta sẽ thấy một số ví dụ về việc sử dụng một số cấu trúc vòng lặp. Bây giờ chúng ta hãy tiếp tục với bài viết này.

Bắt đầu nào…

Có nhiều loại cấu trúc vòng lặp khác nhau trong terraform, mỗi loại có trường hợp sử dụng cụ thể:

Tham số 1. count ‘: Điều này tạo ra nhiều bản sao của một tài nguyên hoặc mô-đun. Đối số đếm sẽ dẫn đến bao nhiêu đối tượng là giá trị đếm cho tài nguyên hoặc mô-đun đó. Đối số đếm nhận một số nguyên.

Ngoài ra còn có một đối tượng kiểu đếm hoạt động với đối số đếm. Sử dụng đối tượng này, chúng tôi thay đổi cấu hình cho mỗi trường hợp. Nó sử dụng ‘chỉ mục’ làm thuộc tính duy nhất. Số chỉ mục bắt đầu bằng số không. Sau đây chúng ta sẽ xem công dụng của từng trường hợp.

Ví dụ về việc sử dụng tham số ‘count’:

Ví dụ dưới đây cho thấy quy trình tạo nhiều Phiên bản EC2 giống hệt nhau:

tài nguyên "aws_instance" "web-ec2" {
đếm = 5
ami = “ami-xxxx”
instance_type = “t2.micro”
}

Count parameter example with identical EC2 instance.

Đầu ra mẫu:

Kế hoạch: 5 để thêm, 0 để thay đổi, 0 để phá hủy.
Bạn có muốn thực hiện những hành động này không?
Terraform sẽ thực hiện các hành động được mô tả ở trên.
Chỉ có 'có' mới được chấp nhận để phê duyệt.
Nhập một giá trị:

Đoạn mã trên sẽ tạo ra 5 phiên bản EC2 giống nhau. Trong trường hợp chúng tôi cần tạo nhiều phiên bản EC2 với cách đặt tên khác nhau, mã trên sẽ được sửa đổi thành:

tài nguyên "aws_instance" "web-ec2" {
đếm = 5
ami = ami-xxxx
instance_type = t2.micro
thẻ {
Name = “my-server - $ {count.index}”
}
}

Cấu hình trên sẽ dẫn đến năm phiên bản EC2 có tên: my-server-0 đến my-server-4.

Count parameter example with non-identical EC2 instance.

2. Biểu thức ‘for’: Biểu thức ‘for’ trong Terraform lặp qua các mục bên trong danh sách, bản đồ, đối tượng, v.v. Nó có cú pháp sau:

[for <item or element> in <Name_of_List> : <OUTPUT>]

Ở đây ‘Name_of_List’ là tên của Danh sách để lặp lại. ‘Item’ hoặc ‘element’ là tên của biến được gắn với mọi phần tử trong LIST ở trên. Quảng cáo

Ví dụ về sử dụng biểu thức ‘for’: Đoạn mã dưới đây sẽ in phiên bản chữ hoa của các mục bên trong danh sách:


biến "demo" {
description = "Danh sách các mục"
type = list (string)
default = ["một", "hai", "ba"]
}
đầu ra "chữ hoa" {
value = [cho tên trong var.demo: upper (name)]
}

3. Biểu thức ‘for_each’: Terraform đã giới thiệu các biểu thức ‘for_each’ từ phiên bản 0.12. Sử dụng biểu thức này, chúng ta có thể lặp lại các mục bên trong danh sách, tập hợp và ánh xạ. Chúng ta có thể sử dụng biểu thức này để tạo nhiều bản sao của một tài nguyên hoàn chỉnh hoặc các bản sao của một khối nội tuyến bên trong một tài nguyên. Định dạng cơ bản cho biểu thức ‘for_each’ là:

resource "<Name_of_the_Provider> _ <Type_of_resource>" "<identifier>" {
for_each = <COLLECTION (bộ hoặc bản đồ)>
[Mã số ...]
}

Ở đây chỉ định nhà cung cấp thay cho ‘Name_of_the_Provider’ . ‘ Type_of_resource’ chỉ định loại tài nguyên để mang lại.

Ví dụ về cách sử dụng biểu thức ‘for_each’: Ví dụ dưới đây trình bày cách tạo người dùng IAM bằng cách sử dụng biểu thức ‘for_each’:

tài nguyên "aws_iam_user" "iam-account" {
for_each = toset (["tecofers", "HowToForge", "Demo"])
name = each.key
}

Hàm ‘toset’ được sử dụng để chuyển đổi thành tập hợp. ‘each.key’ là một khóa bản đồ liên quan đến một phiên bản. Tương tự ‘each.value’ là một giá trị bản đồ liên quan đến một thể hiện. Đoạn mã trên sẽ tạo ra ba người dùng IAM được đề cập bên trong danh sách.

Lưu ý: Cả hai cấu trúc count và for_each không thể có mặt đồng thời.

Kết thúc

Trong hướng dẫn này, chúng ta đã biết về các cấu trúc vòng lặp khác nhau trong Terraform và cách chúng có thể được sử dụng. Trong bài đăng sắp tới, chúng tôi sẽ cố gắng khám phá các mô-đun Terraform, vì vậy hãy theo dõi HowToForge.

Tham khảo: https://mediaspace.wisc.edu/media/Introduction+to+and+Managing+Infraosystem+with+Terraform+-+Brian+Hill/1_qhr9c1os

admin
adminhttps://khanhle.id.vn/
Mình là Khánh, ngành Mạng truyền thông cũng có thể làm web
RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

- Advertisment -
Google search engine

Most Popular

Recent Comments