сборщик пакетов source_ami_filter для ubuntu 18.04? - PullRequest
0 голосов
/ 17 июня 2020
• 1000 1006 *
"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"]
}

Требуется узнать, как работают значения фильтра:

  1. для 18.04?

  2. для другого другого образа (linux / redhat)?

Не могли бы вы развеять мои сомнения по этому поводу?

1 Ответ

2 голосов
/ 17 июня 2020

Важное примечание: вы должны установить атрибут owner , как я сделал в моих примерах здесь, иначе вы откроетесь для внесения вредоносных AMI, соответствующих вашему шаблону. Поле name контролируется пользователем и не проверяется.

Обновление: поскольку речь идет о Packer, а не Terraform, вот решение для упаковщика:

"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
},

И здесь это мои благие намерения, но не всегда. c Решение Terraform:

data "aws_ami" "ubuntu-18_04" {
  most_recent = true
  owners = ["${var.ubuntu_account_number}"]

  filter {
    name   = "name"
    values = ["ubuntu/images/hvm-ssd/ubuntu-bionic-18.04-amd64-server-*"]
  }
}

variable "ubuntu_account_number" {
  default = "099720109477"
}

Или, если вы хотите зашифровать его с помощью своего собственного KMS CMK:

resource "aws_ami_copy" "ubuntu-18_04-encrypted" {
  name              = "${data.aws_ami.ubuntu-18_04.name}-encrypted"
  description       = "${data.aws_ami.ubuntu-18_04.description} (encrypted)"
  source_ami_id     = "${data.aws_ami.ubuntu-18_04.id}"
  source_ami_region = "${var.region}"
  encrypted         = true

  tags {
    ImageType      = "encrypted-ubuntu-18_04"
  }
}

data "aws_ami" "ubuntu-18_04" {
  most_recent = true
  owners = ["${var.ubuntu_account_number}"]

  filter {
    name   = "name"
    values = ["ubuntu/images/hvm-ssd/ubuntu-bionic-18.04-amd64-server-*"]
  }
}

variable "ubuntu_account_number" {
  default = "099720109477"
}

Я процитировал их из моего Terraform: последняя версия AMI с шифрованием Ubuntu 18.04 LTS на GitHub .

...