Hạ tầng Ứng dụng

Triển khai Hạ tầng Ứng dụng

Tại phần này, chúng ta sẽ tiến hành tạo một Application Stack dựa trên Hạ tầng Cơ bản ở phần trước, tài nguyên sẽ bao gồm như sau:

  1. Application Load Balancer
  2. Launch Template và Auto Scaling Group
  3. IAM Role cho EC2 instance để có thể được Systems Manager quản lý

application-architecture

Nếu chúng ta khởi tạo các tài nguyên trên một cách thủ công, tổng thời gian sẽ khá dài và không thể đạt được mục tiêu mà chúng ta đã đề ra về việc tự động hoá. Để tiết kiệm thời gian cũng như tự động hoá quá trình khởi tạo, CloudFormation Stack cần được triển khai như sau.

CloudFormation Stack

Để tiến hành triển khai hạ tầng, chúng ta sẽ sử dụng dịch vụ AWS CloudFormation thông qua AWS Console hoặc AWS CLI.

Thành PhầnGiá Trị (Bắt buộc)
Stack Namepattern3-app
Templatepattern3-application.yml - tải ở mục Template bên dưới
BaselineVpcStackpattern3-base

Bạn hãy tải template ở đây:

AWS CLI

Sau đây là các bước khởi tạo thông qua AWS CLI:

  1. Khởi tạo CloudFormation Stack.
    aws cloudformation create-stack --stack-name pattern3-app --template-body file://pattern3-application.yml --parameters ParameterKey=BaselineVpcStack,ParameterValue=pattern3-base --capabilities CAPABILITY_IAM --region ap-southeast-2
    

cloudformation-cli-create-stack

  1. Chờ Stack khởi tạo xong. Quá trình này mất khoảng 5 đến 10 phút vì CloudFormation phải đợi tín hiệu cfn-signal từ các EC2 instance.

    aws cloudformation wait stack-create-complete --stack-name pattern3-app --region ap-southeast-2
    
  2. Xác nhận CloudFormation Stack đã khởi tạo hoàn tất với StackStatus là CREATE_COMPLETE.

    aws cloudformation describe-stacks --stack-name pattern3-app --region ap-southeast-2 --query "Stacks[0].StackStatus" --output text
    

cloudformation-cli-create-stack

  1. Ghi chú lại các giá trị tại Output, đặc biệt là OutputPattern3ALBDNSName và OutputPattern3ActiveAmiId.
    aws cloudformation describe-stacks --stack-name pattern3-app --region ap-southeast-2 --query "Stacks[0].Outputs" --output table
    

cloudformation-cli-describe-stack

Cơ chế chọn AMI

Template khai báo hai tham số liên quan đến AMI, đây là điểm quan trọng cần hiểu trước khi sang phần tự động hoá:

Tham sốKiểuVai trò
LatestAmiIdAWS::SSM::Parameter::Value<AWS::EC2::Image::Id>Tự động phân giải ra AMI Amazon Linux 2023 mới nhất. Được dùng khi khởi tạo Stack lần đầu.
AmazonMachineImageString, mặc định để trốngNơi để SSM Automation Document ở phần 5 truyền vào AMI ID vừa được Image Builder tạo ra.

Logic lựa chọn nằm ở Conditions:

Conditions:
  UseLatestAmi: !Equals [ !Ref AmazonMachineImage, "" ]

Nhờ vậy, lần đầu bạn không cần biết AMI ID là gì, còn ở phần tự động hoá thì AMI mới sẽ ghi đè lên giá trị mặc định. Bạn có thể kiểm tra AMI Amazon Linux 2023 mới nhất trong Region bằng lệnh sau:

aws ssm get-parameter --name /aws/service/ami-amazon-linux-latest/al2023-ami-kernel-default-x86_64 --region ap-southeast-2 --query "Parameter.Value" --output text

Xác Minh CloudFormation Stack Output

Một khi CloudFormation Stack khởi tạo xong, chúng ta sẽ tiến hành xác minh liệu ứng dụng đã được triển khai thành công hay chưa.

  1. Từ CloudFormation Stack Output, tìm giá trị của OutputPattern3ALBDNSName.
  2. Thử truy cập trên trình duyệt web và kiểm tra kết quả có tiêu đề Welcome to FCAJ - AWS Study Group - Autonomous Patching Workshop hay không.

cloudformation-output-alb-dns-url-verification

  1. Tại đường dẫn URL trên trình duyệt web, chúng ta tiến hành thêm đường dẫn sau - /details.php.
  2. Kiểm tra xem kết quả liệu có phải là danh sách các phần mềm được cài đặt. Hãy lưu lại các dữ liệu hiển thị, bao gồm Operating System, Amazon Image Id và số lượng Installed Packages. Chúng ta sẽ đối chiếu lại các giá trị này sau khi quá trình vá lỗi tự động hoàn tất ở phần 5.

alb-dns-url-details-ami

Sau khi Stack đã ở trạng thái CREATE_COMPLETE và trang details.php hiển thị đúng, chúng ta chuyển sang phần kế tiếp với AMI Builder Pipeline.