1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tự Động hóa cấu hình và triển khai cơ sở hạ tầng trong hệ thống Đám mây

65 1 0
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Tự Động Hóa Cấu Hình Và Triển Khai Cơ Sở Hạ Tầng Trong Hệ Thống Đám Mây
Tác giả Cao Tú Anh
Người hướng dẫn TS. Nguyễn Duy Phương
Trường học Học Viện Công Nghệ Bưu Chính Viễn Thông
Chuyên ngành Hệ thống thông tin
Thể loại Đề án tốt nghiệp thạc sĩ
Năm xuất bản 2024
Thành phố Hà Nội
Định dạng
Số trang 65
Dung lượng 5,88 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

“Tự động hóa quản lý và triển khai cơ sở hạ tầng trong môi trường đám mây” cung cấp các tiêu chuẩn về các tài nguyên trong hệ thống đám mây, từ đó triển khai source code để triển khai cơ

Trang 2

TỰ ĐỘNG HÓA CẤU HÌNH VÀ TRIÊN KHAI CƠ SỞ HẠ TẢNG

TRONG HE THONG DAM MAY

Chuyên ngành: Hệ thống thông tin

ĐÈ ÁN TÓT NGHIỆP THẠC SĨ KỸ THUẬT

(Theo định hướng ứng dụng)

NGƯỜI HƯỚNG DẪN KHOA HỌC

TS NGUYEN DUY PHƯƠNG „j

HÀ NỘI - 2024

Trang 3

LOI CAM DOAN

Téi cam đoan rằng công trình nghiên cứu này là thành quả của công sức cá

nhân của tôi và không sao chép từ bất kỳ nguồn nào khác Tắt cả thông tin được trình

bày trong đề án này đều là sản phẩm của công việc cá nhân hoặc được tổng hợp từ

nhiều nguồn tài liệu khác nhau Mọi tài liệu tham khảo đều được trích dẫn một cách

hợp pháp và có nguồn gốc rõ ràng Các đữ liệu và kết quả được trình bày trong đề án

đều là trung thực và chưa từng được công bé trong bat kỳ công trình nghiên cứu nào

Trang 4

LOI CAM ON

Lời đầu tiên, em xin gửi lời cảm ơn sâu sắc tới các thầy, cô giáo giảng viên

khoa Công nghệ thông tin 1, khoa Đào tạo Sau đại học nói riêng và các thầy, cô giáo

giảng viên Học viện Công nghệ Bưu chính Viễn Thông nói chung Trong suốt quá

trình học tập tại Học viện, các thầy cô đã chỉ bảo, giảng dạy cho em biết bao kiến

thức, kinh nghiệm quý báu để em có hành trang vững bước trong tương lai

Em cũng xin được gửi lời cảm ơn tới thầy hướng dẫn TS Nguyễn Duy Phương,

cảm ơn thầy đã luôn hướng dẫn chỉ bảo tận tình em trong suốt quá trình học tập,

nghiên cứu và thực hiện để án này Những lời khuyên, sự chỉ bảo của các thầy đã

giúp em hoàn thành đề án tốt nghiệp này cũng như có thêm rất nhiều kiến thức, kinh

nghiệm trong việc học tập và nghiên cứu

Dù đã nỗ lực hoàn thành đề án, em hiểu rằng có thể không tránh khỏi những

sai sót Kính mong được thầy cô và các bạn thông cảm và đóng góp ý kiến

Em xin trân trọng cảm ơn

Trang 5

CHUGONG 1 TIEU CHUAN VE TRIEN KHAI CAC TAI NGUYEN TREN HE

THONG DAM MAY

1.3 Kt lun Chu ong sssssssssssssssssssssssssssssssssssssssussssnssssesessesssesssssssisunsesssssseseececeeee 9

CHƯƠNG 2 THIẾT KÉ VÀ TRIỀN KHAI IaC

2.1 Giới thiệu về các céng cu Terraform, Ansibl

2.2 Các yêu cầu cơ bản của cơ sở hạ tầng

2.3 Triển khai laC dựa trên các yêu củ — n ẽẽ

CHƯƠNG 3: THUC NGHIEM VA KET QUA

3.1 Triển khai IaC lên hệ thống Gam my .cccccccccssosssseseeeesesssssnsnseeeeeeeeeeseeeeeens 39)

3.2 Kiểm tra thực nghiệm và kết quả

3.3 So sách thời gian triển khai giữa laC với phương pháp

3.4 Kết luận TT tá x126it02x6462444997004012:586140600018/02462291024082310240100061038615g2016720621g0004e0

KET LUAN VA KIEN NGHI

DANH MUC TAI LIEU THAM KHAO

Trang 6

1 TaC Infrastructure as Code Cơ sở hạ tang như code

2 HCL HashiCorp Configuration Ngôn ngữ câu hình

§ VPC Virtual Private Cloud Ảo hóa đám mây riêng tư

6 EC2 Elastic Compute Cloud Điện toán đám mây linh

hoạt

7 RDS Relational Database Service | Dich vu co sé dit liéu

quan hé

II | 83 Simple Storage Service Dịch vụ lưu trữ đơn giản

Trang 7

Hình 2.1: Kiến trúc sau khi triển khai lên hệ thông đám mây 19

Hình 3.1: Luông triển khai IaC lên hệ thống đám mây 39

Hình 3.2: Trạng thái ban đâu của VPC 40

Hình 3.3: Trạng thái sau khi triên khai laC của VPC 41

Hinh 3.5: Trạng thái sau khi triển khai IaC của SG 42

Hình 3.7: Trạng thái sau khi triển khai laC của EC2 43

Hình 3.8: Trạng thái của Load Balancer 4

Hình 3.9: Trạng thái ban đầu của RDS 44

Hinh 3.10: Trang thai sau khi triển khai laC của RDS 44

Hình 3.11: Lưu trữ dữ liệu trên S3 44

Trang 8

MO DAU

Hiện nay với sự phát triển về Cloud computing đưa ra giải pháp về triển khai

và quản lý cơ sở hạ tầng trên hệ thống đám mây với ưu điểm là tính ổn định và linh

hoạt hơn so với cơ sở hạ tầng ở dạng vật lý Do đó có rất nhiều cơ quan, tổ chức, công

ty có nhu cầu sử dụng hệ thống cơ sở hạ tầng trên các hệ thống đám mây thay vì quản

lý tập trung dạng server vật lý Để dễ dàng quản lý và vận hành dễ dàng hơn Những

quá trình này tốn nhiều thời gian và cần kinh nghiệm về Cloud thì mới có thể hoàn

thành được Đề tài này tập trung để giải quyết vấn đề trên

Hiện tại đa số các công ty doanh nghiệp đều quản lý và triển khai với tài

nguyên Cloud thông qua các biện pháp thủ công như tương tác thông qua giao diện,

tạo thủ công Điều này yêu cầu phải có nhiều nhân lực có kinh nghiệm về đám mây, dẫn đến có thể có sai sót trong quá trình triển khai và quản lý thủ công và khó

có thể phục hồi quay trở lại được

IaC (Infrastructure as Code) 1a một giải pháp giúp giao tiếp với các hệ thống

đám mây thông qua code Từ đó có thể triển khai và quản lý các tài nguyên thông qua

code, điều này giúp do tăng tính tự động hóa và giảm thiểu sự sai sót và thời gian khi tương tác với các hệ thống đám mây

