次のパッカー スクリプトでコードの重複を排除したいと考えています。私が望むのは、基本的に同じビルドを実行することです。その結果、異なる名前の 2 つの AMI を期待しています。
これは実際の例の味です:
source "amazon-ebs" "head" {
profile = "$(var.aws_profile}"
access_key = "${var.aws_access_key}"
secret_key = "${var.aws_secret_key}"
instance_type = "${var.instance_type}"
region = "${var.aws_region}"
source_ami_filter {
filters = {
virtualization-type = "hvm"
name = "${var.base_ami_name}"
root-device-type = "ebs"
}
owners = [ "1234567890" ]
most_recent = true
}
launch_block_device_mappings {
device_name = "/dev/sda1"
volume_size = "${var.volume_size}"
volume_type = "gp2"
delete_on_termination = true
}
ssh_username = "centos"
ami_name = "head-{{timestamp}}"
}
source "amazon-ebs" "worker" {
profile = "$(var.aws_profile}"
access_key = "${var.aws_access_key}"
secret_key = "${var.aws_secret_key}"
instance_type = "${var.instance_type}"
region = "${var.aws_region}"
source_ami_filter {
filters = {
virtualization-type = "hvm"
name = "${var.base_ami_name}"
root-device-type = "ebs"
}
owners = [ "1234567890" ]
most_recent = true
}
launch_block_device_mappings {
device_name = "/dev/sda1"
volume_size = "${var.volume_size}"
volume_type = "gp2"
delete_on_termination = true
}
ssh_username = "centos"
ami_name = "worker-{{timestamp}}"
}
################
# Builder
################
build {
#source "amazon-ebs.head" {
# name = "worker"
#}
sources = ["source.amazon-ebs.head", "source.amazon-ebs.worker"]
明らかに、これは少し長く、ほぼ完全に重複しています。私が欲しいのは、より近いものです:
source "amazon-ebs" "head" {
profile = "$(var.aws_profile}"
access_key = "${var.aws_access_key}"
secret_key = "${var.aws_secret_key}"
instance_type = "${var.instance_type}"
region = "${var.aws_region}"
source_ami_filter {
filters = {
virtualization-type = "hvm"
name = "${var.base_ami_name}"
root-device-type = "ebs"
}
owners = [ "125523088429" ]
most_recent = true
}
launch_block_device_mappings {
device_name = "/dev/sda1"
volume_size = "${var.volume_size}"
volume_type = "gp2"
delete_on_termination = true
}
ssh_username = "centos"
ami_name = "head-{{timestamp}}"
}
################
# Builder
################
build {
source "amazon-ebs.head" {
ami_name = "worker-{{timestamp}}"
}
sources = ["source.amazon-ebs.head", ]
またはそれに類似したもの。しかし、私はそれを機能させることができないようです。ami_name
まず、最初のソースから を完全に削除することはできません。これは必須フィールドだからです。{{.Name}}
name フィールドをソースに追加してから代わりに explicitを使用するなど、変数を使用しようとすると、エラーが発生しませんami_name
。
きっと、こんなことができるはずですよね?それともあきらめるべきですか?どうやらドキュメントが示すのと同じくらい簡単なはずですが、同じ例は文字通り私にはうまくいきません....