Amazon web services Ubuntu18.04的打包器生成器源代码\u ami\u过滤器?
我在试封隔器 我能够创建一个ubuntu 16.04的图像Amazon web services Ubuntu18.04的打包器生成器源代码\u ami\u过滤器?,amazon-web-services,packer,Amazon Web Services,Packer,我在试封隔器 我能够创建一个ubuntu 16.04的图像 "source_ami_filter": { "filters": { "virtualization-type": "hvm", "name": "ubuntu/images/*ubuntu-xenial-16.04-amd64-server-*", "root-device-type": "ebs" }, 但是当它通过将
"source_ami_filter": {
"filters": {
"virtualization-type": "hvm",
"name": "ubuntu/images/*ubuntu-xenial-16.04-amd64-server-*",
"root-device-type": "ebs"
},
但是当它通过将16.04修改为18.04来尝试相同的文件管理器时
"source_ami_filter": {
"filters": {
"virtualization-type": "hvm",
"name": "ubuntu/images/*ubuntu-xenial-18.04-amd64-server-*",
"root-device-type": "ebs"
},
我得到下面的错误
==> amazon-ebs: Prevalidating any provided VPC information
==> amazon-ebs: Prevalidating AMI Name: packer-example 1592389575
==> amazon-ebs: No AMI was found matching filters: {
==> amazon-ebs: Filters: [{
==> amazon-ebs: Name: "virtualization-type",
==> amazon-ebs: Values: ["hvm"]
==> amazon-ebs: },{
==> amazon-ebs: Name: "name",
==> amazon-ebs: Values: ["ubuntu/images/*ubuntu-xenial-18.04-amd64-server-*"]
==> amazon-ebs: },{
==> amazon-ebs: Name: "root-device-type",
==> amazon-ebs: Values: ["ebs"]
==> amazon-ebs: }],
==> amazon-ebs: Owners: ["099720109477"]
==> amazon-ebs: }
Build 'amazon-ebs' errored: No AMI was found matching filters: {
Filters: [{
Name: "virtualization-type",
Values: ["hvm"]
},{
Name: "name",
Values: ["ubuntu/images/*ubuntu-xenial-18.04-amd64-server-*"]
},{
Name: "root-device-type",
Values: ["ebs"]
}],
Owners: ["099720109477"]
}
==> Some builds didn't complete successfully and had errors:
--> amazon-ebs: No AMI was found matching filters: {
Filters: [{
Name: "virtualization-type",
Values: ["hvm"]
},{
Name: "name",
Values: ["ubuntu/images/*ubuntu-xenial-18.04-amd64-server-*"]
},{
Name: "root-device-type",
Values: ["ebs"]
}],
Owners: ["099720109477"]
}
想要了解筛选器值的工作方式:
有人能澄清我对此的疑问吗?重要提示:您应该像我在这里的示例中所做的那样设置一个所有者属性,否则您将引入与您的模式相匹配的恶意AMI。名称字段由用户控制,未选中 更新:由于这是关于封隔器而非地形的,因此封隔器解决方案如下:
"source_ami_filter": {
"filters": {
"virtualization-type": "hvm",
"architecture": "x86_64",
"name": "ubuntu/images/hvm-ssd/ubuntu-bionic-18.04-amd64-server-*",
"block-device-mapping.volume-type": "gp2",
"root-device-type": "ebs"
},
"owners": ["099720109477"],
"most_recent": true
},
这是我的善意但离题的地形解决方案:
"source_ami_filter": {
"filters": {
"virtualization-type": "hvm",
"architecture": "x86_64",
"name": "ubuntu/images/hvm-ssd/ubuntu-bionic-18.04-amd64-server-*",
"block-device-mapping.volume-type": "gp2",
"root-device-type": "ebs"
},
"owners": ["099720109477"],
"most_recent": true
},
或者,如果您想使用自己的KMS CMK对其进行加密:
在2021年,我引用了我的。这里,我们正在使用Packer HCL2语言和Ubuntu20.04,并支持多种体系结构
variable "arch" {
type = string
default = "${env("ARCH")}"
}
source "amazon-ebs" "ubuntu" {
source_ami_filter {
filters = {
name = "ubuntu/images/*ubuntu-focal-20.04-*-server-*"
architecture = "${var.arch}"
root-device-type = "ebs"
virtualization-type = "hvm"
}
most_recent = true
owners = ["099720109477"]
}
}
18.04的代码名为
bionic
。16.04的代号为xenial
。更新到ubuntu/images/*ubuntu-bionic-18.04-amd64-server-*
应该可以解决这个问题。这是一个地形示例,不是打包机示例?这个问题不应该被标记为Terraform,因为它实际上是一个纯粹的包装问题。它可能也应该关闭,因为这只是Ubuntu发行版命名上的一个小错误。我添加了封隔器并保留了地形块。由于OP接受了答案,我不想删除原始答案。
variable "arch" {
type = string
default = "${env("ARCH")}"
}
source "amazon-ebs" "ubuntu" {
source_ami_filter {
filters = {
name = "ubuntu/images/*ubuntu-focal-20.04-*-server-*"
architecture = "${var.arch}"
root-device-type = "ebs"
virtualization-type = "hvm"
}
most_recent = true
owners = ["099720109477"]
}
}