DevOps AI
  • Home
  • Bảo mật
  • AI & Automation
  • DevOps & Cloud
  • Bộ đề luyện thi cloud
No Result
View All Result
DevOpsAI
  • Home
  • Bảo mật
  • AI & Automation
  • DevOps & Cloud
  • Bộ đề luyện thi cloud
No Result
View All Result
DevOpsAI
No Result
View All Result
Home DevOps & Cloud

Tản mạn về IaC là gì

Trãi nghiệm về IaC

Quân Nguyễn by Quân Nguyễn
25 Tháng 4, 2025
in DevOps & Cloud
0
Share on FacebookShare on Twitter

IaC là gì hay Infrastructure As Code là gì, là một thuật ngữ nói về cơ sở hạ tầng được định nghĩa dưới dạng code, Infrastructure ở đây có nghĩa là những gì mà bạn sẽ sử dụng, và bạn định nghĩa những thứ đó dưới dạng code, sau đó bạn đưa code đó cho provider, và họ sẽ đưa cho bạn đúng những gì mà bạn yêu cầu, provider ở đây có thể là cloud provider như AWS, Azure, GCP, hoặc bạn không dùng cloud thì ở data center cũng có một số provider như Openstack, vsphere. còn nếu bạn tự build một con server nhỏ, dùng ansible để cài cắm cấu hình server, deploy app thì dùng docker, thì đó cũng là một dạng của IaC.

Lợi ích của việc dùng IaC

Đầu tiên bạn cần hiểu khái niệm về Mutable Infrastructure và Immutable Infrastructure, giả sử bạn deploy một con ec2 trên AWS, bạn cài nginx version 1,0, sau đó bạ nhận được yêu cầu update nginx lên version mới hơn, bạn sẽ làm gì?

Nếu bạn truy cập vào con server và tiến hành update version nginx lên, thì đó là Mutable Infrastructure nhược điểm của cách làm này đôi lúc update sẽ ảnh hưởng đến nhưng package khác trong hệ thống, hoặc sự tương thích giữa các package, và khi có như cầu rollback thì sẽ không được.

Còn Immutable Infrastructure thì sao? đó là bạn sẽ deploy một con ec2 khác song song với con ec2 hiện tại cùng với nginx version mới, nếu có vấn đề gì trong lúc deploy app thì bạn vẫn có thể  quay trở về bản con ec2 cũ với nginx version cũ. Khi hiểu IaC là gì thì bạn sẽ dễ dàng dùng hơn trong việc xác định trạn thái của hệ thống. Cũng như dễ dàng đưa ra chiến lược nâng cấp cũng như hạ cấp hệ thống.

Related Post

cdk terraform

CDK cho Terraform

29 Tháng 4, 2025

Tổng quan về Cloudformation

13 Tháng 6, 2022

Terraform template là gì?

14 Tháng 5, 2022

Cách khởi tạo Terraform module

25 Tháng 4, 2025

Bạn cũng sẽ giảm thiểu được những sai sót trong nếu như bạn làm bằng tay, và cũng như dẽ dàng hơn trong việc tự động hóa quy trình deploy infra.

Các công cụ IaC

Hiện nay có khá nhiều công cụ, nhưng nổi tiếng nhất là Terraform, mình cũng có một vài bài viết về công cụ này, ngoài ra còn có Cloudformation là một service của AWS và một số công cụ khác, ngoài ra còn có thể loại khác là IiC ( cái này mình tự đặt) là Infrastructure is Code dùng CDK là một thư viện của cloud provider, cho phép bạn có thể định nghĩa hạ tầng của bạn bằng các ngôn ngữ lập trình như python, C#, .net.  Trong số các công cụ mà mình đã từng làm việc qua thì có Terraform và Cloudformation

Terraform

Khi bắt đầu hành trình devops, Terraform là cái tên được nhắc đến nhiều nhất, khi làm việc với Terraform bạn sẽ tập làm quen với ngôn ngữ HCL, nó có một số hàm build-in sẵn để hổ trợ trong việc sử lý dữ liệu, hay một vài vòng lặp, câu điều kiền, nói chung là trong quá trình trãi nghiệm thì mình thấy mấy cái này đủ dùng. bạn có thể định cấu hình input là một dạng array (mảng) sau đó dùng vòng lặp duyệt qua từng phần tử trong mảng và tạo ra các resource tương ứng.

Khi làm việc với Terraform, bạn sẽ làm việc với file .tf, bạ có thể tách nhỏ từng thành phần của hệ thống của bạn thành từng file riêng lẻ, khi deploy, Terraform sẽ biên dịch các file này và sau đó kiểm tra trạng thái hiện tại của hệ thống thông qua file state, đối chiếu với trạng thái từ code mà bạn mới thêm vào, tìm ra những sự thay đổi, tùy vào sự thay đổi mà Terraform  sẽ thay đổi cấu hình của resource đó, hoặc xóa đi tạo lại resource mới thông qua API của prodvider, nói đến đây bạn có thể hiểu là thay vì dùng CDK thư viện của provider, nếu bạn không hề biết code, thì ngôn ngữ HCl sẽ dễ học và làm quen hơn, vì bản chất đều là gọi vào API của provider.

Terraform giữ trạng thái của nó trong một tệp. Tệp này có thể được lưu trữ trên đĩa, hoặc ở s3. Một điều đặt biệt mà trong Terraform là quản lý sự trôi dạt cấu hình. Tức là bạn quản lý cấu hình thông qua IaC, nhưng một ai đó (dev chẳng hạn) thực hiện cấu hình bằng tay trên hạ tầng mà bạn đang quản lý, khi bạn chạy ‘Terraform plan‘, nó sẽ tìm nạp trạng thái thực tế mới nhất của cơ sở hạ tầng và so sánh nó với trạng thái mong muốn, được xác định trong file cấu hình và  file state phản ánh trạng thái thực tế khi  bạn chạy ‘Terraform apply‘ lần cuối cùng. Nếu cơ sở hạ tầng của chúng tôi không còn phù hợp với trạng thái mong muốn (thường là do một số thay đổi manual), Terraform sẽ tính toán sự khác biệt và đề xuất đưa trạng thái hạ tầng trở lại phù hợp với những gì được mô tả trong cấu hình của chúng tôi bằng cách hoàn nguyên các thay đổi manual.

Input của Terraform  có thể là biến môi trường, hoặc là file variables.tf, từ phiên bản 0.13 đã có hổ trợ lấy data từ file state, tức là bạn tạo resource ở một project khác, bạn có nhu cầu sử dụng chung resource này cho nhiều project, à bạn muốn lấy những cái id của resource, thì terraform_remote_state sẽ giúp bạn làm được điều này một cách dễ dàng.

Một số vẫn đề của Terraform là version, mỗi khi có version mới thì syntax cũng sẽ có cập nhật hoặc là bạn phải giữ cho version của Terraform  được nhất quán ở các môi trường development và môi trường CI. để làm được điều này bạn cần sư dụng đến công cụ có tên là TFenv.

Terraform còn hổ trợ module giúp bạn có thẻ tận dụng tối đa code của bạn, giúp code DRY (don’t repeat yourself), những  Terraform vẫn có nhưng hạn chế về mặt tổ chức code, và bạn sẽ cần dùng đến một công cụ khác bổ trợ cho Terraform là Terragrunt.  Hoặc xây dựng workflow với Atlantis.

CloudFormation

