IaC Quick start guide

Để đỡ phải cứ next next mất thời gian với những resource mà có thể sẽ tạo đi tạo lại nhiều lần, hoặc không muốn cứ mỗi lần định cài đặt package gì đó là lại GG “How to install abcxyz” → thì cách đỡ tốn thời gian nhất là IaC, viết 1 lần dùng n lần!

Dùng CloudFormation:

Cách dùng thì cũng đơn giản, chẳng hạn muốn tạo 1 template gồm có ALB, ALB listener và ALB target group thì sau khi cài đặt, chạy CLI:


cfn-skeleton -i AWS::ElasticLoadBalancingV2::LoadBalancer AWS::ElasticLoadBalancingV2::Listener  AWS::ElasticLoadBalancingV2::TargetGroup

Sau đó thì chỉ việc copy cái template được gen ra, sửa các giá trị được đánh dấu CHANGEME thành giá trị mong muốn.

Resouces references:

docs.aws.amazon.com/AWSCloudFormation/lates..

Dùng Terraform, Ansible:

  • Terraform: tương tự như CFn (nhưng được đánh giá ngon hơn CFn và multi-cloud được), Terraform cũng là tool để provision ra resource.

  • Ansible: scripts để cài đặt các package cho các servers, cơ chế hoạt động là sẽ tự động SSH vào các server được define trong file hosts và chạy các câu lệnh cài đặt, configure.

Guide để bắt đầu với Ansible – Terraform (validated by me):

https://yentrinh.hashnode.dev/set-up-ansible-terraform-serverspec-amz-linux-2

https://yentrinh.hashnode.dev/how-to-install-and-configure-to-use-ansible

Memo:

  • Với Terraform thì lười không viết code thì cứ gọi modules vào là đc. Muốn viết code nhưng lười nhớ thì lên docs hoặc đi copy code ở github modules về dùng, Terraform là ngôn ngữ declarative nên copy thoải mái! Cách search để copy code hoặc sử dụng module: Terraform <tên dịch vụ> module (GitHub). VD: Terraform VPC module hoặc Terraform VPC module github. Một số example: https://github.com/hashicorp/terraform-provider-aws/tree/main/examples

  • Ansible thì viết 1 lần dùng cho cả chục dự án, mà github cũng nhiều roles được tạo sẵn lắm, tự viết thì tốt hơn, mà lười thì cứ clone code về tổng hợp vào là có 1 bộ playbook để dùng. Ansible thực ra có thể tạm hiểu chỉ đơn giản là các câu lệnh cài đặt được declare, sắp xếp lại cho thành kịch bản, nên copy cũng thoải mái luôn!

Terraform docs:

registry.terraform.io/providers/hashicorp/a..

Ansible docs:

docs.ansible.com/ansible/latest/user_guide/..

Cách em vẫn thường làm:

Configure hết những thứ cần thiết trên 1 con EC2 instance, sau đó tạo Custom AMI từ con instance đó, lúc nào cần thì launch instance từ AMI đó, rồi SSH vào, chạy code. Dùng xong lại Terminate đi, vừa nhanh, gọn, đỡ tốn tiền, lại tránh việc quên resource.

Memo:

Đừng quên AMI có thể được cp sang region khác và share cho tài khoản AWS khác 🤫🤫🤫

Share an AMI with specific AWS accounts:

docs.aws.amazon.com/AWSEC2/latest/UserGuide..