“Tự động hóa quản lý và triển khai cơ sở hạ tầng trong môi trường đám mây” cung cấp các tiêu chuẩn về các tài nguyên trong hệ thống đám mây, từ đó triển khai

source code để triển khai cơ sở hạ tầng theo kiến trúc được cung cấp, đồng thời quản

lý tài nguyên đám mây hiệu quả trong trường hợp muốn mở rộng hay tối ưu hóa lại

kiến trúc

Trong quá trình nghiên cứu và ứng dụng của đề tài thì đã chứng minh hiệu quả

về có thể quản lý và triển khai tài nguyên đám mây thông qua source code thay vì các

biện pháp quản lý thủ công bằng tay Tự động hóa quản lý và triển khai cơ sở hạ tầng trong môi trường CI giúp tiết kiệm thời gian và tối ưu hóa việc sử dụng tài nguyên 'Việc tự động hóa cung cấp tính nhất quán và đáng tin cậy cho hệ thống và giảm thiểu lỗi do sự can thiệp của con người trong quá trình triển khai cấu hình hạ tầng

Trang 9

ð

Nội dung đề án được trình bày thành ba chương theo cấu trúc sau:

Chương 1: Tiêu chuẩn về triển khai các tài nguyên trên hệ thống đám

mây

Trình bày tổng quan về các khái niệm liên quan cơ bản đến hệ thống

đám mây, các thành phần cơ bản trong cơ sở hạ tầng Mỗi thành phần có những

tiêu chuẩn riêng để triển khai lên hệ thống đám mây nhằm đáp ứng các tiêu

chí về an toàn và bảo mật

Chương 2: Thiết kế và triển khai IaC

Giới thiệu tổng quan về các thành phần trong hệ thống đám mây, các

tiêu chuẩn cần tuân thủ Sau đó có các yêu cầu về triển khai cơ sở hạ tằng trên

hệ thống đám mây Trình bày chỉ tiết cách xây dựng terraform để giải quyết

bài toán về các yêu cầu về cơ sở hạ tầng

Chương 3: Thực nghiệm và kết quá

Triển khai IaC lên hệ thống đám mây Cài đặt thử nghiệm và kiểm tra

tính đúng đắn về logic

Kết luận và hướng phát triển

Trình bày tóm tắt những kết quả đã đạt và chưa đạt được Qua đó đề

xuất mục tiêu, hướng nghiên cứu và phát triển tiếp theo

Trang 10

CHƯƠNG 1 TIỂU CHUAN VE TRIEN KHAI CÁC TÀI NGUYÊN TRÊN HỆ THÓNG ĐÁM MÂY

Hiện nay các hệ thống đám mây đóng vai trò quan trọng trong việc cung cấp

các dịch vụ cho việc lưu trữ dữ liệu, xử lý, và triển khai ứng dụng Trong bối cảnh

này, Amazon Web Services (AWS), Google Cloud Platform (GCP), va Microsoft Azure đứng đầu trong danh sách các nhà cung cấp dịch vụ đám mây hàng đầu trên

thế giới

Amazon Web Services (AWS) là một trong những nhà cung, cấp dịch vụ đám

mây hàng đầu trên thế giới, được phát triển và quản lý bởi Amazon.com AWS cung

cấp một loạt các dịch vụ đám mây, giúp tổ chức và cá nhân triển khai các ứng dụng

va dich vụ một cách nhanh chóng hiệu quả và tiết kiệm chi phí Các dịch vụ cơ bản trong AWS nhu: EC2 cung cấp các máy ảo để triển khai các ứng dụng, Lambda cho

phép thực thi mã nguồn mà không cần quản lý máy chủ, S3 là dịch vụ lưu trữ và truy

xuất thông tin, RDS cung cấp các hệ cơ sở dữ liệu quan hệ như MySQL, SQL Server, PostgreSQL, VPC cho phép tạo ra mạng ảo để triển khai các tài nguyên bên trên,

Google Cloud Platform (GCP) cung, cấp một loạt các dịch vụ đám mây bao gồm Compute Engine, Cloud Storage, BigQuery, Kubernetes Engine, Cloud AI, Cloud Functions, Cloud Spanner, Cloud Pub/Sub, va Firestore cho tính toán, lưu trữ,

xử lý đữ liệu, quản lý container,

Microsoft Azure cung cấp các dịch vụ đám mây như Virtual Machines, Blob

Storage, Azure SQL Database, Azure Functions, Azure Kubernetes Service, AI & Machine Learning, va Azure DevOps cho tinh toan, hru trit, co sé dit liéu, serverless

computing, quản lý container, trí tuệ nhân tạo, và quản lý dự án phần mềm,

Các nhà cung cấp dịch vụ đám mây hàng đầu đều cung cấp một loạt các dịch

vụ để hỗ trợ nhu cầu đa dạng của ứng dụng Có thể tên của từng dịch vụ khác nhau

nhưng đều có chung một mục đích sử dụng Việc hiểu rõ về các thành phần chính của

mỗi hệ thống đám mây sẽ giúp đảm bảo việc triển khai và quản lý hiệu quả trên môi

trường đám mây

Trang 11

1.1 Gidi thiéu về các thành phần cơ bán trong hệ thống đám mây

Với bắt kì hệ thông nào dù triển khai từ hệ thống đám mây hay triển khai từ

các tài nguyên vật lý thì cũng cẦn các thành phần cơ bản như: tài nguyên về mạng,

firewall cho phép các kết nối các thành phần lại với nhau, các tài nguyên về tính toán, nơi lưu trữ dữ liệu, cơ sở dữ liệu dùng trong hệ thống Đối với các hệ thống đám mây thì cũng cung cấp các dịch vụ tương ứng với các yêu cầu trên

Network: là một phần quan trọng của cơ sở hạ tầng đám mây, cung cấp các

dịch vụ để quản lý và kết nối các tài nguyên ảo khác trong môi trường đám mây Các

thành phần trong Network bao gồm: Virtual Private Cloud (VPC), Subnet, Network

Access Control Lists (NACLs), Network Address Translation (NAT)

Firewall: cơ chế kiểm soát truy cập mạng để bao vệ tài nguyên mạng bằng cách quản lý luồng dữ liệu đến và đi từ các tài nguyên khác nhau trong cùng một mạng

Virtual machine: là các tài nguyên về tính toán được ảo hóa Bao gồm các thành phần riêng lẻ như: Ram, CPU, OS, Volume, Các thành phần này có thể kết hợp lại với nhau để cầu thành nhiều server khác nhau, nhằm triển khai các mã nguồn

Storage: Nơi lưu trữ dữ liệu của của các tài nguyên khác Dữ liệu này có thé bao gồm nhiều kiểu dữ liệu như: text, image, video, các dữ liệu này có thể truy cập

từ bất kì đâu dựa trên quyền mà người quản trị cấu hình cho nó

Database: các hệ thống đám mây cung cấp đa dạng hệ quản trị cơ sở đữ liệu quan hệ và không quan hệ Ngoài ra các hệ thống này còn đảm bảo tính linh hoạt và khả năng ôn định của dịch vụ cơ sở dữ liệu Điều này rất quan trọng khi triển khai

các hệ thống có tiêu chuẩn cao về cơ sở dữ liệu

Monitoring: là hệ thống giám sát và theo dõi các tài nguyên sử dụng theo thời gian thực tế Các tham số có thể giám sát như: phần trăm Ram hoặc CPU sử dụng, tông số kết nói, tỉ lệ lỗi, thời gian phản hồi, Nếu có bất kì tham số nào bất thường