Đại diện này đến từ nhà AWS, tất nhiên là nó chỉ dùng cho AWS thôi thay vì multiple provider như Terraform, khi làm việc với CloudFormation, trãi nghiệm khá là tệ, CloudFormation dùng ngôn ngữ yaml, nó hổ trợ một vài build-in function để đọc, lấy data từ các resource khác, ngoài ra không có hổ trợ vòng lặp, nếu bạn muốn tạo resoủce thì bạn phải lặp lại code rất nhiều điều đó dẫn đến bạn phải làm việc với một file yaml khá là dài lên đến vài nghìn dòng, đúng là một trải nghiệm cực hình, nó xứng đáng với tên gọi là Infrastructure As Text. 

Input được đưa vào dứoi dạng parammeter, ngoài ra bạn có thêm một tùy chọn khác là lấy parammeter store (một service lưu trử parammeter dứoi dạng alias).

Làm việc với CloudFomation là bạ sẽ làm việc với từng stack

Tags: iacinfrastructure as code
Quân Nguyễn

Quân Nguyễn

Related Posts

cdk terraform
DevOps & Cloud

CDK cho Terraform

by Quân Nguyễn
29 Tháng 4, 2025
Tin tức

Tổng quan về Cloudformation

by luuthanhtu
13 Tháng 6, 2022
Tin tức

Terraform template là gì?

by Quân Nguyễn
14 Tháng 5, 2022
Next Post

Connection string

Để lại một bình luận Hủy

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Recommended

Tổng hợp các phiên bản Stable Diffusion: So sánh, tính năng và yêu cầu phần cứng

Tổng hợp các phiên bản Stable Diffusion: So sánh, tính năng và yêu cầu phần cứng

13 Tháng 6, 2025
Cài đặt Maven trên Windows

Cài đặt Maven trên Windows

11 Tháng 6, 2025
Các website demo hay được sử dụng cho thực hành Automation Test

Các website demo hay được sử dụng cho thực hành Automation Test

11 Tháng 6, 2025
Sử dụng VS Code và Playwright MCP tự động test demo website Demoblaze thông qua GitHub Copilot Agent

Sử dụng VS Code và Playwright MCP tự động test demo website Demoblaze thông qua GitHub Copilot Agent

16 Tháng 6, 2025
Sử dụng VS Code và Playwright MCP tự động test demo website Demoblaze thông qua GitHub Copilot Agent

Sử dụng VS Code và Playwright MCP tự động test demo website Demoblaze thông qua GitHub Copilot Agent

16 Tháng 6, 2025
MCP server 2025 tốt nhất : Hướng dẫn chọn & bảo mật

MCP server 2025 tốt nhất : Hướng dẫn chọn & bảo mật

16 Tháng 6, 2025
DevOpsify Check Tool hỗ trợ MCP – Tự động hóa kiểm tra qua AI Claude & VS Code

DevOpsify Check Tool hỗ trợ MCP – Tự động hóa kiểm tra qua AI Claude & VS Code

13 Tháng 6, 2025
GitHub Action DevOpsify Check Tool – Tự động kiểm tra bảo mật & hiệu suất

GitHub Action DevOpsify Check Tool – Tự động kiểm tra bảo mật & hiệu suất

11 Tháng 6, 2025
DevOpsify

Cộng đồng DevOps Việt Nam chia sẽ kiến thức giúp tăng tốc quá trình phát triển ứng dụng và tự động hóa trong lĩnh vực Cloud DevOps & AI.

Bài viết mới

  • Sử dụng VS Code và Playwright MCP tự động test demo website Demoblaze thông qua GitHub Copilot Agent
  • MCP server 2025 tốt nhất : Hướng dẫn chọn & bảo mật
  • DevOpsify Check Tool hỗ trợ MCP – Tự động hóa kiểm tra qua AI Claude & VS Code

Categories

  • AI & Automation
  • Bảo mật
  • Chưa phân loại
  • DevOps & Cloud
  • Tin tức
No Result
View All Result
  • Home
  • Bảo mật
  • AI & Automation
  • DevOps & Cloud
  • Bộ đề luyện thi cloud

© 2025 DevOpsify