Terraform: инфраструктура на уровне кода | страница 43



Введите yes и нажмите клавишу Enter, чтобы развернуть сервер EC2:

Do you want to perform these actions?

  Terraform will perform the actions described above.

  Only 'yes' will be accepted to approve.

  Enter a value: yes

aws_instance.example: Creating...

aws_instance.example: Still creating... [10s elapsed]

aws_instance.example: Still creating... [20s elapsed]

aws_instance.example: Still creating... [30s elapsed]

aws_instance.example: Creation complete after 38s [id=i-07e2a3e006d785906]

Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

Поздравляем, вы развернули сервер EC2 в своей учетной записи AWS, используя Terraform! Чтобы в этом убедиться, перейдите в консоль EC2 (https://amzn.to/­2GOFxdI); вы должны увидеть страницу, похожую на ту, что изображена на рис. 2.4.

Рис. 2.4. Один сервер EC2

Мы действительно видим наш сервер! Однако нужно признать, что это не самый впечатляющий пример. Сделаем его немного более интересным. Для начала обратите внимание на то, что у нашего сервера EC2 нет имени. Чтобы его указать, добавьте к ресурсу aws_instance параметр tags:

resource "aws_instance" "example" {

  ami           = "ami-0c55b159cbfafe1f0"

  instance_type = "t2.micro"

  tags = {

    Name = "terraform-example"

  }

}

Чтобы увидеть последствия этих изменений, еще раз выполните команду terraformapply:

$ terraform apply

aws_instance.example: Refreshing state...

(...)

Terraform will perform the following actions:

  # aws_instance.example will be updated in-place

  ~ resource "aws_instance" "example" {

        ami                          = "ami-0c55b159cbfafe1f0"

        availability_zone            = "us-east-2b"

        instance_state               = "running"

        (...)

      + tags = {

        + "Name" = "terraform-example"

      }

      (...)

    }

Plan: 0 to add, 1 to change, 0 to destroy.

Do you want to perform these actions?

  Terraform will perform the actions described above.

  Only 'yes' will be accepted to approve.

  Enter a value:

Система Terraform отслеживает все ресурсы, которые были созданы для этого набора конфигурационных файлов. Поэтому ей известно, что сервер EC2 уже существует (обратите внимание на строчку Refreshingstate… при выполнении команды apply), и она может вывести разницу между тем, что развернуто на данный момент, и тем, что описано в вашем коде (это одно из преимуществ использования декларативного кода по сравнению с процедурным; см. раздел «Сравнение Terraform с другими средствами IaC» на с. 42). В предыдущем сравнении видно, что Terraform хочет создать один тег под названием Name. Это именно то, что вам нужно, поэтому введите yes и нажмите клавишу Enter.