Этот пост был изначально опубликован в моем собственном блоге: https://www.andreagrandi.it/2017/08/25/getting-latest-ubuntu-ami-with-terraform/
Когда нам нужно создать ресурс EC2 на AWS, используя Terraporm, нам нужно указать AMI ID, чтобы получить правильное изображение.
Идентификатор не легко запомнить, и он меняется в зависимости от зоны, которую мы работаем. На каждом новом выпуске снова меняется идентификатор.
Итак, как мы можем быть уверены, что получили правильный идентификатор для нашего региона, из последних доступных для данного дистрибутива Linux?
Уточнить ubuntu ami id
В этом примере я покажу, как получить удостоверение личности для последней версии сервера Ubuntu 16.04 для лондонской области и создать экземпляр EC2, используя этот идентификатор.
variable "aws_region" { default = "eu-west-2" } # London provider "aws" { region = "${var.aws_region}" access_key = "youraccesskey" secret_key = "yoursecretkey" } data "aws_ami" "ubuntu" { most_recent = true filter { name = "name" values = ["ubuntu/images/hvm-ssd/ubuntu-xenial-16.04-amd64-server-*"] } filter { name = "virtualization-type" values = ["hvm"] } owners = ["099720109477"] # Canonical } resource "aws_instance" "web" { ami = "${data.aws_ami.ubuntu.id}" instance_type = "t2.micro" tags { Name = "HelloUbuntu" } } output "image_id" { value = "${data.aws_ami.ubuntu.id}" }
После того, как мы инициализировали наш сценарий, используя Terraform init Если мы запустим его, мы получим идентификатор AMI, и этот экземпляр будет создан:
➜ example1$: terraform apply data.aws_ami.ubuntu: Refreshing state... aws_instance.web: Creating... ami: "" => "ami-03998867" associate_public_ip_address: "" => "" availability_zone: "" => " " ebs_block_device.#: "" => " " ephemeral_block_device.#: "" => " " instance_state: "" => " " instance_type: "" => "t2.micro" ipv6_address_count: "" => " " ipv6_addresses.#: "" => " " key_name: "" => " " network_interface.#: "" => " " network_interface_id: "" => " " placement_group: "" => " " primary_network_interface_id: "" => " " private_dns: "" => " " private_ip: "" => " " public_dns: "" => " " public_ip: "" => " " root_block_device.#: "" => " " security_groups.#: "" => " " source_dest_check: "" => "true" subnet_id: "" => " " tags.%: "" => "1" tags.Name: "" => "HelloUbuntu" tenancy: "" => " " volume_tags.%: "" => " " vpc_security_group_ids.#: "" => " " aws_instance.web: Still creating... (10s elapsed) aws_instance.web: Still creating... (20s elapsed) aws_instance.web: Still creating... (30s elapsed) aws_instance.web: Creation complete (ID: i-0f58f8bd55b3a7e38) Apply complete! Resources: 1 added, 0 changed, 0 destroyed. Outputs: image_id = ami-03998867
Это все, что нам нужно, чтобы раскрутить экземпляр EC2 на AWS, используя последние доступные последничные изображения Ubuntu.
Оригинал: «https://dev.to/andreagrandi/getting-latest-ubuntu-ami-with-terraform-33gg»