CloudFormation là ngôn ngữ cho phép bạn khởi tạo tài nguyên trên môi trường Cloud. Mã code là các file định dạng YAML hoặc JSON.
Trong bài viết này chúng tôi hướng dẫn các bạn việc tạo máy chủ EC2 bằng Cloud Formation và giải thích các khái niệm liên quan để bạn có thể hiểu rõ hơn về cách thức hoạt động của Cloud Formation.
Chúng ta cùng nhau đi vào phân tích 1 ví dụ cụ thể để hiểu được các khái niệm liên quan đến Cloud Formation.
Khai báo EC2 Instance
- Type: ánh xạ với loại tài nguyên đang cần tạo
- Properties: là đặc tính của tài nguyên đó
Tài nguyên EC2 Instance này trình bày một vài cách sử dụng Ref. Ref là một cách để gọi đến các giá trị từ các phần khác của mẫu. Ví dụ, Ref: InstanceSecurityGroup gọi đến đến tài nguyên duy nhất khác trong mẫu này, nhóm SecurityGroup sẽ được tạo. Dưới đây là định nghĩa của tài nguyên đó:
Ref: InstanceType
cũng đề cập đến những tham số InstanceType có thể được truyền vào. Phần Tham số level cao nhất là nơi tham số InstanceType đến từ đó. Hãy xem phần đó của mục Parameter:
Tạo Cloud Formation stack
Bạn có thể thấy rằng tham số mặc định cho kiểu Instance EC2 để khởi tạo là t2.small. Bạn có thể ghi đè giá trị này khi bạn khởi động instance nếu bạn muốn. Đối với các tham số có giá trị mặc định, bạn không cần phải cung cấp tham số. Đối với các tham số không có giá trị mặc định, bạn sẽ cần phải cung cấp giá trị. Trong template cụ thể này, tham số bắt buộc duy nhất là KeyName
. KeyName
là sử dụng ssh key để truy cập vào instance. Bạn có thể tạo khóa ssh bằng menu EC2 Console trong “Key Pairs”. Với hướng dẫn này, tôi đã tạo ra một tutorial keypair và sẽ sử dụng nó.
- $ aws cloudformation create-stack –template-body file://templates/single_instance.yml –stack-name single-instance –parameters ParameterKey=KeyName,ParameterValue=tutorial ParameterKey=InstanceType,ParameterValue=t2.micro
Sau khi bật thành công Stack CloudFormation, bận sẽ thấy output giống như sau:
- {
- “StackId”: “arn:aws:cloudformation:us-west-2:1606191131234:stack/single-instance/3401e900-3d83-11e7-bb7e-503f2a2cee4a”
- }
Xóa Cloud Formation Stack
- aws cloudformation delete-stack –stack-name single-instance
Hàm tham chiếu nội tại
AWS CloudFormation cung cấp một số chức năng tích hợp giúp bạn quản lý ngăn xếp của mình. Sử dụng các hàm nội tại trong các mẫu của bạn để gán giá trị cho các thuộc tính không khả dụng cho đến khi chạy.
Ví dụ: Fn::FindInMap
cho phép tìm kiếm trong danh sách khai báo sẵn.
- “Mappings” : {
- “AWSInstanceType2Arch” : {
- “t1.micro” : { “Arch” : “64” },
- “m1.small” : { “Arch” : “32” },
- “m1.large” : { “Arch” : “64” },
- “m1.xlarge” : { “Arch” : “64” },
- “m2.xlarge” : { “Arch” : “64” },
- “m2.2xlarge” : { “Arch” : “64” },
- “m2.4xlarge” : { “Arch” : “64” },
- “c1.medium” : { “Arch” : “32” },
- “c1.xlarge” : { “Arch” : “64” },
- “cc1.4xlarge” : { “Arch” : “64” }
- },
- “AWSRegionArch2AMI” : {
- “us-east-1” : { “32” : “ami-6411e20d”, “64” : “ami-7a11e213” },
- “us-west-1” : { “32” : “ami-c9c7978c”, “64” : “ami-cfc7978a” },
- “eu-west-1” : { “32” : “ami-37c2f643”, “64” : “ami-31c2f645” },
- “ap-southeast-1” : { “32” : “ami-66f28c34”, “64” : “ami-60f28c32” },
- “ap-northeast-1” : { “32” : “ami-9c03a89d”, “64” : “ami-a003a8a1” }
- }
- },
Tham khảo
https://viblo.asia/p/gioi-thieu-ve-cloud-formation-va-cach-su-dung-co-ban-ByEZk9Lx5Q0