+4

Pulumi series - Bài 0 - Pulumi và infrasructure as Code

Giới thiệu

Infrastructure as Code là cái gì

Infrastructure as Code nôm na có thể hiểu là viết code để mô tả và cung cấp infrastructure của chúng ta.

Infrastructure chính là những thứ như hệ thống máy chủ, ec2, mạng, database ... mỗi máy chủ có nhưng config mạng, security riêng phức tạp ... tiếng việt gọi là cơ sở hạ tầng Ví dụ thay vì sử dụng UI của aws để tạo ec2, vps , load balancer các kiểu thì bây giờ chúng ta sẽ viết code để tạo chúng.

Đến đây bạn có thể dễ dàng hình dung lợi ích của infrasructure , việc chung ta config bằng tay và nếu có việc phải lặp lại có thể gây sai sót, và phức tạp, lặp đi lặp lại. Rồi nếu chung ta quên document, hoặc viết sai thì sao = > infrastructure as Code cơ bản chính là document của cả hệ thống của chúng ta, mô tả lại chính xác nhưng gi chúng ta có.

Tóm gọn lại

Lợi ích của việc sử dụng Infrastructure as Code:

  • Giảm thiểu rủi ro.
  • Tôi ưu resource.
  • Duy trì môi trường ổn đinh, nhất quán và dễ dàng triển khai.
  • Tài liệu hóa infrastructure.

những đặc trưng của 1 Infrastructure as Code

Có nhiều infrastructure as code hiện này như

  • Teraform
  • Ansible
  • Pulumi
  • Heat
  • Chef
  • CloudFormation

Nhìn chung để so sánh giữa chúng, thường có những đặc trưng sau đây

Type: config management vs Provisioning

config management tool tiêu biểu như là ansible và saltstack ... đặc điểm của chúng thiết kế giúp chúng ta config trên nhưng server có sẵn. Provisioning được thiết kế thiên hơn để xây dựng và provising.

Mutable vs Ummutable

Hiểu đại loại như sau: Mutable: có thể thay đổi thủ công, theo cách truyền thống. immutable: không sao giờ được sửa đổi sau khi triển khai.

ví dụ bạn có ec2 2cpu, 1 core => và bạn sử dụng terraform để tạo ra chúng, sau mỗi lần thay đổi như 1 core => 2 core, bạn cần tiếp tục sử dụng teraform để update chúng. việc bạn can thiệp bằng UI để thay đổi ec2 có thể khiến teraform không hiểu được trạng thái hiện tại và không hoạt động như mong muốn => Ummutable

Trong khi config management như Ansible có thể làm được việc này

pull vs push vs push & pull

push:bạn có instructions script gì đó, từ máy của mình bạn bấm nút => push lên server và thực thi

pull: ví dụ như Chef, sẽ được thực thi từ máy server, pull instructions scripts về.

nói chung cũng đơn giản.

approach delarative vs imperative ( nhiều docs gọi là Procedural , ý nghĩa cũng như nhau)

imperative(Procedural): bạn phải viết script step by step , tiếng việt gọi là lập trình mệnh lệnh delarative: Code của bạn chính là kết quả cuối cùng , lập trình khai báo ví dụ cho dễ hiểu

delarative:

    want : 3 eggs

=> tool đưa cho bạn 3 quả trứng

sau đó bạn update

    want : 5 eggs

=> tool hiểu, thèn này muốn 5 quả trứng, hôm bữa mình có đưa cho nó 3 quả rồi, giờ đưa 2 quả nữa. , đại loại là bạn khai báo nhưng gì bạn muốn

imperative: cũng tương tự như trên đổi với kiểu imperative (lập trình mệnh lệnh)

  • ban đầu tool đưa bạn 3 quả trứng, sau đó đưa thêm 5 quả nữa => 8 => kêu cái gì thì tôi làm cái đó

Language

cái này thì quá trời: ruby, yaml,python, typescript, HCL ...

image.png

nguồn tại đây nhé https://alpacked.io/blog/infrastructure-as-code-for-devops/

Pulumi

Từ mấy kiến thức và cái bản phía trên chắc bạn cũng hình dung được Pulumi là gì

  • Là 1 Infrastructure as Code
  • Type Provisioning,
  • Immutable
  • Push method
  • Declarative
  • và sử dụng 1 đống ngôn ngữ: JS,TS,Python, Go, C# ....

Tại sao dùng Pulumi và giới thiệu về series này

Terraform là 1 Provisioning Infrastructure as Code nổi tiếng, có thể gọi là top 1 hiện nay cũng không sai.

Điểm khác biệt nổi bật giữa terraform và pulumi mà chúng ta dễ dàng nhìn thấy chính là ngôn ngữ, terraform sử dụng HCL, 1 ngôn ngữ đặc tả provison được phát triển riêng cho nó, với nhưng syntax gói gọn. trong khi pulumi sử dụng chính những program language mà chúng ta sài hàng ngày ts,js, python

=> vậy việc sài pulumi nghe có vẻ tiện lợi hơn, dễ học và dễ tiếp cận hơn, tôi cũng không chắc nữa, series này chính là quá trình tự học pulumi của tôi với 2 ngôn ngữ chính mà tôi sử dụng là python vs typescript, và với aws cloud. tôi sẽ so sánh nó trực tiếp với terraform qua từng bài viết, để đi tơi kết luận cuối cùng. Vì đây là series vừa tự học vừa viết, nên các kiến thức có thể sai 😃, mong được mọi người góp ý và sữa đổi


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí