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

Terraform позволяет описывать и поднимать удаленно инфраструктуру в облаках (дальнейшие примеры в Google Cloud Platform
). Простейшая конфигурация состоит из четырех файлов:
main.tf
- основной конфиг, описывающий какие инстансы нам нужныvariables.tf
- конфиг с описанием переменных и значениями по дефолту, если дефолтных значений нет, то они являются обязательнымиterraform.tfvars
- конфиг с значением переменных, часто является секретным, нужно с осторожностью пушить в публичные репозитарииoutputs.tf
- описание выходных переменных, необязательный файл, но очень удобно вычленять нужные параметры из созданного инстанса, например IP созданного в облаке инстанса
Содержание
- Пример main.tf
- Providers
- Resources
- Input-переменные variables.tf
- State файлы
- Поиск по state-файлу
- Пример создания простой инфраструктуры в GPC
Пример main.tf
Providers
- Содержат настройки аутентификации и подключения к платформе или сервису
- Предоставляют набор ресурсов для управления
- Могут использоваться в модулях (начиная с версии 0.10.0) - Поддержка большого количества сервисов с API: AWS, Google Cloud, GitHub, PowerDNS, VCloud etc.
Установка провайдера производится командой terraform init
list preferences all providers
Resources
- Определяются типом провайдера
- Позволяют управлять компонентами платформы или сервиса
- Могут иметь обязательные и необязательные аргументы Могут ссылаться на другие ресурсы
- Комбинация тип ресурса + имя уникально идентифицирует ресурс в рамках данной конфигурации
Input-переменные variables.tf
- Позволяют параметризировать конфигурационные файлы Три типа:
- string
- map
- list
- boolean
- Можно передать из файла, из окружения, из командной строки или интерактивно.
Входные переменные описываются в файле variables.tf:
Пример использования переменных в main.tf:
Задание переменных через файл:
-
Укажем переменные в файле my-vars.tfvars:
-
Указываем путь до файла при запуске команд terraform:
-
Если файл называется terraform.tfvars, то переменные загружаются автоматически.
Output-переменные outputs.tf
- Позволяют сохранить выходные значения после создания ресурсов.
- Облегчают процедуру поиска нужных данных
- Используются в модулях как входные переменные для других модулей
outputs.tf
После описания конфигурации всё готово к "поднятию" инфраструктуры в облаке
Основные команды
- Для приведения системы в целевое состояние используется команда
terraform -auto-approve=true apply
- идемпотентна! - Для просмотра, какие изменения будут применены
terraform plan
- Для обновления конфигурации
terraform refresh
- Для просмотра выходных переменных
terraform output
- Для пересоздания ресурса
terraform taint google_compute_instance.app
После создания инфраструктуры в папке появляется state
-файл со всей созданной инфраструктурой и удаляется после terraform-destroy
State файлы
- Terraform хранит информацию об управляемых ресурсах в файле
terraform.tfstate
- Файл
terraform.tfstate
обновляется при каждом запуске apply или refresh - Файл
terraform.tfstate.backup
используется для бекапа предыдущегоterraform.state
- По умолчанию сохраняются локально в папке с конфигурацией
Поиск по state-файлу
Пример создания простой инфраструктуры в GPC
Михаил Бондарев
7 лет назад