Cơ sở hạ tầng mạng là yếu tố 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. Hiện nay có nhiều công cụ có sẵn để tự động hóa cơ sở hạ tầng dựa trên đám mây. Terraform là một công cụ như vậy gần đây đã trở nên cực kỳ phổ biến trong thế giới DevOps.
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. Một dự án Terraform được chứa trong thư mục riêng của nó chứa nhiều tệp liên quan đến dự án. Terraform không ảnh hưởng đến tất cả các tài nguyên của 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.
1. tham số 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ố count sẽ tạo ra nhiều đối tượng bằng giá trị count cho tài nguyên hoặc mô-đun đó. Đối số count nhận một số nguyên.
Ngoài ra còn có một đối tượng count-type hoạt động với đối số count. Sử dụng đối tượng này, chúng ta thay đổi cấu hình cho mỗi phiên bản. Đối tượng này sử dụng 'index' làm thuộc tính duy nhất. Số chỉ mục bắt đầu bằng số không. Sau này chúng ta sẽ xem cách sử dụng từng trường hợp.
Ví dụ về việc sử dụng tham số 'count':
Ví dụ bên dưới cho thấy quy trình tạo nhiều EC2 Instance giống hệt nhau:
Đầu ra mẫu:
Mã trên sẽ tạo ra 5 phiên bản EC2 giống hệt nhau. Trong trường hợp chúng ta cần tạo nhiều phiên bản EC2 với tên khác nhau, mã trên sẽ được sửa đổi như sau:
Cấu hình trên sẽ tạo ra năm phiên bản EC2 có tên: my-server-0 đến my-server-4.
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. Biểu thức có cú pháp sau:
Ở đây, 'Name_of_List' là tên của Danh sách cần lặp lại. ‘Item’ hoặc ‘element’ là tên của biến được đính kèm vào mọi phần tử trong LIST ở trên.
Ví dụ về cách sử dụng biểu thức ‘for’: Mã bên dưới sẽ in phiên bản chữ hoa của các mục bên trong danh sách:
3. Biểu thức 'for_each': Terraform đã giới thiệu 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à:
Tại đây, hãy chỉ định nhà cung cấp thay cho ‘Name_of_the_Provider’. ‘Type_of_resource’ chỉ định loại tài nguyên để tạo ra.
Ví dụ về cách sử dụng biểu thức ‘for_each’: Ví dụ bên dưới minh họa cách tạo người dùng IAM bằng biểu thức ‘for_each’:
Hàm ‘toset’ được sử dụng để chuyển đổi thành tập hợp. ‘each.key’ là khóa bản đồ liên quan đến một thể hiện. Tương tự như vậy, ‘each.value’ là một giá trị bản đồ liên quan đến một thể hiệ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 đều không thể có mặt đồng thời.
Tài liệu tham khảo: https://mediaspace.wisc.edu/media/I...ucture+with+Terraform+-+Brian+Hill/1_qhr9c1os
Terraform là gì?
Terraform là một công cụ nguồn mở do HashiCorp phát triển và bảo trì. Công cụ này 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ơ sở hạ tầng cần thiết để đạt đến 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. Một dự án Terraform được chứa trong thư mục riêng của nó chứa nhiều tệp liên quan đến dự án. Terraform không ảnh hưởng đến tất cả các tài nguyên của 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ị khiến Terraform nổi bật 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 để có đượ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ở để thực hiện điều đó. Một sự thật ít được biết đến khác (hoặc bạn có thể đã biết), là các plugin liên kết với API của nhà cung cấp dịch vụ đám mây hiện được 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ẽ luôn được cập nhật với không gian API AWS.Chúng ta sẽ học được gì ở đây?
Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách sử dụng các cấu trúc vòng lặp trong Terraform. Chúng ta sẽ xem 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 đăng này.Hã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ể:1. tham số 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ố count sẽ tạo ra nhiều đối tượng bằng giá trị count cho tài nguyên hoặc mô-đun đó. Đối số count nhận một số nguyên.
Ngoài ra còn có một đối tượng count-type hoạt động với đối số count. Sử dụng đối tượng này, chúng ta thay đổi cấu hình cho mỗi phiên bản. Đối tượng này sử dụng 'index' làm thuộc tính duy nhất. Số chỉ mục bắt đầu bằng số không. Sau này chúng ta sẽ xem cách sử dụng từng trường hợp.
Ví dụ về việc sử dụng tham số 'count':
Ví dụ bên dưới cho thấy quy trình tạo nhiều EC2 Instance giống hệt nhau:
Mã:
resource "aws_instance" "web-ec2" {
Mã:
count = 5
Mã:
ami = “ami-xxxx”
Mã:
instance_type = “t2.micro”
Mã:
}
Đầu ra mẫu:
Mã:
Kế hoạch: 5 để thêm, 0 để thay đổi, 0 để hủy.
Mã:
[I]Bạn có muốn thực hiện các hành động này không?[/I]
Mã:
[I]Terraform sẽ thực hiện các hành động được mô tả ở trên.[/I]
Mã:
[I]Chỉ chấp nhận 'có' để phê duyệt.[/I]
Mã:
[I]Nhập giá trị:[/I]
Mã trên sẽ tạo ra 5 phiên bản EC2 giống hệt nhau. Trong trường hợp chúng ta cần tạo nhiều phiên bản EC2 với tên khác nhau, mã trên sẽ được sửa đổi như sau:
Mã:
resource "aws_instance" "web-ec2" {
Mã:
count = 5
Mã:
ami = ami-xxxx
Mã:
instance_type = t2.micro
Mã:
tags {
Mã:
Name = “my-server-${count.index}”
Mã:
}
Mã:
}
Cấu hình trên sẽ tạo ra năm phiên bản EC2 có tên: my-server-0 đến my-server-4.
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. Biểu thức có cú pháp sau:
Mã:
[for [I] in : ]
Ở đây, 'Name_of_List' là tên của Danh sách cần lặp lại. ‘Item’ hoặc ‘element’ là tên của biến được đính kèm vào mọi phần tử trong LIST ở trên.
Ví dụ về cách sử dụng biểu thức ‘for’: Mã bên dưới sẽ in phiên bản chữ hoa của các mục bên trong danh sách:
Mã:
Mã:
biến "demo" {
Mã:
description = "Danh sách các mục"
Mã:
type = list(string)
Mã:
default = ["one", "two", "three"]
Mã:
}
Mã:
style="font-weight:400">output "upper_case" {
Mã:
value = [for name in var.demo : upper(name)]
Mã:
}
3. Biểu thức 'for_each': Terraform đã giới thiệu 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à:
Mã:
resource "_" "" {[/I]
Mã:
[I]for_each = [/I]
Mã:
[I][Mã ...][/I]
Mã:
[I]}[/I]
Tại đây, hãy chỉ định nhà cung cấp thay cho ‘Name_of_the_Provider’. ‘Type_of_resource’ chỉ định loại tài nguyên để tạo ra.
Ví dụ về cách sử dụng biểu thức ‘for_each’: Ví dụ bên dưới minh họa cách tạo người dùng IAM bằng biểu thức ‘for_each’:
Mã:
resource "aws_iam_user" "iam-accounts" {
Mã:
for_each = toset( ["tecofers", "HowToForge", "Demo"] )
Mã:
name = each.key
Mã:
}
Hàm ‘toset’ được sử dụng để chuyển đổi thành tập hợp. ‘each.key’ là khóa bản đồ liên quan đến một thể hiện. Tương tự như vậy, ‘each.value’ là một giá trị bản đồ liên quan đến một thể hiệ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 đều không thể có mặt đồng thời.
Kết thúc
Trong hướng dẫn này, chúng ta đã tìm hiểu về các cấu trúc vòng lặp khác nhau trong Terraform và cách sử dụng chúng. Trong bài đăng sắp tới, chúng ta sẽ cố gắng khám phá các mô-đun Terraform, vì vậy hãy theo dõi HowToForge.Tài liệu tham khảo: https://mediaspace.wisc.edu/media/I...ucture+with+Terraform+-+Brian+Hill/1_qhr9c1os