sẽ gửi cảnh báo đến người quản trị thông qua nhiều hình thức như: email, tin nhắn,

Authentication: trong hệ thống đám mây, thì một tài khoản tổng đại diện cho một hoặc nhiều cơ sở hạ tầng tài khoản tổng này đóng vai trò về quản lý chỉ phí sử

Trang 12

dụng dịch vụ của hệ thống đám mây, tương tác trực tiếp với hệ thống đám mây Môi

trường làm việc của các tài khoản tổng khác nhau được cô lập, giúp cho hạn chế tối

đa sự ảnh hưởng giữa các tài khoản tổng Từ tài khoản tổng này có thể phân quyền

để tạo ra nhiễu user cho từng thành viên trong dự án Các user có thể được phân quyền

phụ thuộc vào nhiệm vụ của mỗi thành viên

1.2 Các tiêu chuẩn triển khai với từng thành phần

1.2.1 Network

VPC (Virtual Private Cloud) cho phép tạo ra một môi trường mạng ảo riêng biệt trên đám mây để triển khai và quản lý các tài nguyên trên mạng ảo này Các tài nguyên trong cùng một mạng ảo có thể giao tiếp với nhau thông qua firewall Các tài nguyên ở trong các mạng ảo khác nhau vẫn có thể giao tiếp với nhau thông qua việc kết nối các mạng ảo này lại với nhau

Subnet là một thành phần không thể thiếu trong VPC Nó được chia thành các

phạm vi địa chỉ IP con để quản lý và phân phối tài nguyên mạng, cho phép tạo ra các

phân đoạn mạng riêng biệt để triển khai các tài nguyên như máy ảo, cơ sở đữ liệu và dịch vụ khác trong môi trường đám mây Trong hệ thống đám mây có tiêu chuẩn thiết

kế subnet thành 3 loại riêng biệt, các kiểu này phụ thuộc vào nhu cầu sử dụng của các

tài nguyên được đặt trên từng subnet;

e Public subnet: là subnet được kết nối đến Internet Gateway, do đó mỗi tài

nguyên được đặt trong publie subnet được eung cấp public ip va private ip, nên có khả năng truy cập trực tiếp từ internet Các tài nguyên này thường là các máy chủ web, ứng dụng công cộng, hoặc các dịch vụ cần phải tiếp xúc

trực tiếp với người ding trén internet Public thường được kết hợp với các dịch

vụ khác như Load Balancer hoặc các máy ảo cần địa chỉ public IP để kết nối

từ client, hoặc giao tiếp với tài nguyên khác cùng mạng

s _ Private subnet: là subnet không được kết nối đến Internet Gateway, do đó mỗi tài nguyên được dat trong private subnet chỉ được cấp một private ip Do

đó các tài nguyên này không thể được kết nối từ bên ngoài đến chính nó

Trang 13

Nhung vẫn có thể giao tiếp với các tài nguyên khác trong cùng một mạng Nếu muốn các tài nguyên được đặt trên private subnet có thể đi ra ngoài internet thì có thể kết nối private subnet dén NAT gateway Nhưng điều này được

khuyến nghị không nên thực hiện

e Database subnet: 14 private subnet, bắt buộc không được gắn với NAT gateway Database subnet được khuyến nghị chỉ nên được gắn với các tài nguyên vé database

Router table: là một bảng định tuyến mạng được sử dụng để xác định cách

thức định tuyến gói tin giữa các subnet trong VPC và ra ngoài Internet Bảng định tuyến này quyết định cách các gói tin được chuyển tiếp giữa các subnet và cách chúng được định tuyến ra ngoài mạng Router table cũng quyết định xem subnet nào có thể truy cập Internet thông qua Internet Gateway hoặc thông qua các dịch vụ khác như

Virtual Private Gateway kết nối với mạng riêng tư bên ngoài

Internet gateway: cho phép các tài nguyên trong mạng VPC truy cập Internet

và được truy cập từ Internet Nó hoạt động như một cổng kết nối giữa mạng nội bộ

và Internet, cho phép các tài nguyên trong VPC gửi và nhận dữ liệu qua Internet Internet Gateway thường được sử dụng trong public subnet của một VPC để kết nối các tài nguyên trong VPC với Internet

NAT gateway (Network Address Translation Gateway): được đặt trên public ip, nên nó được cấp một địa chỉ public ¡p NAT có chức năng là ánh xạ địa chỉ private ip thanh public ip Do đó có thể chuyển tiếp traffie từ các tài nguyên trong private subnet của VPC ra Internet thong qua mét dia chi public ip duoc NAT Gateway quản lý Điều này giúp bảo vệ các tài nguyên trong private subnet khỏi các mối đe dọa mạng bên ngoài và cung cấp một lớp bảo vệ cho hệ thống

1.2.2 Firewall

Là một dịch vụ hoặc tính năng được sử dụng để kiểm soát và quân lý lưu lượng mạng Security group là tập hợp các luật cho phép kết nối vào và ra khỏi các tài nguyên trong cùng mạng VPC Các security group được gắn vào các tài nguyên cần

Trang 14

giao tiếp đến nhau Từ đó cấp cho các tài nguyên này các luật được gắn trong security

group

Security group bao gồm các thành phần như:

Group Name: tên của security group Group ID: Id duy nhất được gán cho security group được xác định trong

- Port range: dai công được mở để kết nối

- Source: dia chi IP hoac Security Group ID nguồn cho phép truy

cap

Outbound Rules: quy tắc điều khiển lưu lượng mạng đi từ các tài nguyên trong Security Group Bao gồm các thông số tương tự như Inbound Rules

Các tài nguyên chỉ có private ip nếu muốn kết nối đến nhau thì được khuyến

nghj sir dung source trong inbound va outbound IA security group id

1.2.3 Virtual machine

Là các máy ảo có thể khởi chạy và quản lý trên hệ thống đám mây Trong hệ

thống đám mây cung cấp nhiều loại máy ảo có sự khác biệt về hệ điều hành, tài

nguyên phần cứng, kích thước bộ nhớ lưu trữ, Điều này cung cấp nhiều sự lựa

chọn phụ thuộc vào từng nhu cầu sử dụng khác nhau Mỗi máy ảo sẽ được đặt trong

một VPC, được gắn cho một subnet Để máy ảo có thể kết nối đến các tài nguyên

khác hoặc kết nối ra ngoài internet thì cần gắn security group có các luật tương ứng,

vao may ao

Các khuyến nghị khi tạo các máy ảo bao gồm các tiêu chuẩn về:

Trang 15

Không sử dụng port SSH và key pair mặc định

Mã hóa ổ đĩa volume trước khi gắn vào máy ảo

Sử dụng IMDS (Instance Metadata Service) version 2 là một dịch

vu metadata trên các máy ảo IMDS cung cấp thông tin quan trọng

về máy ảo như instance ID, public va private IP address, region, security group, và nhiều thông tin khác Việc sử dụng IMDS v2 yêu cầu xác thực để truy cập metadata của máy ảo, nhằm ngăn chặn các tấn công như SSRF (Server-Side Request Forgery)

1.2.4 Storage

La dich vụ về lưu trữ các dữ liệu với đa dạng kiểu dữ liệu như text, image,

video, source code, logs hé thống, Các dữ liệu này được lưu trong Bucket, trong

hệ thống đám mây thì tên của bucket là duy nhất Các bucket có thể được truy cập từ

bắt kì đâu phụ thuộc vào cấu hình của riêng nó

Các khuyến nghị khi cấu hình bucket bao gồm các tiêu chuẩn:

Hạn chế quyền truy cập tối thiếu về đọc và ghỉ dữ liệu vào bucket

Chỉ sử dụng giao thức HTTPS để giao tiếp với bucket

Tắt cả dữ liệu trong bueket cần được mã hóa

Áp dụng lifecyele rules để cấu hình thời gian lưu trữ tối đa của dữ

liệu được lưu trong bucket Nếu quá thời gian này thì dữ liệu sẽ được xóa khỏi bueket Ngoài ra việc cấu hình trên sẽ giúp tiết kiệm về chỉ phí lưu trữ Các hệ thống đám mây có đưa ra các gợi ý về thời gian tối đa cần lưu trữ Nếu bucket có lưu trữ dữ liệu về người dùng thì lifeeycle rules tối thiểu là 5 năm, các dữ liệu liên quan đến access log hay activity log thi lifecycle rules ti thiéu 1a 2 nam

1.2.5 Database

La dich vụ quản lý cơ sở đữ liệu quan hệ quan trọng cho việc triển khai và

quản lý cơ sở dữ liệu một cách dé dàng trong hệ thống đám mây

Các khuyến nghị khi cấu hình đatabase bao gồm các tiêu chuẩn:

Trang 16

e Khéng sit dung port lang nghe mac dinh, nhu MySql khéng duge dùng port 3306, redis không dùng port 6379,

e Các database cần được đặt trong nhiều Database subnet Mỗi Database subnet được đặt ở một khu vực khác nhau, là private subnet nên không thể truy cập vào và ra internet Do đó chỉ có các tài nguyên trong cùng một mạng VPC mới có thể giao tiếp với database Việc đặt trong nhiều subnet giúp cho database luôn đảm bảo tính sẵn sàng nếu như subnet đang sử dụng gặp sự cố thì tự động được chuyển sang subnet khác nếu như cấu hình chức năng Multi-

AZ (Availability Zone)

e Database cin được mã hóa về ổ đĩa, snapshot (bản sao lưu của database)

1.3 Kết luận chương và mục tiêu của dé tai

Trong quá trình triển khai hệ thống trên các hệ thống đám mây thì việc tuân

thủ các tiêu chuẩn và quy định về việc triển khai các tiêu chuẩn về network, firewall,

virtual maehine, storage, database đóng vai trò cực kỳ quan trọng trong việc triển khai

cơ sở hạ tầng Điều này đảm bảo tính ổn định, an toàn và bảo mật cho cơ sở hạ tầng

đã được triển khai

Virtual machine: Việc triển khai các máy ảo theo tiêu chuẩn cung cấp nên tảng

cơ sở hạ tầng linh hoạt và mở rộng, giúp ứng dụng hoạt động một cách hiệu quả và

đáng tin cậy

Network: Cấu hình network đúng cách giúp tạo ra môi trường mạng ảo riêng

biệt, cung cấp cách ly và bảo mật cho các dịch vụ và ứng dụng trong hệ thống

Storage: Sit dung bucket để lưu trữ đữ liệu theo tiêu chuẩn giúp đảm bảo tính

khả dụng, bảo mật và dé quan lý cho các tệp tin và đữ liệu quan trọng

Database: Triển khai database đúng cách giúp quản lý cơ sở dữ liệu một cách

hiệu quả, đảm bảo độ tin cậy và khả dụng cao cho dịch vụ

Firewall: Cầu hình Security Group theo các tiêu chuẩn bảo mật giúp kiểm soát

lưu lượng truy cập vào các tài nguyên mạng

Trang 17

10

Tóm lại, việc áp dung các tiêu chuẩn và quy định trên trong triển các thành

phần cơ bản của hệ thống đám mây không chỉ giúp nâng cao hiệu suất hệ thống mà

còn cung cấp một môi trường làm việc an toàn và bảo mật, đồng thời đảm bảo sự linh

hoạt và dễ quản lý cho các dịch vụ trên nền tảng đám mây

Mục tiêu của để tài là giải quyết sự phức tạp của các tiêu chuẩn trên khi thực hiện triển khai và cầu hình bằng phương pháp thủ công với sự tương tác trực tiếp trên

giao diện người dùng gặp rất nhiều khó khăn để thực hiện Bên cạnh đó tốn nhiều

thời gian và nhân lực để hoàn thành, nhưng tỉ lệ gặp sai sót và lỗi rất cao Vì thế mục

tiêu của đề tài là chuyển đổi các yêu cầu logic trên thành dạng laC, người dùng chỉ

cần khai báo số lượng, các logic cần tuân thủ thành dạng mã nguồn Sau đó từ mã

nguồn tự động thực thi và triển khai các tài nguyên theo đúng như các thông số và

yêu cầu mà người dùng đã định nghĩa.

Trang 18

11

CHUONG 2 THIET KE VÀ TRIEN KHAI laC

Hiện nay các hệ thống đám mây cung cấp một giao diện cho người dùng có thể tương tác và tạo các tài nguyên được nêu trong chương 1 Việc triển khai va quản

lý các tài nguyên này thông qua giao diện gặp rất nhiều khó khăn Nếu như hệ thống

yêu cầu cơ sở hạ tầng phức tạp thì việc triển khai thông qua giao diện cần rất nhiều

nguồn nhân lực chất lượng có kinh nghiệm và kiến thức tốt về hệ thống đám mây Sau đó việc tương tác trực tiếp với giao diện cần sự giao tiếp giữa mọi người để tuần theo logic đúng khi thao tác, tất nhiên phải đảm bảo trong quá trình thực hiện thủ

công không có sai sót từ người thực hiện Điều này rất khó để thực hiện nếu như

không nói là bắt khả thi để thực hiện trơn tru, không có sai sót nào

Nếu như việc triển khai thành công, thì công việc tiếp theo là quản lý và bảo

trì của cơ sở hạ tẦng trên vẫn cần lượng nhân lực tương đương như triển khai Một

câu hỏi được đặt ra là nếu như các người triển khai trên nghỉ việc thì ai sẽ là người

bảo trì hệ thống trên, thời gian để họ làm quen với cơ sở hạ tầng trên mắt bao lâu?

Qua đó chúng ta có thể nhận thấy có rất nhiều điểm hạn chế trong cách tiếp

cận triển khai và quản lý cơ sở hạ tầng theo cách thức thủ công này laS (Infrastrueture

as Code) là một giải pháp giúp giao tiếp với các hệ thống đám mây thông qua code

Từ đó việc giảm thiểu lỗi đến từ các yếu tố con người, dễ dàng triển khai logic và

quản lý các tài nguyên thông qua source code dé dang hon

2.1 Giới thiệu về các công cụ Terraform, Ansible

Terraform là một công cụ mã nguồn mở do HashiCorp phát triển, được sử dụng phổ biến trong việc quản lý cơ sở hạ tầng trong các hệ thống đám mây và on- premises thông qua lập trình Terraform cho phép người dùng định nghĩa các tài nguyên trong cơ sở hạ tầng thông như máy chủ, mạng, load balancer, cơ sở dữ liệu,

và nhiều dịch vụ khác bằng cách sử dụng ngôn ngữ định nghĩa cầu hình của riê) (HCL - HashiCorp Configuration Language)

Trang 19

Một trong những điểm mạnh của Terraform là khả năng tự động hóa việc tạo,

cập nhật và xóa các tài nguyên cơ sở hạ tầng một cách đồng nhất và nhất quán

Terraform giúp đảm bảo rằng trạng thái của cơ sở hạ tầng được mô tả khi lập trình

giống với trạng thái thực tế của hệ thống, thông qua việc sử dụng Terraform State dé

theo đối và quản lý trạng thái này

Các tính năng quan trọng khác của Terraform bao gồm:

e Idempoteney: Terraform được thiết kế để thực thỉ mã nguồn một cách

idempotent, đảm bảo rằng việc chạy mã nhiễu lần sẽ không tạo ra các thay đổi

không mong muốn trong cơ sở hạ tầng thực tế

© Module: Terraform hỗ trợ module, cho phép người dùng tái sử dụng mã nguồn

và phân chia cấu trúc cơ sở hạ tầng thành các phần nhỏ hơn, giúp tăng tính

linh hoạt và quản lý dễ dàng khi thay đổi các thành phần của từng module mà

không làm ảnh hưởng nhiều đến toàn bộ cơ sở hạ tằng

se _ Terraform Plan và Apply: Terraform cung cấp lệnh Plan để xem sự khác biệt | giữa mã nguồn và cơ sở hạ tầng trước và sau khi Apply Điều này giúp kiểm | tra mã nguồn đã được thực hiện đúng như logic của hệ thống đặt ra hay chưa,

tránh sÂy ra lỗi logic sau khi triển khai Lệnh Apply để thực hiện các thay đổi

trong mã nguồn vào cơ sở hạ tầng, giúp người dùng triển khai một cách tự

động và nhanh chóng

Ansible là một công cụ mã nguồn mở ire để tự động hóa các nhiệm vụ liên

quan đến quản lý hệ thống và cơ sở hạ tầng Ansible không yêu cầu cài đặt phần mềm

phức tạp hoặc các agent trên các máy chủ cần quản lý, mà sử dụng giao thức SSH

giữa các máy ảo để giao tiếp với nhau Điều này giúp giảm bớt sự phức tạp trong quá

trình triển khai và quản lý Với Ansible, người dùng có thể viết các tập lệnh Playbooks

sử dụng ngôn ngữ YAML để định nghĩa các công việc cần thực hiện Ansible sử dụng

SSH để kết nối và thực th tập lệnh trên các máy chủ, giúp đơn giản hóa việc quản lý

cơ sở hạ tầng và triển khai ứng dụng trên các máy chủ

Các tính năng chính của Ansible bao gồm:

Trang 20

13

e Tự động hóa cơ sở hạ tầng: Ansible cho phép tự động hóa các công việc

như cài đặt phần mềm, cấu hình hệ thống, và triển khai ứng dụng trên nhiều

máy chủ một cách đồng nhất

e_ Không yêu cầu agent: Ansible không yêu cầu cài đặt agent trên các máy

chủ cần quản lý, giảm bớt bước chuẩn bị và đảm bảo tính linh hoạt trong

triển khai Playbooks và Roles: Ansible sử dụng playbooks để định nghĩa

các công việc cần thực hiện và roles để tái sử dụng mã và quản lý cấu trúc

dự án

e Xác thực và Quản lý máy chủ: Ansible cung cấp khả năng xác thực máy

chủ và quản lý inventory để dễ dàng quản lý nhiều máy chủ từ xa

© Ca Terraform và Ansible đều hướng đến mục tiêu tự động hóa quá trình

quản lý cơ sở hạ tầng, nhưng chúng tiếp cận vấn đề từ các góc độ khác

nhau Terraform chủ yếu tập trung vào việc định nghĩa và quản lý cơ sở hạ

tầng dưới dạng mã nguồn Terraform được sử dụng để tạo, cập nhật và xóa

các tài nguyên cơ sở hạ tẦng như máy chủ, mạng, database và các tài

nguyên đám mây khác Ansible tập trung vào việc tự động hóa các công

việc thường xuyên như cài đặt phần mềm, cấu hình hệ thống, và triển khai

ứng dụng trên các máy chủ

Terraform và Ansible đều hỗ trợ tính chất idempotent, nghĩa là việc chạy lại

mã nguồn nhiều lần sẽ không tạo ra các thay đổi không mong muốn trong cơ sở hạ

tầng Cả Terraform và Ansible đều hỗ trợ tính chất idempotent, nghia là việc chạy lại

mã nguồn nhiều lần sẽ không tạo ra các thay đổi không mong muốn trong cơ sở hạ

tầng hiện tại

2.2 Các yêu cầu cơ bản của cơ sở ha tang

Các yêu cầu cơ bản để triển khai một cơ sở hạ tầng trên môi trường đám mây

bao gồm các thành phần cơ bản như: network, firewall, virtual machine, database,

slorage, Các thành phan này cần được triển khai theo các tiêu chuẩn khuyến nghị

bởi môi trường đám mây Các tiêu chuẩn này đã được để cập tại mục 1.2 Các tiêu

Trang 21

14

chuẩn triển khai với từng thành phần Phụ thuộc vào từng yêu cầu khác nhau của mỗi

cơ sở hạ tầng thì việc triển khai sẽ khác nhau, nhưng vẫn cần tuân thủ các tiêu chuẩn

được khuyến nghị như đã đề cập

Ngoài các phần phần cần thiết của cơ sé ha ting với mục đích để triển khai

ứng dụng thì cũng cần có thêm các dịch vụ khác đóng vai trò để giám sát hệ thống

đang hoạt động như:

e Cloud watch: Gidm sat các tài nguyên đang hoạt động bên trong máy chủ

như: phần trăm Ram được sử dụng, phần trăm CPU đang xử lý, tốc độ đọc

ghi ổ đĩa, Các tham số này giúp cho xác định trạng thái của máy chủ, từ

đó xác định các vấn đề lỗi khi có sự cố xẩy ra Ngoài các tham số trên thì

có thể giám sát rất nhiều các tham số khác như: tống số request đến

Loadblancer, tỉ lệ request thành công và thất bại, thời gian phản hồi trung

bình cho request là bao nhiêu Từ đó có thể dự đoán workload truy cập vào

các máy chủ, sau đó đưa ra các giải pháp về cơ sở hạ tầng để cải thiện độ

ổn định của hệ thống

e WAF (Web Application Firewall): 14 mt dịch vụ bảo vệ ứng dụng web

được cung cấp bởi các hệ thống đám mấy Dịch vụ này giúp người dùng

bảo vệ ứng dụng web khỏi các tắn công web bằng cách cho phép kiểm

soát và giám sát lưu lượng HTTP và HTTPS đến hoặc ra khỏi ứng dụng

web Từ đó đưa ra các gợi ý như ngăn trặn truy cập các IP lạ đến hệ thống

«_ Load balaneer: là một dịch vụ quan trọng giúp phân phối lưu lượng truy

cập đến các máy chủ hoặc các thành phần hệ thống khác một cách hiệu quả ỉ

và đáng tin cậy Trong các hệ thống đám mây sẽ bao gồm các loại phân tải

như: ALB (Application Load Balancer): Phân phối lưu lượng truy cập

HTTP và HTTPS tới các máy chủ hoặc điều hướng lưu lượng truy cập dựa

