Tổng Quan
AWS CloudFormation là một công cụ quản lý hạ tầng dưới dạng mã (Infrastructure as Code - IaC) giúp người dùng dễ dàng tạo, quản lý và cấp phát hạ tầng trên nền tảng AWS. Công cụ này cho phép bạn mô tả cấu trúc hạ tầng của bạn thông qua các template được viết ở định dạng YAML hoặc JSON.
Các Khái Niệm Căn Bản
Khi sử dụng AWS CloudFormation, bạn cần nắm vững một số khái niệm sau:
- Template file: Được coi như kế hoạch chi tiết cho hạ tầng AWS, có thể viết dưới dạng .yml hoặc .json.
- Stacks: Mỗi stack tương ứng với một hạ tầng cụ thể, bao gồm tất cả các tài nguyên AWS được mô tả trong template. Khi bạn khởi tạo, cập nhật hoặc xóa tài nguyên, thực tế bạn đang thao tác với stack của CloudFormation.
- Change sets: Bộ thay đổi được định nghĩa cho stack hiện tại. Change set cho phép bạn xem trước các thay đổi trong hạ tầng trước khi áp dụng.
Cấu Trúc CloudFormation Template
Trong phần này, chúng ta sẽ đi sâu vào từng mục trong file template.
Mô Tả (Description) (tùy chọn)
Mục này cho phép bạn tóm tắt thông tin về template. Ví dụ:
Description: >-
Mẫu template AWS CloudFormation.
Thông tin chi tiết về
template này.
Tham Số (Parameters) (tùy chọn)
Xác định các tham số để truyền vào file template khi khởi tạo hạ tầng. Ví dụ:
Parameters:
InstanceTypeParameter:
Type: String
Default: t2.micro
AllowedValues:
- t2.micro
- m1.small
- m1.large
Description: Nhập t2.micro, m1.small, hoặc m1.large. Mặc định là t2.micro.
Hàm (Functions)
Hàm trong template cho phép bạn tương tác với dữ liệu. Một số hàm phổ biến bao gồm:
- Fn::And: Thực hiện các điều kiện AND.
- Fn::Contains: Kiểm tra một giá trị có nằm trong một danh sách hay không.
- Fn::Equals: So sánh hai giá trị.
- Fn::Not: Đảo ngược giá trị điều kiện.
Bản Đồ (Mappings)
Khai báo các biến trong cấu trúc map.
Mappings:
RegionMap:
us-east-1:
"HVM64": "ami-0ff8a91507f77f867"
Điều Kiện (Conditions)
Định nghĩa các biến điều kiện trong file template, sử dụng trong việc khởi tạo tài nguyên.
Conditions:
isProd: !Equals [!Ref paramEnvironmentType, prod]
Tài Nguyên (Resources)
Đây là phần quan trọng nhất, nơi định nghĩa các tài nguyên cần khởi tạo.
Resources:
Logical ID:
Type: Resource type
Properties:
Set of properties
Quản Lý Hạ Tầng với AWS CLI
Sau khi có file template, bạn có thể quản lý hạ tầng qua AWS CLI. Một số lệnh cơ bản:
- Xác thực template:
aws cloudformation validate-template --template-body file://template.yml
- Khởi tạo stack:
aws cloudformation create-stack --stack-name myteststack --template-body file://template.yml --parameters ParameterKey=Parm1,ParameterValue=test1
- Lấy thông tin stack:
aws cloudformation describe-stacks --stack-name myteststack
Kết Luận
Trong bài viết này, chúng ta đã khám phá tổng quan về AWS CloudFormation, cách sử dụng file template, cùng các lệnh trong AWS CLI để tương tác với CloudFormation. Hy vọng bài viết này sẽ hữu ích cho bạn trong việc quản lý hạ tầng AWS một cách hiệu quả nguồn lực.
source: viblo