以下打包文件应该根据 ubuntu-versions 变量为不同的 ubuntu 版本生成单个或多个 ami。
packer {
required_plugins {
amazon = {
version = ">= 0.0.2"
source = "github.com/hashicorp/amazon"
}
}
}
variable "region" {
default = "us-east-1"
type = string
description = "A region in which to do the build"
}
variable "regions" {
default = ["us-east-1"]
type = list(string)
description = "A list of regions to copy the AMI to."
}
variable "ubuntu-versions" {
default = ["18.04", "20.04"]
type = list(string)
description = "Ubuntu version"
}
source "amazon-ebs" "ubuntu-generic" {
}
build {
name = "ami-builds"
dynamic "source" {
for_each = var.ubuntu-versions
labels = ["amazon-ebs.ubuntu-generic"]
content {
name = "${source.value}"
skip_create_ami = false
ami_name = "Base hvm ${source.value} {{timestamp}}"
ami_virtualization_type = "hvm"
ami_regions = "${var.regions}"
instance_type = "m5.large"
region = "${var.region}"
source_ami_filter {
filters = {
name = "ubuntu/images/hvm-ssd/ubuntu-*-${source.value}-amd64-server-*"
root-device-type = "ebs"
virtualization-type = "hvm"
}
most_recent = true
owners = ["099720109477"]
}
ssh_username = "ubuntu"
}
}
post-processor "shell-local" {
inline = ["echo hello"]
}
}
它按预期运行,但我注意到加壳器重复了由于 shell 本地后处理器而产生的工件数量。打包器输出示例:
ami-builds.amazon-ebs.18.04: output will be in this color.
ami-builds.amazon-ebs.20.04: output will be in this color.
==> ami-builds.amazon-ebs.20.04: Prevalidating any provided VPC information
==> ami-builds.amazon-ebs.20.04: Prevalidating AMI Name: Base hvm 20.04 1692262684
==> ami-builds.amazon-ebs.18.04: Prevalidating any provided VPC information
==> ami-builds.amazon-ebs.18.04: Prevalidating AMI Name: Base hvm 18.04 1692262684
ami-builds.amazon-ebs.20.04: Found Image ID: ami-011e48799a29115e9
==> ami-builds.amazon-ebs.20.04: Creating temporary keypair: packer_64dde11c-20a0-0506-6989-cb90612bb5f4
ami-builds.amazon-ebs.18.04: Found Image ID: ami-055744c75048d8296
==> ami-builds.amazon-ebs.18.04: Creating temporary keypair: packer_64dde11c-3226-5d29-6bce-9ddc2948bbde
==> ami-builds.amazon-ebs.20.04: Creating temporary security group for this instance: packer_64dde11d-6e52-5984-0ced-0e8da6ed8038
==> ami-builds.amazon-ebs.18.04: Creating temporary security group for this instance: packer_64dde11d-6b4f-4d47-cbe4-b08021df4c96
==> ami-builds.amazon-ebs.20.04: Authorizing access to port 22 from [0.0.0.0/0] in the temporary security groups...
==> ami-builds.amazon-ebs.18.04: Authorizing access to port 22 from [0.0.0.0/0] in the temporary security groups...
==> ami-builds.amazon-ebs.20.04: Launching a source AWS instance...
==> ami-builds.amazon-ebs.18.04: Launching a source AWS instance...
ami-builds.amazon-ebs.18.04: Instance ID: i-032358235ea73987b
==> ami-builds.amazon-ebs.18.04: Waiting for instance (i-032358235ea73987b) to become ready...
ami-builds.amazon-ebs.20.04: Instance ID: i-0a641c49869230a07
==> ami-builds.amazon-ebs.20.04: Waiting for instance (i-0a641c49869230a07) to become ready...
==> ami-builds.amazon-ebs.18.04: Using SSH communicator to connect: 54.89.159.238
==> ami-builds.amazon-ebs.18.04: Waiting for SSH to become available...
==> ami-builds.amazon-ebs.20.04: Using SSH communicator to connect: 54.90.187.148
==> ami-builds.amazon-ebs.20.04: Waiting for SSH to become available...
==> ami-builds.amazon-ebs.20.04: Connected to SSH!
==> ami-builds.amazon-ebs.20.04: Stopping the source instance...
ami-builds.amazon-ebs.20.04: Stopping instance
==> ami-builds.amazon-ebs.20.04: Waiting for the instance to stop...
==> ami-builds.amazon-ebs.18.04: Connected to SSH!
==> ami-builds.amazon-ebs.18.04: Stopping the source instance...
ami-builds.amazon-ebs.18.04: Stopping instance
==> ami-builds.amazon-ebs.18.04: Waiting for the instance to stop...
==> ami-builds.amazon-ebs.18.04: Creating AMI Base hvm 18.04 1692262684 from instance i-032358235ea73987b
ami-builds.amazon-ebs.18.04: AMI: ami-021f569184d752422
==> ami-builds.amazon-ebs.18.04: Waiting for AMI to become ready...
==> ami-builds.amazon-ebs.20.04: Creating AMI Base hvm 20.04 1692262684 from instance i-0a641c49869230a07
ami-builds.amazon-ebs.20.04: AMI: ami-0ff2caa45b3b4c0dd
==> ami-builds.amazon-ebs.20.04: Waiting for AMI to become ready...
==> ami-builds.amazon-ebs.18.04: Skipping Enable AMI deprecation...
==> ami-builds.amazon-ebs.18.04: Terminating the source AWS instance...
==> ami-builds.amazon-ebs.18.04: Cleaning up any extra volumes...
==> ami-builds.amazon-ebs.18.04: No volumes to clean up, skipping
==> ami-builds.amazon-ebs.18.04: Deleting temporary security group...
==> ami-builds.amazon-ebs.18.04: Deleting temporary keypair...
==> ami-builds.amazon-ebs.18.04: Running post-processor: (type shell-local)
==> ami-builds.amazon-ebs.18.04 (shell-local): Running local shell script: /tmp/packer-shell3820714757
ami-builds.amazon-ebs.18.04 (shell-local): hello
Build 'ami-builds.amazon-ebs.18.04' finished after 3 minutes 43 seconds.
==> ami-builds.amazon-ebs.20.04: Skipping Enable AMI deprecation...
==> ami-builds.amazon-ebs.20.04: Terminating the source AWS instance...
==> ami-builds.amazon-ebs.20.04: Cleaning up any extra volumes...
==> ami-builds.amazon-ebs.20.04: No volumes to clean up, skipping
==> ami-builds.amazon-ebs.20.04: Deleting temporary security group...
==> ami-builds.amazon-ebs.20.04: Deleting temporary keypair...
==> ami-builds.amazon-ebs.20.04: Running post-processor: (type shell-local)
==> ami-builds.amazon-ebs.20.04 (shell-local): Running local shell script: /tmp/packer-shell1219348302
ami-builds.amazon-ebs.20.04 (shell-local): hello
Build 'ami-builds.amazon-ebs.20.04' finished after 4 minutes 29 seconds.
==> Wait completed after 4 minutes 29 seconds
==> Builds finished. The artifacts of successful builds are:
--> ami-builds.amazon-ebs.18.04: AMIs were created:
us-east-1: ami-021f569184d752422
--> ami-builds.amazon-ebs.18.04: AMIs were created:
us-east-1: ami-021f569184d752422
--> ami-builds.amazon-ebs.20.04: AMIs were created:
us-east-1: ami-0ff2caa45b3b4c0dd
--> ami-builds.amazon-ebs.20.04: AMIs were created:
us-east-1: ami-0ff2caa45b3b4c0dd
如您所见,ami-021f569184d752422 和 ami-0ff2caa45b3b4c0dd 被报告了两次。没有后处理器,就不会有重复。怎么会?