trên nội dung của yêu cầu HTTP NLB (Network Load Balancer): Điều

hướng lưu lượng truy cập TCP/UDP tới các máy chủ dựa trên thông tin IP

nguồn va IP đích của gói tin ELB (Classic Load Balancer): don giản hóa

Trang 22

việc phân phối lưu lượng truy cập vào các máy chủ khác nhau dựa vào port

lắng nghe trên các máy chủ Các thành phần trong load balancer bao gồm:

Aufo scaling: cho phép tự động tăng hoặc giảm số lượng các thành phần

trong hệ thống dựa trên các yêu cầu hoặc điều kiện nào đó Điều này giúp

tối ưu hóa hiệu suất của ứng dụng và giảm chỉ phí bằng cách chỉ sử dụng

tài nguyên cần thiết vào mỗi thời điểm Đồng thời tăng tính ồn định, đáp

ứng kịp thời khi workload của hệ thống tăng Auto scaling cho phép thiết

lập các ngưỡng như: tổng số request, thời gian phản hồi, phần trăm tài

nguyên sử dụng Các ngưỡng này là yếu tố để xác định hệ thống cần thêm

hay giảm số lượng máy chủ cần thiết để phục vụ wordload tại từng thời

điểm Từ đó luôn đảm bảo tính sẵn sàng của hệ thống

Target Group: là tập hợp các máy chủ cùng phục vụ một chức năng, Load

'Balaneer sẽ chuyển tiếp các yêu cầu đến nhóm máy chủ này dựa trên các

thành phần chịu tránh nghiệm lắng nghe và chuyển tiếp Thành phần này

tên là listener

Listener: là thành phần chịu trách nhiệm nghe các kết nối đến Load

Balancer trên một cổng cụ thể Listener cấu hình để chấp nhận các yêu cầu

từ người dùng và định tuyến chúng đến các máy chủ đích trong target

group

Health Check: 14 qua trinh ma Load Balancer sit dung để kiểm tra trạng

thái của các máy chủ trong Target Group Nếu một máy chủ không phản

hồi hay lắng nghe trên cổng của listener thì load balancer sẽ ngừng chuyển

tiếp lưu lượng tới máy chủ đó

Load Balancer Policies: Policies xác định các quy tắc và cách thức Load

Balancer phân phối lưu lượng truy cập giữa các máy chủ Các policies bao

gồm các thuật toán cân bằng tải như Round Robin hoặc Least Connections

Với Thuật toán Round Robin phân phối các yêu cầu từ client đến các máy

chủ theo cách tuần tự Nghĩa là mỗi yêu cầu mới sẽ được chuyển tiếp đến

máy chủ tiếp theo trong danh sách máy chủ đích Còn thuật toán Least

Trang 23

16

Connections chuyén tiép yéu cầu đến máy chủ hiện đang có ít kết nối hoặc

ít tải nhất Nó cố gắng giảm tải cho các máy chủ đang quá tải bằng cách

chuyển tiếp yêu cầu tới máy chủ đang ít kết nối hơn

- _ §ecurity Group: là một tập hợp các quy tắc bảo mật dùng đề điều chỉnh lưu

lượng truy cập đến và ra khỏi load balancer Bằng cách cấu hình security

sroup, giúp có thể kiểm soát phạm vi và kiểu giao thức mà load balancer

có thể xử lý

- Access Logs: là lịch sử chỉ tiết về lưu lượng truy cập qua load balancer,

bao gồm thông tin về các yêu câu, thời gian xử lý, và nhiều thông tin khác

Access logs được sử dụng cho mục đích giám sát và phân tích đữ liệu truy

cập theo thời gian thực

2.3 Triển khai laC dựa trên các yêu cầu

Phụ thuộc vào yêu cầu của mỗi hệ thống thì sẽ có các cách triển khai cơ sở hạ

tầng để phục vụ hệ thống đấy Nhưng các cơ sở hạ tầng này cần tuân thủ các quy tắc

của hệ thống đám mây Để hình dung dễ hiểu về cách triển khai IaC thì chúng ta sẽ

lấy một yêu cầu cụ thể trong xuyên suốt nội dung của chương 2 và thực nghiệm yêu

cầu trên trong chương 3 Nội dung chỉ tiết về yêu cầu sẽ được đề cập tại mục 2.3.2

2.3.1 Các thành phần chính trong terraform

Terraform được viết bằng ngôn ngữ lập trình Go (hay Golang) Go là một ngôn

ngữ lập trình mã nguồn mở được phát triển bởi Google, với sự chú trọng vào hiệu

suất, đơn giản và dễ đọc Việc sử dụng Go để phát triển Terraform mang lại nhiều lợi

ích như hiệu suất tốt, quản lý bộ nhớ hiệu quả và khả năng xử lý đồng thời tốt, giúp

Terraform trở thành một công cụ mạnh mẽ trong việc quản lý cơ sở hạ tầng thông qua

mã nguồn

Trong Terraform, các file có đuôi là tf chứa cầu hình dé quản lý cơ sở hạ tầng

gọi là HCL (HashiCorp

u, được thiết kế đặc biệt

thông qua Terraform được viết trong một ngôn ngữ đặc biệt

Configuration Language) HCL là ngôn ngữ đơn giản dé hi

cho việc định nghĩa cấu hình của các công cụ của HashiCorp như Terraform, Packer,

Consul, và Vault HCL dựa trên cú pháp của JSON nhưng cung cấp một cách viết

Trang 24

17

linh hoạt hơn, giúp mô tả cấu hình một cách rõ ràng và dễ hiểu hơn, từ đó các file này

giúp định nghĩa và quản lý cơ sở hạ tầng một cách hiệu quả và linh hoạt

Các file cấu hình chính trong terraform:

provider.tf: Là các cấu hình cho hệ thống cung cấp dịch vụ đám mây hoặc cơ sở hạ tầng cụ thể

main.tf: Là tệp chính chứa mã nguồn chính đề triển khai cơ sở hạ tầng

Nó thường bao gồm định nghĩa của các tài nguyên trong cơ sở hạ tầng

variables.tf: Chứa định nghĩa và khai báo các biến được sử dụng mã

đó giúp tạo ra các biến một cách linh hoạt để cấu hình và tái sử dụng

mã nguồn

output.tf: Tệp này chứa các khai báo để trả về các giá trị sau khi triển khai hay có thay đổi trong cơ sở hạ tầng, chẳng hạn như địa chỉ IP, endpoint, arn, hoặc thông tin khác có thể cần thiết cho việc sử dụng các giá trị này để sử dụng trong các thành phần khác

terraform.tfWars: Đây là tệp chứa các giá trị biến cụ thể được sử dụng trong file main.tf hoặc các file khác Thông thường, nó được sử dụng

để cung cấp giá trị cho các biến được định nghĩa trong tệp variables.tf

terraform.tfstate: Là tệp ghi lại trạng thái của cơ sở hạ tầng hiện tại được

quản lý bởi terraform File này bao gồm chỉ tiết các thành phần được

sử dụng trong cơ sở hạ tầng Các hành động về tạo mới, kiểm tra hay xóa bất kì thành phần nào đều dựa vào thông tin được ghi lại trong file

này

backend.tf: Tệp này chứa cấu hình cho nơi lưu trữ file terraform.tfState

