728x90
Packer를 사용하여 AWS 이미지를 빌드할 때 AWS 자격 증명을 제공하는 방법
정적 자격 증명(static credentials) 및 공유 자격 증명 파일(shared credentials file)을 이용한 방법
Static Credentials (정적 자격 증명)
- 정적 자격 증명은 Packer 설정 파일에 직접 키 값을 넣어두는 방식입니다.
- AWS 액세스 키와 시크릿 키를 직접 설정합니다.
vim aws.pkr.hcl
packer {
required_plugins {
amazon = {
version = ">= 1.1.1"
source = "github.com/hashicorp/amazon"
}
}
}
locals {
timestamp = regex_replace(timestamp(), "[- TZ:]", "")
}
variable "aws_access_key" {
type = string
default = "aws_access_key"
}
variable "aws_secret_key" {
type = string
default = "aws_secret_key"
}
...
source "amazon-ebs" "ubuntu" {
access_key = var.aws_access_key
secret_key = var.aws_secret_key
region = var.aws_region
instance_type = var.aws_instance_type
...
packer validate aws.pkr.hcl
packer build -var="ami_dist=ubuntu" aws.pkr.hcl
이 방법은 편리하지만, Packer 설정 파일에 자격 증명이 노출되기 때문에 보안상 취약할 수 있습니다. 따라서 민감한 정보를 설정할 때는 주의해야 합니다.
Shared Credentials file (공유 자격 증명 파일)
- 공유 자격 증명 파일은 AWS CLI와 호환되는 ~/.aws/credentials와 유사한 형태로 자격 증명 정보를 관리합니다.
- 해당 파일을 설정하여 Packer가 사용할 수 있습니다.
vim aws.pkr.hcl
packer {
required_plugins {
amazon = {
version = ">= 1.1.1"
source = "github.com/hashicorp/amazon"
}
}
}
locals {
timestamp = regex_replace(timestamp(), "[- TZ:]", "")
}
variable "aws_profile" {
type = string
description = "AWS profile to use. Typically found in ~/.aws/credentials"
default = "default"
}
...
source "amazon-ebs" "ubuntu" {
profile = var.aws_profile
region = var.aws_region
instance_type = var.aws_instance_type
...
/path/to/credentials/file 경로에는 AWS access key와 secret key가 포함된 파일이 있어야 합니다.
vim .pkrvars.hcl
aws_access_key = "AXXXXXXXXXXXXXXXXXXXB"
aws_secret_key = "WXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXZ"
packer validate aws.pkr.hcl
packer build -var="ami_dist=ubuntu" -var-file=".pkrvars.hcl" aws.pkr.hcl
두 가지 방법 중 어떤 것을 선택할지는 사용 사례와 보안 정책에 따라 다를 수 있습니다. 가능하면 정적 자격 증명을 설정하는 대신 공유 자격 증명 파일을 사용하여 민감한 정보를 안전하게 관리하는 것이 좋습니다.
참고URL
- Amazon AMI Builder : https://developer.hashicorp.com/packer/plugins/builders/amazon
728x90
'퍼블릭 클라우드' 카테고리의 다른 글
AWS CodeDeploy 에이전트 설치(codedeploy-agent install) (0) | 2023.01.03 |
---|---|
[aws] Amazon ECR(프라이빗 레지스트리) (0) | 2022.12.28 |
AWS CLI를 사용하여 AMI 등록을 취소하고 EBS 스냅샷을 삭제하는 방법 (0) | 2022.12.22 |
[draft] EC2 인스턴스에 Java를 설치하는 방법 (0) | 2022.12.21 |
AWS CodeDeploy user data(사용자 데이터) (0) | 2022.12.21 |