Đơn giản hóa việc triển khai OneFS trên AWS với Terraform

Trong bản phát hành đầu tiên của APEX File Storage for AWS vào tháng 5 năm 2023, người dùng đã có khả năng thực hiện khối lượng công việc tệp trong đám mây AWS, do đó khai thác sức mạnh của giải pháp lưu trữ NAS mở rộng PowerScale OneFS. Tuy nhiên, việc triển khai ban đầu yêu cầu phải cung cấp thủ công tất cả các tài nguyên AWS cần thiết để cung cấp cụm OneFS—một trải nghiệm không tối ưu để bắt đầu hành trình APEX File Storage trong AWS.

Với bản phát hành tiếp theo của APEX File Storage for AWS vào tháng 12 năm 2023, chúng tôi rất vui mừng giới thiệu một mô-đun Terraform mã nguồn mở thân thiện với người dùng mới. Mô-đun này được thiết kế để nâng cao và đơn giản hóa quy trình triển khai, giảm nhu cầu cung cấp tài nguyên thủ công. Trong bài đăng trên blog này, chúng tôi sẽ đi sâu vào chi tiết về cách tận dụng mô-đun Terraform này, cung cấp cho bạn hướng dẫn toàn diện để đẩy nhanh quá trình triển khai APEX File Storage của bạn trên AWS.

Tổng quan về mô-đun Terraform onefs

Mô-đun onefs của Terraform là mô-đun nguồn mở để tự động triển khai tài nguyên AWS cho cụm OneFS. Mô-đun này được phát hành và cấp phép theo giấy phép MPL-2.0. Bạn có thể tìm thêm thông tin chi tiết về mô-đun onefs từ  Terraform Registry . Mô-đun onefs cung cấp các tính năng sau để giúp bạn triển khai APEX File Storage cho cụm AWS OneFS trong AWS:

  • Cung cấp các tài nguyên AWS cần thiết cho một cụm OneFS duy nhất, bao gồm các phiên bản EC2, ổ đĩa EBS, nhóm phân bổ và giao diện mạng.
  • Mở rộng quy mô cụm bằng cách cung cấp thêm tài nguyên AWS, bao gồm các phiên bản EC2, ổ đĩa EBS và giao diện mạng.

Bắt đầu

Để sử dụng mô-đun Terraform onefs, bạn cần một máy đã cài đặt Terraform và có thể kết nối với tài khoản AWS của bạn. Sau khi bạn đã đáp ứng các điều kiện tiên quyết trong tài liệu , bạn có thể bắt đầu triển khai tài nguyên AWS cho cụm OneFS.  

Blog này cung cấp hướng dẫn triển khai các tài nguyên cơ sở hạ tầng AWS cần thiết cho APEX File Storage for AWS với Terraform. Bao gồm: phiên bản EC2, nhóm phân bổ chiến lược phân tán, giao diện mạng và ổ đĩa EBS.

1. Tải phiên bản mới nhất của mô-đun onefs từ Terraform Registry .

2. Chuẩn bị tệp main.tf sử dụng phiên bản mô-đun onefs được thu thập ở Bước 1. Mô-đun onefs yêu cầu một tập hợp các biến đầu vào. Sau đây là tệp ví dụ có tên main.tf để tạo cụm OneFS 4 nút.

mô-đun “onefs” {

   nguồn = “dell/onefs/aws”

   phiên bản = “1.0.0”

 

   vùng = “us-east-1”

   availability_zone = “us-east-1a”

   iam_instance_profile = “onefs-runtime-instance-profile”

   tên = “vonefs-cfv”

   id = “vonefs-cfv”

   nút = 4

   loại_thể_hiện = “m5dn.12xlớn”

   loại_đĩa_dữ_liệu = “gp3”

   kích thước đĩa dữ liệu = 1024

   data_disks_per_node = 6

   internal_subnet_id = “mạng con-0c0106598b95ee7b6”

   external_subnet_id = “mạng con-0837801239d54e245”

   contiguous_ips=đúng

   first_external_node_hostnum = 5

   internal_sg_id = “sg-0ee87249a52397219”

   security_group_external_id = “sg-0635f298c9cb764da”

   image_id = “ami-0f1a267119a34361c”

   credentials_hashed = đúng

   hashed_root_passphrase = “$5$9874f5d2c724b8ca$IFZZ5e9yfUVqNKVL82s.iFLIktr4WLavFhUVa8A”

   hashed_admin_passphrase = “$5$9874f5d2c724b8ca$IFZZ5e9yfUVqNKVL82s.iFLIktr4WLavFhUVa8A”

   máy chủ dns = [“169.254.169.253”]

   múi giờ = “Giờ trung bình Greenwich”

}

 

