Chuyển đến nội dung chính

Terraform là gì ? Tại sao DevOps cần phải biết.

Chắc hẳn các bạn DevOps cũng như developer hay Solution Architect đã từng nghe qua và làm việc với terraform. 




Vậy terraform là gì ? 

Terraform là công cụ mã nguồn mở của công ty HashiCorp, công ty này theo mình nhớ thì có nhiều sản phẩm mã nguồn mở cho anh em DevOps xài như : Consul, Packer, Vargant, .... 

Terraform chưa phải là ngôn ngữ mà theo mình thì terraform có dạng theo script language hoặc nó là configuration language. Scripting language như chúng ta biết là : Bash script, Powershell, python script, perl script, ..... 

Terraform là theo dạng configuration language hơn là một scripting language. Nó được định nghĩa là : 

 HashiCorp Configuration Language (HCL) .

Theo minh thấy thì terraform hiện nay các công ty đang cần nhiều và có xu hướng chuyển sang dùng terraform bởi vì : 

+ Terraform hỗ trợ nhiều cloud platform như : AWS amazon web service, Azure Microsoft, Google CLoud và cả như VMWare, Digital Ocean,.... 

+ Cấu trúc đơn giản, có thể lên copy trên terraform.io là có thể chạy được, nhưng phức tạp hơn khi bạn sử dụng module cho terraform. 

+ Terraform liên tục được update version và hiện tại version của terraform là : 1.0 

+ Terraform là IaC hỗ trợ mạnh mẽ các cloud và tích hợp với nhiều công cụ CI/CD.

+ Có cộng đồng người sử dụng lớn. ...  

.... và còn nhiều ưu điểm mà mình chưa khám phá ra hết nữa :D 

Thông thường khi chạy terraform thì bạn cần chạy 3 câu lênh sau : 

1. terraform init : cài đặt các module trong code của bạn. 

2. terraform plan : vừa check xem là code có bị lỗi gì không ? cấu trúc code có sai không ? liệt kê các công việc cho việc deploy ra như : thêm vào cái gì, thay đổi cái gì và xóa (destroy) cái gì. 

3. terraform apply : là phần deploy code của bạn lên môi trường.

Trái tim chính của terraform là file : main.tf , file này là trung tâm định nghĩa các resource, provider, ... gọi là các block. 

Ví dụ một file main.tf như sau: 


terraform { required_providers { aws = { source = "hashicorp/aws" version = "~> 3.27" } } required_version = ">= 0.14.9"} provider "aws" { profile = "default" region = "us-west-2"} resource "aws_instance" "app_server" { ami = "ami-830c94e3" instance_type = "t2.micro" tags = { Name = "ExampleAppServerInstance" }}


Trong đó các block như terraform, provider, resource định nghĩa các version của terraform yêu cầu là version nhiêu ? module cần cài để chuẩn bị deploy lên một cloud là cloud nào. 

Các block khác khai báo những giá trị cần thiết khác. 

Khi bạn deploy 1 terraform lần đầu tiên thì nó ghi lại trong 1 file state, bạn có thể để file state này chổ nào đó an toàn, vì khi lần deploy thứ 2 terraform sẽ dựa vào deploy trước đó để xem có thêm, xóa, thay đổi gì không so với là trước đó. 

Trong khi làm thì mình hay để file này trên S3 bucket của AWS hoặc blob của Azure. 

Bạn có thể xem  state bằng câu lệnh: terraform state list 

 Và còn rất nhiều câu lệnh nữa mình sẽ nói trong bài sau, ... 

Nhận xét

Bài đăng phổ biến từ blog này

Trang web medium.com chết, vì sao ?

 Medium.com là trang web có những bài viết về IT, phần mềm và công nghệ nói chung rất phổ biến và chất lượng.  Nhưng khoảng 1 tuần nay không vào được bằng cả mạng viettel và 4G của Mobi phone.  Dân It thường tham khảo các bài viết trên trang này. Nhiều bài viết hay và chất lượng. là một cơ sở dữ liệu lớn cho dân IT nhưng đã bị chặn.  Các bài viết này thường thì có tính quy chuẩn và dài hơn, các topic có chất lượng hơn so với stackoverflow.  Nhưng các subdomain thì vẫn truy cập được như:  https://about.medium.com Bạn có thể tham khảo lý do vì sao medium.com bị chặn ở Việt nam. tại trang tinh tế:  Nói chung mình không thích điều này.  https://tinhte.vn/thread/website-medium-khong-truy-cap-duoc-la-do-website-chet-hay-chan-ip-viet-nam-nhi.3231608/

Cách sử dụng sys.argv trong python.

Cách sử dụng sys.argv trong python. sys.argv là môt danh sách [list] trong python, nó được sư dụng khi bạn chạy một lệnh command-line nào đó trên hệ thống. Và argument này được đẩy vào script python để thực thi khi chạy câu lệnh. Ví dụ: python sys.argv arg1 arg2 Trước tiên bạn phải import mô đun sys trong script. import sys print "This is the name of the script: " , sys . argv [ 0 ] print "Number of arguments: " , len ( sys . argv ) print "The arguments are: " , str ( sys . argv ) Tên của script này : sysargv.py Số lượng arg là : 1 Arg là : ['sysargv.py'] python test1020.py 111 This is the name of the script:  test1020.py Number of arguments:  2 The arguments are:  ['test1020.py', '111']

GitHub Actions là gì ? Làm quen với GitHub Actions.

  Như ta đã biết github là nới chứa source code nổi tiếng thế giới hiện nay, ngoài github còn có gitlab, bitbucket, codecommit, ... Cơ bản github miễn phí cho người dùng developer, nếu nhu cầu sử dụng nhiều repo cũng như project có nhiều thanh viên developer tham gia thì bạn có thể mua bản nâng cao.  Về tiến trình CI/CD process, chúng ta có thể biết tới như Jenkins, Team City, Codepipeline trên AWS, ...  GitHub Actions mới ra đời gần đây , ngày 13 tháng 11 năm 2019, GitHub Actions ra phiên bản đầu tiên, trước đó khoảng 1 năm bản beta ra đời.  Tham khảo tại đây : https://github.blog/2019-08-08-github-actions-now-supports-ci-cd/ GitHub Actions khá đơn giản, khi tiến trình build, test và deploy được viết trong một file có định dạng yaml nằm trong thư mục .github/workflows/ trong chính source code của bạn.  GitHub Actions là một event-driven nghĩa là chương trình chạy một loạt các dòng lệnh khi bạn nhận được 1 event, ví dụ mỗi lần một developer nào đó tạo một pull request cho một repositor