728x90
반응형
SMALL
SMALL
Data Source
Terraform에서 알던 Data Source와 정확히 일치한다. 그래서 바로 예제 코드를 실행해보면서 어떻게 동작하는지 보자.
versions.pkr.hcl
packer {
required_version = "~> 1.7"
required_plugins {
amazon = {
version = "~> 1.0"
source = "github.com/hashicorp/amazon"
}
}
}
sources.pkr.hcl
여기서 data 블록이 Data Source이다. Ubuntu AMI를 Data Source로 가져오는 방식을 취했다. 이 방법의 이점은 source가 많아지는데 같은 Ubuntu AMI를 사용할 때 중복 코드를 제거해줄 수 있겠다.
data "amazon-ami" "ubuntu" {
filters = {
virtualization-type = "hvm"
name = "ubuntu/images/*ubuntu-focal-20.04-amd64-server-*"
root-device-type = "ebs"
}
owners = ["099720109477"]
most_recent = true
}
source "amazon-ebs" "ubuntu" {
instance_type = "t2.micro"
region = "ap-northeast-2"
subnet_id = "subnet-0b23fd05b5919269e"
associate_public_ip_address = true
ssh_interface = "public_ip"
source_ami = data.amazon-ami.ubuntu.id
ssh_username = "ubuntu"
}
main.pkr.hcl
여기서도 Data Source 하나가 더 사용된다. amazon-secretsmanager 라는 Data Source이다.
data "amazon-secretsmanager" "cwchoiit" {
name = "cwchoiit"
key = "test"
}
build {
name = "cwchoiit-packer"
source "amazon-ebs.ubuntu" {
name = "nginx"
ami_name = "cwchoiit-packer-nginx"
}
provisioner "shell" {
inline = [
"sudo apt-get update",
"echo Secret is ${data.amazon-secretsmanager.cwchoiit.value}"
]
}
provisioner "file" {
source = "${path.root}/files/index.html"
destination = "/tmp/index.html"
}
provisioner "shell" {
inline = [
"echo ${source.name} and ${source.type}",
"whoami",
"sudo apt-get install -y nginx",
"sudo cp /tmp/index.html /var/www/html/index.html"
]
}
}
AWS에서 제공하는 Secrets Manager 서비스에 대한 Data Source이다. Sensitive한 데이터를 저장하고 보관할 때 이 서비스를 활용할 수 있겠다. name 속성은 Secret Manager의 Secret name을 나타낸다. key는 해당 데이터에 들어가 있는 Key/Value의 Key를 나타낸다.
저 값을 가져오는 Data Source라고 생각하면 된다. 그리고 그 아래는 전에 봤던 build 블록이다. 그리고 provisioner에서 보면 Secret의 value값을 찍는 명령어가 보인다. 한번 build 해보자.
packer build .
이런식으로 Terraform과 정확히 동일하게 같은 개념으로 Data Source를 이해할 수 있었다.
728x90
반응형
LIST
'IaC(Infrastructure as Code)' 카테고리의 다른 글
Ansible Part. 1 (Inventory) (3) | 2024.03.17 |
---|---|
Packer Part. 5 (Post Processor) (2) | 2024.03.15 |
Packer Part. 3 (Provisioner) (0) | 2024.03.14 |
Packer Part. 2 (Builder) (0) | 2024.03.14 |
Packer Part. 1 (0) | 2024.03.14 |