đầu ra “onefs-outputs” {

   giá trị = module.onefs

   nhạy cảm = đúng

}

3. Thay đổi thư mục làm việc hiện tại của bạn thành thư mục main.tf.

4. Khởi tạo thư mục gốc của mô-đun bằng cách cài đặt các nhà cung cấp và mô-đun cần thiết cho việc triển khai. Trong ví dụ sau, mô-đun onefs được tải xuống tự động từ Terraform Registry.

# khởi tạo terraform

Đang khởi tạo phần phụ trợ…

Đang khởi tạo mô-đun…

Đang tải xuống registry.terraform.io/dell/onefs/aws 1.0.0 cho onefs…

– onefs trong .terraform\modules\onefs

– onefs.onefsbase trong .terraform\modules\onefs\modules\base

– onefs.onefsbase.machineid trong .terraform\modules\onefs\modules\machineid

 

Đang khởi tạo plugin của nhà cung cấp…

– Đang tìm phiên bản mới nhất của hashicorp/aws…

– Đang cài đặt hashicorp/aws v5.30.0…

– Đã cài đặt hashicorp/aws v5.30.0 (đã được HashiCorp ký)

5. Kiểm tra các tập tin cấu hình trong thư mục onefs.

# xác thực terraform

6. Áp dụng cấu hình bằng cách chạy lệnh sau.

# terraform áp dụng

7. Nhập “có” sau khi bạn đã xem trước và xác nhận những thay đổi.

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âu trả lời “có” mới được chấp nhận.

 

   Nhập giá trị: 

8. Đợi tài nguyên AWS được cung cấp. Đầu ra hiển thị tất cả thông tin cụm. Nếu triển khai không thành công, hãy chạy lại lệnh terraform apply để triển khai.

Đã đăng ký hoàn tất! Tài nguyên: 13 đã thêm, 0 đã thay đổi, 0 đã hủy.

Đầu ra:

onefs-outputs = <nhạy cảm>

9. Nhận thông tin chi tiết về cụm bằng cách chạy lệnh sau.

# đầu ra terraform –json

Ví dụ đầu ra sau đây bị cắt bớt.

các nút bổ sung = 3

cluster_id = “vonefs-cfv”

địa chỉ_ip_kiểm_soát = “10.0.32.5”

địa chỉ ip bên ngoài = [

   “10.0.32.5”,

   “10.0.32.6”,

   “10.0.32.7”,

   “10.0.32.8”,

]

gateway_hostnum = 1

id_thể_dụ = [

   “i-0eead1ee1dd67da6e”,

   “i-054efe96f6e605009”,

   “i-06e0b1ce06bad42a1”,

   “i-0e463c742974641d7”,

]

địa chỉ ip nội bộ = [

   “10.0.16.5”,

   “10.0.16.6”,

   “10.0.16.7”,

   “10.0.16.8”,

]

mạng nội bộ_ip cao = “10.0.16.8”

mạng nội bộ_thấp_ip = “10.0.16.5”

mgmt_ip_addresses = []

cấu hình nút = {

   “0” = {

     “external_interface_id” = “eni-09ddea1fd79f0d0ab”

     “ip_bên_ngoài” = [

       “10.0.32.5”,

     ]

     “internal_interface_id” = “eni-0caeee71581a8c429”

     “internal_ips” = [

       “10.0.16.5”,

     ]

     “mgmt_interface_id” = null

     “mgmt_ips” = null /* bộ */

     “serial_number” = “SV200-930073-0000”

   }

   “1” = {

     “external_interface_id” = “eni-00869c96a27c20c93”

     “ip_bên_ngoài” = [

       “10.0.32.6”,

     ]

     “internal_interface_id” = “eni-0471bbba5a7f6596d”

     “internal_ips” = [

       “10.0.16.6”,

     ]

     “mgmt_interface_id” = null

     “mgmt_ips” = null /* bộ */

     “serial_number” = “SV200-930073-0001”

   }

   “2” = {

     “external_interface_id” = “eni-0dac5052668bd3a4f”

     “ip_bên_ngoài” = [

       “10.0.32.7”,

     ]

     “internal_interface_id” = “eni-09d35ffa61b3dcd60”

     “internal_ips” = [

       “10.0.16.7”,

     ]

     “mgmt_interface_id” = null

     “mgmt_ips” = null /* bộ */

     “serial_number” = “SV200-930073-0002”

   }

   “3” = {

     “external_interface_id” = “eni-028d211ef2d5b577c”

     “ip_bên_ngoài” = [

       “10.0.32.8”,

     ]

     “internal_interface_id” = “eni-02a99febea713f2d1”

     “internal_ips” = [

       “10.0.16.8”,

     ]

     “mgmt_interface_id” = null

     “mgmt_ips” = null /* bộ */

     “serial_number” = “SV200-930073-0003”

   }

}