Nếu không cấu hình gì thì file terraform.tfstate sẽ được lưu trữ ngay tại máy chạy mã nguồn terraform Nếu lưu trữ tại local thì sẽ có rất nhiều điều hạn chế như: nếu mắt file thì không thể tiếp tục chạy mã nguồn, cùng I mã nguồn nhưng không thê chạy được trên nhiều máy vì mỗi máy đang có trạng thái khác nhau Để khắc phục tình trạng trên thì file

|

:

Trang 25

18

terraform.tfstate thường được lưu trữ trên các dịch vụ đám mây như:

AWS 83, Azure Blob Storage hoặc dịch vụ lưu trữ khác Điều này giúp các máy khác nhau đều sử dụng chung một trạng thái của cơ sở hạ tầng

2.3.2 Bài toán thực tế

'Yêu cầu triển khai cơ sở hạ tầng trên hệ thống đám mây: sử dụng Amazon web

service lam hệ thông đám mây cần triển khai

'Yêu cầu về network:

e _ Hệ thống được triển khai tai vj tri dia ly la: tokio

© Mang trén được đặt trên các khu vực khác nhau đẻ đáp ứng khả năng,

chịu lỗi, nếu 1 khu vực gặp sự cố thì các khu vực khác vẫn hoạt động

trong ving vi tri dia ly Tokio

e Cac subnet cia mang bao gồm: 3 public subnet, 3 private subnet, 3

database subnet Cac tai nguyên trên private subnet không được truy cập trực tiếp từ người dùng, nhưng có thể đi ra bên ngoài internet để

kết nối đến các dịch vụ khác

'Yêu cầu về Virtual machine:

s _ Hệ thống bao gồm 2 kiểu là private và public server Với private server

được đặt trên private subnet, public server còn lại đặt trên public subnet

s_ Các private server không thể truy cập trực tiếp Vì vậy người ding chi

có thể kết nối đến private server thông qua load blancer Đồng thời load balancer đóng vai trò để phân tải cho các private server

« _ Các public server có thê kết nối trực tiếp từ người dùng

¢ Cac server str dung cần có tối thiếu cấu hình là có 1 nhân cpu, 2 gb ram

và chạy trên hệ hiều hành ubuntu

Yéu cau vé firewall:

¢ Cac tai nguyén trong cùng một mạng nếu muốn giao tiếp với nhau thì

cần sử dụng security group để kết nối, không sử dụng dia chi ip để kết nôi

Trang 26

19

e Tat ca các máy ảo đều kết nối đến cơ sở dữ liệu

Yêu cầu về database:

s _ Hệ thống sử dụng hệ quản trị cơ sở đữ liệu là mysdl

e_ Cơ sở dữ liệu phải đáp ứng khả năng chịu lỗi, khi cơ sở dữ liệu đang

chạy có vấn để hay sự cố thì phải cần có cơ sử dữ liệu mới thay thế

'Yêu cầu về storage:

© Str dung bucket dé lưu trữ các thông tin về hệ thông,

Với mỗi hệ thống có cơ sở hạ tầng với mục đích phục vụ nhu cầu nào đó từ

người dùng thì trước khi chính thức được đưa vào sử dụng thì cần phải trải qua các

giai đoạn khác nhau như:

Giai đoạn phát triển: lúc này cần cơ sở hạ tầng để phục vụ nhóm dev team phat

triển các tính năng Sau đó các tính năng của hệ thống được triển khai trên cơ sở hạ

tang này Lúc này môi trường phục vụ được gọi là môi trường development, hay viết

tắt là môi trường dev

Trang 27

Giai đoạn kiểm thử: sau khi các tính năng của hệ thống đã được phát triển, thì

các tính năng này được triển khai trên cơ sở hạ tầng khác với mục đích là kiểm thử tính logic về hệ thống, kiểm tra hiệu năng, tính chịu lỗi, ngưỡng chịu tải của cơ sở hạ

tầng Môi trường này được gọi là môi trường staging, hay viết tắt là stg

Giai đoạn phát hành: sau khi các tính năng đã triển khai và vượt qua các bài

kiểm tra về logic hệ thống, kiểm tra hiệu năng, tính chịu lỗi và ngưỡng chịu tải của

cơ sở hạ tầng thì giai đoạn cuối cùng chính là đưa hệ thống đến với người dùng TẮt

nhiên giai đoạn này được triển khai trên một môi trường khác là môi trường produetion, hay viết tắt là prd

Tóm lại với hệ thống có cơ sở hạ tầng được phát hành đến người dùng thì cần

trải qua các giai đoạn trên, Tương ứng với mỗi giai đoạn đều cần có những môi trường hay cơ sở hạ tầng tương ứng để phục vụ các nghiệp vụ cho mỗi giai đoạn

Yêu cầu về việc triển khai IaC:

5 _ Chỉ sử dụng duy nhất 1 souree code để triển khai và quản lý cả 3 môi

trường là dev, stg, prd trong xuyên suốt quá trình phát triển và bảo trì

hệ thống

s_ Sử dụng các module tương ứng với từng thành phần của cơ sở hạ tầng

Các module này bao gồm: network, firewall, virtual machine, database

Việc chia nhỏ thành các module giúp tăng tính sẵn sàng giảm thiểu sự phụ thuộc khi triển khai hay quản lý cơ sở hạ tầng Nếu thay đổi một

thành phần thì sẽ không ảnh hưởng đến các thành phần còn lại

e _ Các module về các thành phần này chỉ thực hiện các thao tác về logic,

việc truyền biến dữ liệu sẽ được gọi thông qua từng môi trường tương ứng, Điều này giúp code có thể tái sử dụng, chỉ cần viết một lần sau đó

áp dụng nhiều lần với nhiều môi trường khác nhau

e _ Các dữ liệu khi có bất kì thay đổi nào cơ sở hạ tầng sẽ được lưu trữ lại

trên bueket Điều này giúp linh hoạt trong quá trình triển khai và quản

lý cơ sở hạ tầng Từ đó có thể chạy được source code trên bất kỳ máy

Trang 28

F—— backend.tf

|-— cloud-config L—bastion vI.yaml F—— config.tf

