“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 2TỰ ĐỘ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 4LOI 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 5CHUGONG 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 10CHƯƠ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 111.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 12dụ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 13Nhung 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 14giao 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 1811
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 19Mộ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 2013
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 2114
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 22việ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 2316
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 2417
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 2518
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 27Giai đ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 28F—— 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