vùng = “us-east-1”

10. Viết ra các biến đầu ra sau đây để thiết lập cụm được mô tả trong tài liệu .

  • control_ip_address : Địa chỉ IP bên ngoài của nút đầu tiên của cụm
  • external_ip_addresses : Địa chỉ IP bên ngoài của tất cả các nút cụm được cung cấp
  • internal_ip_addresses : Địa chỉ IP nội bộ của tất cả các nút cụm được cung cấp
  • internal_network_high_ip : Địa chỉ IP nội bộ cao nhất được chỉ định
  • internal_network_low_ip : Địa chỉ IP nội bộ thấp nhất được chỉ định
  • instance_id : ID phiên bản EC2 của các nút cụm

11. Tất cả tài nguyên AWS hiện đã được cung cấp. Sau khi nút đầu tiên của cụm bắt đầu, nó sẽ tạo thành một cụm nút đơn. Bạn có thể sử dụng nút đầu tiên của cụm để thêm các nút bổ sung vào cụm được mô tả trong tài liệu . Dưới đây là các phiên bản AWS EC2 được cung cấp với mô-đun Terraform onefs.

Các biến đầu vào có sẵn

Mô-đun Terraform onefs cung cấp một bộ biến đầu vào để bạn chỉ định cài đặt của riêng mình, bao gồm tài nguyên AWS và cụm OneFS, ví dụ: tài nguyên mạng AWS, tên cụm và mật khẩu. Xem bảng bên dưới để biết chi tiết được sử dụng trong tệp main.tf. 

 

Tên biến Kiểu Sự miêu tả
vùng đất sợi dây (Bắt buộc) Vùng AWS của các nút cụm OneFS.
vùng khả dụng sợi dây (Bắt buộc) Vùng khả dụng AWS của các nút cụm OneFS.
iam_instance_profile sợi dây (Bắt buộc) Tên hồ sơ phiên bản AWS của các nút cụm OneFS. Để biết thêm chi tiết, hãy xem tài liệu AWS Hồ sơ phiên bản .
tên sợi dây (Bắt buộc) Tên cụm OneFS. Tên cụm phải bắt đầu bằng một chữ cái và chỉ có thể chứa số, chữ cái và dấu gạch nối. Nếu cụm được tham gia vào miền Active Directory, tên cụm phải có 11 ký tự trở xuống.
nhận dạng sợi dây (Bắt buộc) ID của cụm OneFS. Mô-đun onefs sử dụng ID để thêm thẻ vào tài nguyên AWS. Bạn nên đặt ID thành tên cụm của mình.
các nút con số (Bắt buộc) Số lượng nút cụm OneFS: phải là 4, 5 hoặc 6.
loại_thể_hiện sợi dây (Bắt buộc) Loại phiên bản EC2 của các nút cụm OneFS. Tất cả các nút trong cụm phải có cùng kích thước phiên bản. Các kích thước phiên bản được hỗ trợ là:

  • Các phiên bản EC2 m5dn: m5dn.8xlarge, m5dn.12xlarge, m5dn.16xlarge, m5dn.24xlarge
  • Các trường hợp EC2 m6idn: m6idn.8xlarge, m6idn.12xlarge, m6idn.16xlarge, m6idn.24xlarge
  • Các trường hợp EC2 m5d: m5d.24xlarge
  • Các trường hợp EC2 i3en: i3en.12xlarge

Lưu ý : Bạn phải chạy PoC nếu bạn định sử dụng loại phiên bản EC2 m5d.24xlarge hoặc i3en.12xlarge. Để biết chi tiết, hãy liên hệ với nhóm tài khoản Dell của bạn.

