Теоретические вопросы
Вопрос 1
Что такое Infrastructure as Code (IaC)? Назовите два ключевых преимущества перед ручным управлением через консоль AWS.
Вопрос 2
Объясните разницу между императивным и декларативным подходом в IaC. К какому подходу относится Terraform?
Вопрос 3
Для чего нужна команда terraform plan? Изменяет ли она реальные ресурсы в AWS?
Вопрос 4
Что такое terraform.tfstate? Почему этот файл не рекомендуется хранить в публичном git-репозитории?
Вопрос 5
Перечислите файлы, которые появляются в рабочей директории после выполнения terraform init. Что содержит каждый?
Вопрос 6
Что такое провайдер в Terraform? Приведите пример провайдера и двух ресурсов, которые он предоставляет.
Практические задания
Задание 1: Структура проекта
Создайте структуру файлов для Terraform-проекта, который создаёт S3-бакет:
- Перечислите необходимые файлы и их назначение
- Напишите содержимое
variables.tfс переменнойbucket_nameтипаstringи значением по умолчанию - Напишите блок
terraform {}сrequired_providersдля AWS провайдера версии 5.x
Задание 2: Последовательность команд
Запишите правильную последовательность Terraform-команд для:
- Инициализации нового проекта
- Проверки, что конфигурация создаст ожидаемые ресурсы
- Создания ресурсов
- Удаления всех созданных ресурсов после завершения работы
Каждая команда должна передавать файл переменных terraform.tfvars.
Задание 3: Анализ ошибки
Студент написал следующую конфигурацию и запустил terraform apply. Найдите и исправьте проблемы:
# main.tf — найдите ошибки
provider "aws" {
region = "us-east-1"
aws_access_key_id = "AKIAIOSFODNN7EXAMPLE"
aws_secret_access_key = "wJalrXUtnFEMI/K7MDENG"
}
resource "aws_s3_bucket" "bucket" {
bucket = "my-bucket"
}
resource "aws_s3_bucket" "backup" {
bucket = "my-bucket" # то же имя, что у bucket выше
}
Задание 4: Написать конфигурацию
Напишите Terraform-конфигурацию (файл main.tf) которая:
- Создаёт S3-бакет с именем из переменной
bucket_name - Добавляет теги
NameиEnvironment(значение тега Environment тоже берётся из переменной) - Определяет output, который выводит ARN созданного бакета
Задание 5: Вопрос по безопасности
Разработчик создал файл terraform.tfvars с реальными ключами AWS и случайно закоммитил его в публичный GitHub-репозиторий. Что нужно сделать немедленно? Перечислите шаги в правильном порядке.