Terraform. Базовое использование

Статья написана студентом Хекслета. Мнение автора может не совпадать с позицией редакции
Читать в полной версии →

Terraform

Terraform позволяет описывать и поднимать удаленно инфраструктуру в облаках (дальнейшие примеры в Google Cloud Platform). Простейшая конфигурация состоит из четырех файлов:

Пример конфигурационного файла main.tf

provider "google" {
  project     = "infra-14367"
  region      = "europe-west1"
}
resource "google_compute_instance" "app" {
name = "reddit-app" machine_type = "g1-small"
zone = "europe-west1-b" # определение загрузочного диска boot_disk {
    initialize_params { image = "reddit-base" }
  }
  network_interface {
    network = "default"
    access_config {}
} }

Providers (конкретное облако - GCP, DO, AWS, YANDEX и др.)

Установка провайдера производится командой terraform init

list preferences all providers

Resources

Input-переменные variables.tf

Входные переменные описываются в файле variables.tf:

variable project {
  description = "Project ID"
}
variable region {
  description = "Region"
  default = "europe-west1"
}

Пример использования переменных в main.tf:

provider "google" {
  project = "${var.project}"
  region  = "${var.region}"
}

Задание переменных через файл

Output-переменные outputs.tf

outputs.tf

output "app_external-ip {
  value="${google_compute_instance.app.network_interface.0.access_config.0.assigned_nat_ip}"
}
// просмотр
$ terraform output
app_external_ip = 104.199.54.241

После описания конфигурации всё готово к "поднятию" инфраструктуры в облаке

Основные команды

После создания инфраструктуры в папке появляется state-файл со всей созданной инфраструктурой и удаляется после terraform-destroy

State файлы

Поиск по state-файлу

$ terraform show
$ terraform state show google_compute_firewall.firewall_puma
$ terraform show | grep assigned_nat_ip

Пример создания простой инфраструктуры в GPC