Terraform — это инструмент для управления инфраструктурой как кодом (Infrastructure as Code, IaC). Вместо того чтобы вручную создавать ресурсы в AWS Console, вы описываете их в виде конфигурационных файлов.
Такой подход позволяет:
- хранить инфраструктуру в Git;
- легко воспроизводить окружения;
- масштабировать и изменять ресурсы с минимальными усилиями.
В этой статье мы создадим первый ресурс в AWS — VPC (Virtual Private Cloud) с помощью Terraform.
1. Файл main.tf — провайдер AWS
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
}
}
provider "aws" {
region = var.aws_region
}
2. Файл network_core.tf — создание VPC
# Create VPC
resource "aws_vpc" "vpc" {
cidr_block = "${var.vpc_params["network"]}/${var.vpc_params["cidr"]}"
tags = {
Name = "${upper(var.contour_environment["region"])}-${var.contour_environment["company"]}"
Region = "${upper(var.contour_environment["region"])}"
}
}
3. Файл outputs.tf — вывод ID VPC
output "vpc_id" {
value = aws_vpc.vpc.id
description = "The ID of VPC"
}
4. Файл terraform.tfvars — значения переменных
aws_region = "eu-north-1"
contour_environment = {
"company" = "SysOps"
"region" = "eu"
}
vpc_params = {
network = "10.1.0.0"
cidr = "16"
}
5. Файл variables.tf — описание переменных
variable "aws_region" {
description = "AWS region"
type = string
default = ""
}
variable "contour_environment" {
description = "Company information"
type = object({
company = string
region = string
})
}
variable "vpc_params" {
description = "VPC parameters"
type = object({
network = string
cidr = string
})
}
6. Применение конфигурации
terraform init
terraform plan
terraform apply