F—— main.tf [—— output.tf F—— db

F— backend.tf F—— config.tf

—— main.tf '— output.tf

"— network

|— sp F—— backend.tf F—— config.tf F—— main.tf F— output.tf LE——vpc

F—— backend.tf F—— config.tf F—— main.tf F—— output.tf

Trang 29

C— modules

[app F—— alb F—— main.tf F—— output.tf E— variables.tf F— ©ec2

F—— main.tf

—— output.tf [F—— userdata

¬ base_vI.tpl '— variables.tf

— role F—— main.tf F— output.tf

‘— variables.tf F—— db

F— main.tf '— variables.tf network

|— sg F—— main.tf F—— output.tf '— variables.tf F—sg rule

F—— main.tf

— variables.tf

——vpc F— main.tf F—— output.tf '— variables.tf

Với từng thành phần sẽ có các mục đích như sau:

IaC: là tên của dự án cần triển khai cơ sở hạ tầng bằng source code

terraform-infra: công cụ để triển khai

aws: là hệ thống đám mây được sử dụng để triển khai cơ sở hạ tầng

environments: bao gồm 3 môi trường prd, dev và stg Các môi trường

này hoạt động độc lập với nhau suyên suốt quá trình phát triển của dự

án cần triển khai Tại từng môi trường sẽ chỉ khai báo các giá trị của tài

Trang 30

23

nguyên cần triển khai, sau đó truyền các giá trị này đến

/IaC/infta/terraform-infra/aws/module để xử lý về logic

e Theo yéu cau của việc triển khai cơ sở hạ tầng có để cập ở mục 2.3.2

thì mỗi môi trường sẽ cần có các tài nguyên về VPC, Firewall, Network,

Database Sau đó việc chúng ta chỉ cần làm và khai báo các giá trị cần

thiết với từng thành phần trên Cuối cùng thực thi các file khai báo này

thì terraform sẽ tự động triển khai tài nguyên theo đúng như yêu cầu đề

Database: chuyển biến ở trong /laC/infra/terraform-

infra/aws/environments/stg or prd or dev/db /main.tf

Storage: dit ligu về cơ sở hạ tầng được tạo ra sẽ được cấu hình

lại file backend.tf tương ứng với các thành phần trên

«_ Với từng thành phần trong cơ sở hạ tầng khi triển khai sẽ bao gồm các

file cấu hình:

config.tf: khai báo version terraform để sử dụng, hệ thống đám

mây hỗ trợ để triển khai

main.tf: khai báo các giá trị để triển khai các thành phần tương

ứng

output.tf: định nghĩa các dữ liệu cần lưu trữ

backend.tf nơi đọc và ghỉ trạng thái của các dữ liệu được định

nghĩa trong output.tF

¢ /laC/infra/terraform-infra/aws/module: sé 14 noi nhan dit liệu được

truyền từ các môi trường, sau đó xử lý logic Điều này giúp tối ưu viết

Trang 31

- sø; xử lý logic về firewall theo yêu cầu ở 2.3.2

- db: xtr ly logic vé database theo yêu cầu ở 2.3.2

2.3.4 Trién khai terraform theo yêu cầu của cơ sở hạ tẦng

Các khái niệm cơ bản:

s_ provider: khai báo tên của nhà cung cấp đám mây cần triển khai

s_ module: khai báo nơi chia các thành phần chính cần triển khai IaC

s source: định nghĩa nơi tiếp nhận xử lý logic về triển khai các thành

À

phân

s _resource: định nghĩa tên của của các thành phần trong nhà cung cấp đám mây

s _ tag: là các nhãn được gắn kèm theo với từng tài nguyên khi triển khai

Khi triển khai các “resource” khác nhau đều có những tham số bắt buộc phải

cấu hình Các tham số bắt buộc với từng thành phần có thể tham khảo tại

https://registry.terraform.io/namespaces/hashicorp là trang chủ của nhà cung cấp Terraform

Với yêu cầu vé network:

e Hệ thống được triển khai tại vị trí địa lý là: tokio

s Mang sir dung trong cơ sở hạ tầng là mạng private có phạm vi địa chỉ

ip là:

se Mạng trên được đặt trên các khu vực khác nhau để đáp ứng khả năng

chịu lỗi, nếu 1 khu vực gặp sự có thì các khu vực khác vẫn hoạt động trong vùng vị trí địa lý Tokio

s Các subnet của mạng bao gồm: 3 public subnet, 3 private subnet, 3 database subnet Các tài nguyên trên private subnet không được truy

Trang 32

}

Nhận giá trị và xử lý logic: / /aws/module/stg/network/vpe/main.tf

# Create vpc

resource "aws_vpc" "Main" { # Creating VPC here

cidr_block =var.main vpc cidr # Defining the CIDR block

instance_tenancy = "default"

tags = merge(var.vpc tags, {Name = _ format("iac-vpc-%s",

varname suffix)}, {GBL CLASS 2= "VPC"})

}

resource "aws_internet_gateway" "IGW" { # Creating Internet Gateway

vpe_id = aws_vpe.Main.id # vpe_id will be generated after

Ngày đăng: 02/07/2025, 09:26

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1]. Yevgeniy Brikman - Terraform Up and. Running (Early Release)- O'Reilly Media (2017) Khác
[2]. John Rittinghouse, James Ransome - Cloud Computing_ Implementation, Management, and Security-CRC Press (2009) Khác
[3]. Kief Morris - Infrastructure as Code_ Managing Servers in the Cloud- O'Reilly Media (2015) Khác
[4]. Bradley Campbell - The Definitive Guide to AWS Infrastructure Automation _ Craft Infrastructure-as-Code Solutions-Apress (2020) Khác
[5]. Systems and Virtualization Management. Standards and the Cloud: Third International DMTF Academic Alliance Workshop, SVM 2009, Wuhan, China, September 22-23, 2009. Revised Selected Papers [1 ed.] Khác

HÌNH ẢNH LIÊN QUAN

Hình  2.1:  Kiến  trúc  sau  khi  triển  khai  lên  hệ  thông  đám  mây  2.3.3.  Xác  định  các  yêu  cầu  về  triển  khai  terraform - Tự Động hóa cấu hình và triển khai cơ sở hạ tầng trong hệ thống Đám mây
nh 2.1: Kiến trúc sau khi triển khai lên hệ thông đám mây 2.3.3. Xác định các yêu cầu về triển khai terraform (Trang 26)
Hình  3.1:  Luông  triển  khai  laC  lên  hệ  thống  đám  mây  Việc  triển  khai  IaC  giúp  có  thể  triển  khai  và  quản  lý  cơ  sở  hạ  tầng  bằng  source - Tự Động hóa cấu hình và triển khai cơ sở hạ tầng trong hệ thống Đám mây
nh 3.1: Luông triển khai laC lên hệ thống đám mây Việc triển khai IaC giúp có thể triển khai và quản lý cơ sở hạ tầng bằng source (Trang 46)
Hình  3.3:  Trạng  thái  sau  khi  triển  khai  laC  của  VPC - Tự Động hóa cấu hình và triển khai cơ sở hạ tầng trong hệ thống Đám mây
nh 3.3: Trạng thái sau khi triển khai laC của VPC (Trang 49)
Hình  3.4:  Trạng  thái  ban  đầu  của  SG - Tự Động hóa cấu hình và triển khai cơ sở hạ tầng trong hệ thống Đám mây
nh 3.4: Trạng thái ban đầu của SG (Trang 49)
Hình  3.5:  Trạng  thái  sau  khi  triển  khai  laC  của  SG - Tự Động hóa cấu hình và triển khai cơ sở hạ tầng trong hệ thống Đám mây
nh 3.5: Trạng thái sau khi triển khai laC của SG (Trang 50)
Hình  3.6:  Trạng  thải  ban  đâu  của  EC2 - Tự Động hóa cấu hình và triển khai cơ sở hạ tầng trong hệ thống Đám mây
nh 3.6: Trạng thải ban đâu của EC2 (Trang 50)
Hình  3.7:  Trạng  thái  sau  khi  triển  khai  laC  của  EC2 - Tự Động hóa cấu hình và triển khai cơ sở hạ tầng trong hệ thống Đám mây
nh 3.7: Trạng thái sau khi triển khai laC của EC2 (Trang 51)
Hình  3.9:  Trạng  thái  ban  đầu  của  RDS - Tự Động hóa cấu hình và triển khai cơ sở hạ tầng trong hệ thống Đám mây
nh 3.9: Trạng thái ban đầu của RDS (Trang 52)
Hình  3.11:  Lưu  trữ  dữ  liệu  trên  S3 - Tự Động hóa cấu hình và triển khai cơ sở hạ tầng trong hệ thống Đám mây
nh 3.11: Lưu trữ dữ liệu trên S3 (Trang 53)

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w