loại_đĩa_dữ_liệu sợi dây (Bắt buộc) Loại ổ đĩa EBS cho cụm, gp3 hoặc st1.
kích thước đĩa dữ liệu con số (Bắt buộc) Kích thước ổ đĩa EBS đơn tính bằng GiB. Xem xét cấu hình cụm được hỗ trợ , kích thước này phải từ 1024 đến 16384 cho gp3, 4096 hoặc 10240 cho st1.
dữ liệu_đĩa_trên_mỗi_nút con số (Bắt buộc) Số lượng ổ đĩa EBS trên mỗi nút. Xem xét cấu hình cụm được hỗ trợ , nó phải là 5, 6, 10, 12, 15, 18 hoặc 20 cho gp3, 5 hoặc 6 cho st1.
id_mạng_con_nội_bộ sợi dây (Bắt buộc) ID mạng con AWS cho giao diện mạng nội bộ của cụm.
id_mạng_con_bên_ngoài sợi dây (Bắt buộc) ID mạng con AWS cho giao diện mạng bên ngoài của cụm.
ips liên tiếp bool (Bắt buộc) Cờ boolean để chỉ ra liệu có nên phân bổ địa chỉ IPv4 liền kề cho giao diện mạng bên ngoài của các nút cụm hay không. Nên đặt thành true.
số máy chủ node bên ngoài đầu tiên con số (Bắt buộc nếu contiguous_ips=true)

Số máy chủ của địa chỉ IP bên ngoài của nút đầu tiên trong mạng con AWS đã cho. Mặc định được đặt thành 5, Bốn địa chỉ IP đầu tiên trong mạng con AWS được AWS dành riêng, do đó mô-đun onefs sẽ phân bổ địa chỉ IP thứ năm cho nút đầu tiên của cụm. Nếu IP đang được sử dụng, mô-đun sẽ không hoạt động. Do đó, khi đặt contiguous_ips=true, hãy đảm bảo rằng bạn đặt số máy chủ chính xác có đủ IP liền kề cho cụm của mình. Tham khảo Hàm Terraform cidrhost để biết thêm chi tiết về số máy chủ.

ID_sg_nội_bộ sợi dây (Bắt buộc) ID nhóm bảo mật AWS cho giao diện mạng nội bộ của cụm.
nhóm_bảo_mật_bên_ngoài sợi dây (Bắt buộc) ID nhóm bảo mật AWS cho giao diện mạng bên ngoài của cụm.
hình ảnh_id sợi dây (Bắt buộc) ID AMI OneFS được mô tả trong Tìm ID AMI OneFS .
thông tin đăng nhập đã băm bool (Bắt buộc) Cờ boolean để chỉ ra thông tin xác thực được băm hay ở dạng văn bản thuần túy.
mật khẩu gốc đã băm sợi dây (Bắt buộc nếu credentials_hashed=true)

Mật khẩu gốc đã băm cho cụm OneFS

mật khẩu hashed_admin sợi dây (Bắt buộc nếu credentials_hashed=true)

Mật khẩu quản trị băm cho cụm OneFS

mật khẩu gốc sợi dây (Bắt buộc nếu credentials_hashed=false)

Mật khẩu gốc cho cụm OneFS

mật khẩu quản trị sợi dây (Bắt buộc nếu credentials_hashed=false)

Mật khẩu quản trị cho cụm OneFS

máy chủ DNS danh sách(chuỗi) (Tùy chọn) Máy chủ DNS cụm, mặc định được đặt thành [“169.254.169.253”], là AWS Route 53 Resolver. Để biết chi tiết, hãy xem Máy chủ DNS Amazon .
tên_miền_dns danh sách(chuỗi) (Tùy chọn) Miền DNS cụm mặc định được đặt thành [” <vùng> .compute.internal”]
múi giờ sợi dây (Tùy chọn) Múi giờ của cụm, mặc định được đặt thành “Giờ trung bình Greenwich”. Một số tùy chọn khả dụng là: Giờ trung bình Greenwich, Múi giờ miền Đông, Múi giờ miền Trung, Múi giờ miền núi, Múi giờ Thái Bình Dương. Bạn có thể thay đổi múi giờ sau khi cụm được triển khai bằng cách làm theo các bước trong phần Tài liệu OneFS – Đặt ngày và giờ của cụm .
thẻ_tài_nguyên bản đồ(chuỗi) (Tùy chọn) Các thẻ sẽ được đính kèm vào tài nguyên AWS đã cung cấp. Ví dụ: resource_tags={“project”: “onefs-poc”, “tester”: “bob”}.

 

Tác giả : Lieven Lin