Triển khai AMI Builder Pipeline
Ở phần này, chúng ta sẽ tiến hành xây dựng một AMI Pipeline thông qua EC2 Image Builder.
EC2 Image Build là một dịch vụ giúp chúng ta đơn giản hoá các tác vụ từ khởi tạo, bảo trì, đánh giá và phát triển các Linux/Windows Images.
Sau khi hoàn thành phần này, chúng ta sẽ có thể
Nội dung
Để 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ần | Giá Trị (Bắt buộc) |
---|---|
Stack Name | pattern3-pipeline |
Template URL | pattern3-pipeline.yml |
Hoặc bạn có thể tải về template bên dưới:
Sau đây là các bước khởi tạo thông qua AWS CLI:
aws cloudformation create-stack --stack-name pattern3-pipeline --template-body file://pattern3-pipeline.yml --parameters ParameterKey=MasterAMI,ParameterValue=ami-0f96495a064477ffb ParameterKey=BaselineVpcStack,ParameterValue=pattern3-base --capabilities CAPABILITY_IAM --region ap-southeast-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-pipeline --region ap-southeast-2
Ghi chú lại các giá trị tại Output.
Bài thực hành dựa trên Golden AMI ID của Amazon Linux 2 AMI (HVM) tại AWS Region ap-southeast-2
, nếu bạn muốn sử dụng AWS Region khác, giá trị Golden AMI ID cần được thay thế một cách tương ứng.
Bây giờ chúng ta sẽ tập trung vào xây dựng phần chính yếu của một AMI Pipeline. Chúng ta sẽ lần lượt thực hiện các bước sau đây:
Bởi tính chất của dịch vụ S3, khi đặt tên cho S3 Bucket, chúng ta cần phải tuân theo một số quy tắc được đặc tả tại URL sau.
uuidgen | awk -F- '{print tolower($1$2$3)}'
pattern3-logging
và chuỗi UUID trên.
aws s3 mb s3://pattern3-logging-<UUID_STRING> --region ap-southeast-2
Chúng ta có thể xem tại URL sau về chi tiết việc khởi tạo S3 bucket.
IAM Role này sẽ được sử dụng cho EC2 Image Builder với vai trò là một instance profile cho một EC2 instance được khởi tạo tạm thời. EC2 instance này sẽ thực hiện tác vụ OS Patching.
Sau đây là quá trình tạo ra một IAM Role:
Roles
và nhấn nút Create role
.AWS service
và chọn usecase là EC2
.Attach permissions policies
, chúng ta sẽ lần lượt chọn các chính sách dưới đây:
Next: Tags
và Next: Review
để tiến hành xem xét.pattern3-recipe-instance-role
cùng với miêu tả cụ thể.Create role
.pattern3-recipe-instance-role
.Add inline policy
.<S3_BUCKET_NAME>
với tên S3 Bucket ở bước trước.{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::<S3_BUCKET_NAME>/*"
]
}
]
}
Review Policy
.Create Policy
.Chúng ta sẽ cần một EC2 Security Group cho EC2 instance tạm thời. Security Group sẽ không cần bất kỳ một Inbound Rule nào, tuy nhiên chúng ta cần đảm bảo Outbound Rule là mặc định mà có thể truy câp Internet.
Create security group
.pattern3-pipeline-instance-security-group
và miêu tả.Create
để khởi tạo.Chúng ta sẽ tiến hành tạo một Component của dịch vụ EC2 Image Builder.
Create Component
.1.0.0
.Linux
.Amazon Linux 2
.pattern3-pipeline-ConfigureOSComponent
.Component to update the OS with latest package versions
.Define document content
.name: ConfigureOS
schemaVersion: 1.0
phases:
- name: build
steps:
- name: UpdateOS
action: UpdateOS
Create Component
để tiến hành khởi tạo.Ở phần thực hành này, chúng ta chỉ đơn giản đặc tả với hành động UpdateOS
nhằm cập nhật các phần mềm hiện tại. Chúng ta có thể tham khảo thêm các hành động khác tại URL sau.
Trước khi đặc tả Builder Pipeline, chúng ta cần phải có một Builder Recipe.
Create Recipe
.pattern3-pipeline-ImageRecipe
.1.0.0
.Pattern3 Configure OS Recipepackage versions
.Enter custom AMI ID
và diền giá trị ami-0f96495a064477ffb
.Owned by me
.Create Recipe
để tiến hành khởi tạo.pattern3-pipeline-ImageRecipe
và nhấn nút Create pipeline from this recipe
.pattern3-pipeline-ImagePipeline
.Pattern 3 pipeline to update OS
.Next
.Create a new infrastructure configuration
.pattern3-base
, chọn VPC và Private Subnet tương ứng.m5.large
hoặc nhỏ hơn có thể.Next
.Review
.Create Pipeline
để khởi tạo.Với m5.large
có thể sẽ mất khoảng 20 đến 30 phút để khởi tạo, chúng ta có thể dùng loại nhỏ hơn để tiết kiệm chi phí nhưng thời gian khởi tạo sẽ lâu hơn.
Sau khi quá trình đặc tả đã hoàn tất, chúng ta tiến hành thử nghiệm Builder Pipeline.
Actions
và chọn Create pipeline from this recipe
.EC2 Image Builder sử dụng Automation Document của dịch vụ System Manager để hoàn thành quá trình khởi tạo, chúng ta có thể truy cập vào dịch System Manager để theo dõi quá trình này cũng như kiểm tra trạng thái - ImageBuilderBuildImageDocument
.
Tham khảo thêm về quá trình kiểm tra Automation Document tại Automation Working URL sau.
Bây giờ, chúng ta sẽ sang phần kế tiếp với việc triển khai quá trình Build Automation với dịch vụ System Manager.