Читаем Terraform: инфраструктура на уровне кода полностью

Чтобы система Terraform могла вносить изменения в вашу учетную запись AWS, нужно прописать в переменных среды AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY учетные данные для пользователя IAM, которого вы создали ранее. Например, вот как это можно сделать в терминале Unix/Linux/macOS:

$ export AWS_ACCESS_KEY_ID=(your access key id)

$ export AWS_SECRET_ACCESS_KEY=(your secret access key)

Имейте в виду, что эти переменные среды действуют только в текущей командной оболочке, поэтому после перезагрузки компьютера или открытия нового окна терминала придется снова их экспортировать.

Способы аутентификации

Помимо переменных среды, Terraform поддерживает те же механизмы аутентификации, что и все утилиты командной строки и SDK для AWS. Таким образом, вы сможете использовать файл $HOME/.aws/credentials, который автоматически генерируется, если запустить AWS CLI с командой configure, или роли IAM, которые можно назначить почти любому ресурсу в AWS. Подробнее об этом — в статье A Comprehensive Guide to Authenticating to AWS on the Command Line по адресу http://bit.ly/2M11muR.

Развертывание одного сервера

Код Terraform пишется на языке конфигурации HashiCorp (HashiCorp Configuration Language, или HCL) и хранится в файлах с расширением .tf28. Это декларативный язык, поэтому ваша задача — описать нужную вам инфраструктуру, а Terraform разберется с тем, как ее создать. Terraform умеет создавать инфраструктуру на разнообразных платформах (или провайдерах в терминологии проекта), включая AWS, Azure, Google Cloud, DigitalOcean и многие другие.

Код Terraform можно писать в практически любом текстовом редакторе. Если поискать, можно найти подсветку синтаксиса Terraform для большинства редакторов (обратите внимание, что вам, возможно, нужно искать по слову HCL, а не Terraform), включая vim, emacs, Sublime Text, Atom, Visual Studio Code и IntelliJ (у последнего даже есть поддержка рефакторинга, поиска вхождений и перехода к объявлению).

Первым делом при использовании Terraform обычно следует выбрать провайдера (одного или несколько), с которым вы хотите работать. Создайте пустую папку и поместите в нее файл с именем main.tf и следующим содержанием:

provider "aws" {

  region = "us-east-2"

}

Это говорит Terraform о том, что в качестве провайдера вы собираетесь использовать AWS и хотите развертывать свою инфраструктуру в регионе us-east-2. Вычислительные центры AWS разбросаны по всему миру и сгруппированы по регионам. Регионы AWS — это отдельные географические области, такие как us-east-2 (Огайо), eu-west-1 (Ирландия) и ap-southeast-2 (Сидней). Внутри каждой области находится несколько изолированных вычислительных центров, известных как зоны доступности: например, us-east-2a, us-east-2b и т. д.

Каждый тип провайдеров поддерживает создание разного вида ресурсов, таких как серверы, базы данных и балансировщики нагрузки. Обобщенный синтаксис создания ресурса в Terraform выглядит так:

resource "_" "" {

   [CONFIG ...]

}

PROVIDER — имя провайдера (предположим, aws), TYPE — тип ресурса, создаваемого в этом провайдере (вроде instance), NAME — идентификатор, с помощью которого вы хотите ссылаться на ресурс в коде Terraform (скажем, my_instance), а CONFIG содержит один или несколько аргументов, предусмотренных специально для этого ресурса.

Например, чтобы развернуть в AWS один (виртуальный) сервер (экземпляр EC2), укажите в файле main.tf ресурс aws_instance:

resource "aws_instance" "example" {

  ami           = "ami-0c55b159cbfafe1f0"

  instance_type = "t2.micro"

}

Ресурс aws_instance поддерживает много разных аргументов, но пока что вам нужны только два из них, которые являются обязательными.

•ami. Образ Amazon Machine Image (AMI), который будет запущен на сервере EC2. В AWS Marketplace (https://aws.amazon.com/marketplace/) можно найти платные и бесплатные образы. Вы также можете создать собственный экземпляр AMI, применяя такие инструменты, как Packer (обсуждение образов и шаблонизации серверов ищите в подразделе «Средства шаблонизации серверов» на с. 31). Код, представленный выше, назначает параметру ami идентификатор AMI Ubuntu 18.04 в us-east-2. Этот образ можно использовать бесплатно.

• instance_type. Тип сервера EC2, который нужно запустить. У каждого типа есть свой объем ресурсов процессора, памяти, дискового пространства и сети. Все доступные варианты перечислены на соответствующей странице по адресу https://amzn.to/2H49EOH. В приведенном выше примере используется тип t2.micro, который имеет один виртуальный процессор с 1 Гбайт памяти и входит в бесплатный тариф AWS.

Используйте документацию!

Перейти на страницу:

Все книги серии Бестселлеры O'Reilly

Искусство управления IT-проектами
Искусство управления IT-проектами

В отличие от множества трудов, посвященных руководству проектами и командами, в этой книге не проповедуются никакие новые учения и не превозносятся великие теории. Скотт Беркун считает залогом успеха практику и разнообразие подходов. В книге описываются основные сложности и проблемные ситуации, возникающие в работе менеджера проекта, даны рекомендации по выходу из них.Издание предназначено не только для лидеров команд и менеджеров высшего звена, но и для программистов, тестеров и других исполнителей конкретных проектных заданий. Также оно будет полезно студентам, изучающим бизнес-менеджмент, проектирование изделий или программную инженерию.Текст нового издания значительно переработан автором с целью добиться большей ясности, кроме того, книга дополнена новым приложением и более чем 120 практическими упражнениями.

Скотт Беркун

Деловая литература
iOS. Приемы программирования
iOS. Приемы программирования

Книга, которую вы держите в руках, представляет собой новый, полностью переписанный сборник приемов программирования по работе с iOS. Он поможет вам справиться с наболевшими проблемами, с которыми приходится сталкиваться при разработке приложений для iPhone, iPad и iPod Touch. Вы быстро освоите всю информацию, необходимую для начала работы с iOS 7 SDK, в частности познакомитесь с решениями для добавления в ваши приложения реалистичной физики или движений — в этом вам помогут API UIKit Dynamics.Вы изучите новые многочисленные способы хранения и защиты данных, отправки и получения уведомлений, улучшения и анимации графики, управления файлами и каталогами, а также рассмотрите многие другие темы. При описании каждого приема программирования приводятся образцы кода, которые вы можете смело использовать.

Вандад Нахавандипур

Программирование, программы, базы данных / Программирование / Книги по IT

Похожие книги