
Знакомство, формат курса.
Я объясню вам, что такое Terraform на примерах, дам определение, сравню с Ansible, Chef, Puppet и CloudFormation.
Я покажу и расскажу, как устанавливать Terraform, напишу первый шаблон и подготовлю его к развертыванию.
Для того, чтобы Terraform мог создавать, управлять и уничтожать ресурсы в вашем аккаунте AWS согласно вашему шаблону необходимо дать ему доступ. Я расскажу вам несколько способов сделать это.
Основные и самые важные команды для управления шаблонами Terraform.
Terraform не может управлять инфраструктурой, которая отсутствует в его стейтфайле. Для таких случаев есть data sources, которые помогают получить информацию из развернутой в инфраструктуры и использовать ее в шаблонах.
В этом уроке вы узнаете как группировать ресурсы в модули и использовать их для простого и удобного развертывания нескольких копий всей инфраструктуры (например, для разных сред разработки).
Использовать статические значения параметров ваших ресурсов не даст создать эффективную и продвинутую инфраструктуру, поэтому Terraform поддерживает вводные переменные.
До сих пор мы использовали только локальный стейтфайл, это неудобно и небезопасно. Потеряв локальный стейтфайл вы лишитесь возможности управлять вашей инфраструктурой. А еще работать в команде над одной и той же инфраструктурой неудобно: нужно как-то обмениваться этим файлом с коллегами и синхронизировать его.
Remote backends решают эту проблему. Вы можете сконфигурировать удаленное хранилище и Terraform будет использовать его для хранения там стейтфайла. Это надежно и идеально подходит для командной работы.
Если вам нужно создать больше одного ресурса в модуле, то копировать блок ресурса - неэффективно. Вместо этого можно использовать мета-аргумент count в одном ресурсе и вы получите столько же копий ресурса, сколько указано в count.
Terraform имеет целый набор встроенных функций, вроде join, max, length, regex, split, tobool, tolist и так далее. Свои собственные создавать вы не можете, но обширный список уже существующих покрывает все базовые нужды.
Инфраструктура должна быть легко-воспроизводимой. Ее автоматизация значительно ускоряет разработку, а значит и цифровизацию и бизнес-процессы в целом. HashiCorp Terraform - это одна из самых распространенных технологий для развертывания и управления инфраструктурой-как-код. Этот инструмент отлично подходит под все популярные платформы, он легок и удобен в использовании, а ещё бесплатен. Исходный код Terraform лежит в открытом доступе.
Terraform позволяет описывать инфраструктуру в виде кода на простом, понятном человеку языке, называемом HCL (HashiCorp Configuration Language). Он считывает файлы конфигурации и предоставляет план выполнения изменений, а затем применить и подготовить. HCL постоянно развивается и уже сейчас поддерживает такие привычные программисту инструменты как циклы, условные операторы и функции преобразования данных.
Вы можете самостоятельно писать модули с необходимыми вам ресурсами, а можете воспользоваться официальными модулями, число которых составляет уже более 4000.
На данный момент Terraform поддерживает более 500 провайдеров. Речь идёт не только о провайдерах облачной инфраструктуры, таких как AWS, Azure или GCP, но также и о системах баз данных (такие как Postgres, MySQL), кластерами Kubernetes, автоматизацией Ansible, мониторингом DataDog и NewRelic, аккаунтами 1Password и многим многим другим.
В этом курсе я расскажу вам о Terraform и научу самым основам его использования. Если вы уже используете Terraform в своем проекте, то, возможно, этот курс будет для вас слишком базовым.