Вы можете заметить, что команда apply отображает такой же вывод, как и plan, и спрашивает вас, действительно ли вы хотите перейти к осуществлению этого плана. plan — отдельная команда, которая в основном подходит для быстрой проверки и разбора кода (больше об этом — в главе 8), но в большинстве случаев вы будете сразу выполнять команду apply, проверяя ее вывод.
Введите 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.
Обновив свою консоль EC2, вы увидите примерно такое окно, как на рис. 2.5.
Рис. 2.5. У сервера EC2 теперь есть тег с именем
Итак, у вас теперь есть рабочий код Terraform, стоит сохранить его в системе управления версиями. Это позволит вам делиться им с другими членами команды, отслеживать историю всех изменений инфраструктуры и использовать журнал фиксаций для отладки. Ниже показан пример того, как создать локальный Git-репозиторий и применять его для хранения конфигурационного файла Terraform:
git init
git add main.tf
git commit -m "Initial commit"
Cледует также создать файл под названием .gitignore. Он заставляет Git игнорировать определенные типы файлов, которые вы бы не хотели сохранить по случайности:
.terraform
*.tfstate
*.tfstate.backup
Файл .gitignore, показанный выше, заставляет Git игнорировать папку .terraform, которую Terraform использует в качестве временной рабочей папки, а также файлы вида *.tfstate, в которых Terraform хранит состояние (в главе 3 вы узнаете, почему файлы состояния нельзя записывать в репозиторий). Файл .gitignore тоже нужно зафиксировать:
git add .gitignore
git commit -m "Add a .gitignore file"
Чтобы поделиться этим кодом со своими коллегами, вам необходимо создать общий Git-репозиторий, к которому вы все можете обращаться. Для этого можно использовать GitHub. Перейдите на сайт https://github.com, зарегистрируйтесь (если вы этого еще не сделали), создайте новый репозиторий и укажите его в качестве удаленной точки входа под названием origin для своего локального Git-репозитория:
git remote add origin [email protected]:
Теперь, когда вы хотите поделиться своими изменениями с коллегами, можете загрузить изменения
git push origin master
Если вы хотите посмотреть, какие изменения внесли ваши коллеги, можете загрузить изменения
git pull origin master
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии