Packer란? 하나의 소스 설정으로부터 여러 여러 플랫폼에 대해 동일한 머신 이미지(AMI)를 생성할 수 있는 오픈 소스 도구입니다.
Windows에 패커를 설치해봅시다.
아래 명령어를 실행하기 전에 Windows용 무료 오픈 소스 패키지 관리 시스템인 Chocolatey이 설치되어 있어야 합니다.
$ choco install packer
Packer를 설치한 후 명령 프롬프트를 열고 설치가 제대로 됐는지 확인합니다.
$ packer
Usage: packer [--version] [--help] <command> [<args>]
Available commands are:
build build image(s) from template
console creates a console for testing variable interpolation
fix fixes templates from old versions of packer
fmt Rewrites HCL2 config files to canonical format
hcl2_upgrade transform a JSON template into an HCL2 configuration
init Install missing plugins or upgrade plugins
inspect see components of a template
validate check that a template is valid
version Prints the Packer version
packer를 찾을 수 없다는 오류가 발생하면 PATH 환경 변수가 제대로 설정되지 않은 것입니다. 환경 변수에서 Packer가 설치된 디렉토리를 포함시키면 됩니다.
이제 패커로 이미지(AMI)를 만들어 봅시다.
먼저, 패커 구성 파일을 작성해야 합니다. aws-ubuntu.pkr.hcl 파일을 만듭니다.
packer {
required_plugins {
amazon = {
version = ">= 0.0.2"
source = "github.com/hashicorp/amazon"
}
}
}
source "amazon-ebs" "ubuntu" {
ami_name = "learn-packer-linux-aws"
instance_type = "t2.micro"
region = "us-west-2"
source_ami_filter {
filters = {
name = "ubuntu/images/*ubuntu-xenial-16.04-amd64-server-*"
root-device-type = "ebs"
virtualization-type = "hvm"
}
most_recent = true
owners = ["099720109477"]
}
ssh_username = "ubuntu"
}
build {
name = "learn-packer"
sources = [
"source.amazon-ebs.ubuntu"
]
}
위 코드는 us-west-2 리전에서 AWS Ubuntu AMI를 구축하는 Packer 템플릿입니다.
코드를 간단히 설명하면,
packer 블록에는 Pakcer 버전을 포함한 설정이 들어있습니다.
source 블록에는 베이스가 될 이미지에 대한 설정을 적습니다.
build 블록에는 Packer가 시작된 후 EC2 인스턴스로 수행해야 하는 작업들을 적습니다.
위 코드로 AWS에 AMI를 생성하려면 AWS 자격 증명을 Packer에 제공해야 합니다.
$ export AWS_ACCESS_KEY_ID="<YOUR_AWS_ACCESS_KEY_ID>"
$ export AWS_SECRET_ACCESS_KEY="<YOUR_AWS_SECRET_ACCESS_KEY>"
다음 명령어로 Packer를 빌드합니다. 순서대로 입력해야 합니다.
# Packer 구성 초기화
$ packer init .
# Packer 템플릿 형식 지정 및 유효성 ㄱ머사
$ packer fmt .
$ packer validate .
# 이미지 빌드
$ packer build aws-ubuntu.pkr.hcl
AWS AMI 페이지를 방문하여 Packer가 AMI를 성공적으로 구축했는지 확인하십시오.
'DevOps' 카테고리의 다른 글
[AWS/Secrets Manager] 비밀 관리 (0) | 2022.11.10 |
---|---|
[AWS/CloudWatch] 클라우드 와치 용어 및 개념 정리 (0) | 2022.11.07 |
[Terraform] 기존 리소스 가져오기 terraforming 설치 및 사용 (0) | 2022.10.31 |
[AWS/Terraform] 테라폼 백엔드(Backend) 구축하기(S3, DynamoDB) (0) | 2022.10.30 |
[AWS/Terraform] 테라폼으로 EC2 인스턴스 프로비저닝 (0) | 2022.10.29 |